public void Execute(IJobExecutionContext context) { string JobName = "FastQuery"; string CanRun = ConfigurationManager.AppSettings["Run" + JobName].ToString(); if (CanRun == "true") { if (!IsRun) { LokFuEntity Entity = new LokFuEntity(); IsRun = true; try { Log.Write(JobName + "任务开始执行!"); //------------------------------------------------------- #region 任务主体 //查询所有已支付但未代付订单 DateTime STime = DateTime.Now.AddDays(-1); DateTime ETime = DateTime.Now.AddSeconds(-30); IList <FastOrder> List = Entity.FastOrder.Where(n => n.State == 1 && n.PayState == 1 && n.UserState == 3 && n.UserTime <ETime && n.UserTime> STime).ToList(); //UserState 0未付 1已付 2失败 3结果未明 4付起中 foreach (var p in List) { FastPayWay FastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == p.PayWay && n.State == 1); FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.PayWay == p.PayWay && n.UId == p.UId); if (FastPayWay != null) { string[] PayConfigArr = FastPayWay.QueryArray.Split(','); if (FastPayWay.DllName == "HFPay") { #region 查代付结果 if (PayConfigArr.Length == 3) { string HF_Url = "https://api.zhifujiekou.com/api/qcashquery"; string MerId = PayConfigArr[0]; string MerKey = PayConfigArr[1]; string orderId = p.TNum;//商户流水号 string PostJson = "{\"merid\":\"" + MerId + "\",\"orderid\":\"" + orderId + "\"}"; string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8"); string Sign = (DataBase64 + MerKey).GetMD5(); DataBase64 = HttpUtility.UrlEncode(DataBase64); string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign); string Ret = Utils.PostRequest(HF_Url, PostData, "utf-8"); JObject JS = new JObject(); try { JS = (JObject)JsonConvert.DeserializeObject(Ret); } catch (Exception) { JS = null; } if (JS != null) { if (JS["resp"] != null) { string resp = JS["resp"].ToString(); Ret = LokFuEncode.Base64Decode(resp, "utf-8"); try { JS = (JObject)JsonConvert.DeserializeObject(Ret); } catch (Exception) { JS = null; } if (JS != null) { string respcode = JS["respcode"].ToString(); if (respcode == "00") { string resultcode = JS["resultcode"].ToString(); if (resultcode == "0000") { p.UserState = 1; } else if (resultcode == "2002" || resultcode == "2003") { p.UserState = 2; } else { } Entity.SaveChanges(); } } } } //================================================ PayLog PayLog = new PayLog(); PayLog.PId = FastPayWay.Id; PayLog.OId = p.TNum; PayLog.TId = ""; PayLog.Amount = 0; PayLog.Way = "FASTDFQ"; PayLog.AddTime = DateTime.Now; PayLog.Data = Ret; PayLog.State = 1; Entity.PayLog.AddObject(PayLog); //================================================ Entity.SaveChanges(); } #endregion } if (FastPayWay.DllName == "HFJSPay") { #region 结算系统 //不需要 fastordersqueryModel fastordersqueryModel = new fastordersqueryModel() { merid = FastUserPay.MerId, orderid = "", queryid = p.TNum }; fastordersqueryResult fastordersqueryResult = HFJSTools.fastordersquery(fastordersqueryModel, FastUserPay.MerKey); //================================================ //记录通知信息 PayLog PayLog = new PayLog(); PayLog.PId = p.PayWay.Value; PayLog.OId = p.TNum; PayLog.TId = fastordersqueryResult.queryid; PayLog.Amount = p.Amoney; PayLog.Way = "FASTDFQ"; PayLog.AddTime = DateTime.Now; PayLog.Data = HFJSTools.MyObjectToJson(fastordersqueryResult); PayLog.State = 1; Entity.PayLog.AddObject(PayLog); Entity.SaveChanges(); //================================================ if (fastordersqueryResult.respcode == "00") { if (fastordersqueryResult.resultcode == "0000") { p.UserState = 1; Entity.SaveChanges(); } if (fastordersqueryResult.resultcode == "1003") { p.UserState = 2; Entity.SaveChanges(); } } else { string resp_desc = fastordersqueryResult.respmsg; Utils.WriteLog("HFJS[Query][" + p.TNum + "]:" + resp_desc, "JobHFJS"); } #endregion } } Log.WriteLog("查询代付[" + p.TNum + "]!", JobName); } #endregion //------------------------------------------------------- Log.Write(JobName + "任务执行结束![共计" + List.Count + "条]"); } catch (Exception Ex) { Log.Write(JobName + "任务执行过程出错!", Ex); } IsRun = false; } else { Log.Write(JobName + "任务还在执行中!"); } } }
public void Post() { string Data = DataObj.GetData(); if (Data.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Data); } catch (Exception Ex) { Log.Write("[FastOrderQueryController]:", "【Data】" + Data, Ex); json = null; } if (json == null) { DataObj.OutError("1000"); return; } FastOrder InFastOrder = new FastOrder(); InFastOrder = JsonToObject.ConvertJsonToModel(InFastOrder, json); if (InFastOrder.TNum.IsNullOrEmpty() || InFastOrder.Token.IsNullOrEmpty()) { DataObj.OutError("1000"); return; } Users baseUsers = Entity.Users.FirstOrDefault(n => n.Token == InFastOrder.Token); if (baseUsers == null)//用户令牌不存在 { DataObj.OutError("2004"); return; } if (baseUsers.State != 1)//用户被锁定 { DataObj.OutError("2003"); return; } if (baseUsers.CardStae != 2)//未实名认证 { DataObj.OutError("2006"); return; } FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == InFastOrder.TNum && n.UId == baseUsers.Id); if (FastOrder == null) { DataObj.OutError("1000"); return; } if (FastOrder.State == 1 && FastOrder.PayState == 0) { FastPayWay FastPayWay = Entity.FastPayWay.FirstOrNew(n => n.Id == FastOrder.PayWay); if (FastPayWay == null) { DataObj.OutError("2079"); return; } string[] PayConfigArr = FastPayWay.QueryArray.Split(new char[] { ',' });//接口信息 if (FastPayWay.DllName == "HFPay") { #region 结算中心 if (PayConfigArr.Length == 3) { string HF_Url = "https://api.zhifujiekou.com/api/query"; string MerId = PayConfigArr[0]; string MerKey = PayConfigArr[1]; string orderId = FastOrder.TNum;//商户流水号 string PostJson = "{\"merid\":\"" + MerId + "\",\"orderid\":\"" + orderId + "\"}"; string DataBase64 = LokFuEncode.Base64Encode(PostJson, "utf-8"); string Sign = (DataBase64 + MerKey).GetMD5(); DataBase64 = HttpUtility.UrlEncode(DataBase64); string PostData = string.Format("req={0}&sign={1}", DataBase64, Sign); string Ret = Utils.PostRequest(HF_Url, PostData, "utf-8"); JObject JS = new JObject(); try { JS = (JObject)JsonConvert.DeserializeObject(Ret); } catch (Exception) { JS = null; } if (JS != null) { if (JS["resp"] != null) { string resp = JS["resp"].ToString(); Ret = LokFuEncode.Base64Decode(resp, "utf-8"); try { JS = (JObject)JsonConvert.DeserializeObject(Ret); } catch (Exception) { JS = null; } if (JS != null) { string respcode = JS["respcode"].ToString(); if (respcode == "00") { string resultcode = JS["resultcode"].ToString(); if (resultcode == "0000" || resultcode == "1002" || resultcode == "1004") { string queryid = JS["queryid"].ToString(); FastOrder.Trade = queryid; Entity.SaveChanges(); string txnamt = JS["txnamt"].ToString(); int factmoney = int.Parse(txnamt); if (((int)(FastOrder.Amoney * 100)) == factmoney) { FastOrder = FastOrder.PaySuccess(Entity); } } } //================================================ //这里记录日志 PayLog PayLog = new PayLog(); PayLog.PId = (int)FastOrder.PayWay; PayLog.OId = FastOrder.TNum; PayLog.TId = FastOrder.Trade; PayLog.Amount = FastOrder.Amoney; PayLog.Way = "Query"; PayLog.AddTime = DateTime.Now; PayLog.Data = Ret; PayLog.State = 1; Entity.PayLog.AddObject(PayLog); Entity.SaveChanges(); //================================================ } } } } #endregion } if (FastPayWay.DllName == "HFJSPay") { #region 结算中心 if (PayConfigArr.Length == 3) { FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(n => n.PayWay == FastOrder.PayWay && n.UId == baseUsers.Id && n.MerState == 1); fastordersqueryModel fastordersqueryModel = new fastordersqueryModel() { merid = FastUserPay.MerId, orderid = "", queryid = FastOrder.TNum }; fastordersqueryResult fastordersqueryResult = HFJSTools.fastordersquery(fastordersqueryModel, FastUserPay.MerKey); //================================================ //记录通知信息 PayLog PayLog = new PayLog(); PayLog.PId = FastOrder.PayWay.Value; PayLog.OId = FastOrder.TNum; PayLog.TId = fastordersqueryResult.queryid; PayLog.Amount = FastOrder.Amoney; PayLog.Way = "Query"; PayLog.AddTime = DateTime.Now; PayLog.Data = HFJSTools.MyObjectToJson(fastordersqueryResult); PayLog.State = 1; Entity.PayLog.AddObject(PayLog); Entity.SaveChanges(); //================================================ if (fastordersqueryResult.respcode == "00") { if (fastordersqueryResult.resultcode == "0000" || fastordersqueryResult.resultcode == "1002") { FastOrder.Trade = fastordersqueryResult.queryid; Entity.SaveChanges(); FastOrder = FastOrder.PaySuccess(Entity); if (FastOrder.PayState == 1) { if (fastordersqueryResult.resultcode == "0000") { FastOrder.UserState = 1; } if (fastordersqueryResult.resultcode == "1002") { FastOrder.UserState = 3; } FastOrder.UserTime = DateTime.Now; Entity.SaveChanges(); } } else if (fastordersqueryResult.resultcode == "1004") { FastOrder.State = 0; Entity.SaveChanges(); } else { } Entity.SaveChanges(); } else { string resp_desc = fastordersqueryResult.respmsg; Utils.WriteLog("HFJS[Query][" + FastOrder.TNum + "]:" + resp_desc, "JobHFJS"); } } #endregion } } if (FastOrder.State == 1) { if (FastOrder.PayState == 1) { if (FastOrder.UserState == 1) { FastOrder.State = 3; } else { FastOrder.State = 2; } } else { FastOrder.State = 1; } } else { FastOrder.State = 0; } FastOrder.Cols = "TNum,PayId,Amoney,Poundage,State"; DataObj.Data = FastOrder.OutJson(); DataObj.Code = "0000"; DataObj.OutString(); }