public ActionResult FastResult() { string Resp = Request.QueryString["resp"]; string Sign = Request.QueryString["sign"]; string SignStr = Resp; Resp = LokFuEncode.Base64Decode(Resp, "utf-8"); JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Resp); } catch (Exception Ex) { ViewBag.ErrorMsg = Ex.ToString(); return(View("Error")); } if (json == null) { ViewBag.ErrorMsg = "数据处理出错"; return(View("Error")); } string resultcode = json["resultcode"].ToString(); //交易结果码 string resultmsg = json["resultmsg"].ToString(); //交易结果信息 string queryid = json["queryid"].ToString(); //交易流水号 string txnamt = json["txnamt"].ToString(); //交易金额 string merid = json["merid"].ToString(); //商户号 string orderid = json["orderid"].ToString(); //交易单号 FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == orderid); if (FastOrder == null) { ViewBag.ErrorMsg = "交易不存在!"; return(View("Error")); } if (FastOrder.State != 1) { ViewBag.ErrorMsg = "交易异常!"; return(View("Error")); } FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(o => o.UId == FastOrder.UId && o.PayWay == FastOrder.PayWay); string MerId = FastUserPay.MerId; string MerKey = FastUserPay.MerKey; if (MerId.IsNullOrEmpty() || MerKey.IsNullOrEmpty()) { ViewBag.ErrorMsg = "支付通道配置异常!"; return(View("Error")); } string MD5Str = SignStr + MerKey; string sign = MD5Str.GetMD5(); //================================================ //这里记录日志 PayLog PayLog = new PayLog(); PayLog.PId = (int)FastOrder.PayWay; PayLog.OId = FastOrder.TNum; PayLog.TId = FastOrder.Trade; PayLog.Amount = decimal.Parse(txnamt) / 100; PayLog.Way = "Result"; PayLog.AddTime = DateTime.Now; PayLog.Data = Request.Form.ToString(); PayLog.State = 1; Entity.PayLog.AddObject(PayLog); Entity.SaveChanges(); //================================================ if (Sign != sign) { ViewBag.ErrorMsg = "签名错误!"; return(View("Error")); } if (MerId != merid) { ViewBag.ErrorMsg = "商户号不一置!"; return(View("Error")); } if (resultcode != "0000" && resultcode != "1002" && resultcode != "1003") { ViewBag.ErrorMsg = "支付失败![" + resultcode + "]" + resultmsg; return(View("Error")); } int factmoney = int.Parse(txnamt); if (((int)(FastOrder.Amoney * 100)) != factmoney) { ViewBag.ErrorMsg = "支付金额与交易金额不符!"; return(View("Error")); } FastOrder.Trade = queryid; Entity.SaveChanges(); FastOrder = FastOrder.PaySuccess(Entity); if (FastOrder.PayState == 1) { if (resultcode == "0000") { FastOrder.UserState = 1; FastOrder.UserTime = DateTime.Now; } if (resultcode == "1002") { FastOrder.UserState = 3; FastOrder.UserTime = DateTime.Now; } if (resultcode == "1003") { FastOrder.UserState = 2; FastOrder.UserTime = DateTime.Now; } Entity.SaveChanges(); } ViewBag.FastOrder = FastOrder; return(View("FastSuccess")); }
public void FastNotice() { string Resp = Request.Form["resp"]; string Sign = Request.Form["sign"]; string SignStr = Resp; Resp = LokFuEncode.Base64Decode(Resp, "utf-8"); JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Resp); } catch (Exception Ex) { Response.Write(Ex.ToString()); return; } if (json == null) { Response.Write("Json Null"); return; } string resultcode = json["resultcode"].ToString(); //交易结果码 string resultmsg = json["resultmsg"].ToString(); //交易结果信息 string queryid = json["queryid"].ToString(); //交易流水号 string txnamt = json["txnamt"].ToString(); //交易金额\ string merid = json["merid"].ToString(); //交易金额 string orderid = json["orderid"].ToString(); //交易金额 FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == orderid); if (FastOrder == null) { Response.Write("E1"); return; } if (FastOrder.State != 1) { Response.Write("E2"); return; } if (FastOrder.PayState == 1) { if (resultcode == "0000") { FastOrder.UserState = 1; FastOrder.UserTime = DateTime.Now; } if (resultcode == "1002") { FastOrder.UserState = 3; FastOrder.UserTime = DateTime.Now; } if (resultcode == "1003") { FastOrder.UserState = 2; FastOrder.UserTime = DateTime.Now; } Entity.SaveChanges(); Response.Write("0000"); return; } FastUserPay FastUserPay = Entity.FastUserPay.FirstOrDefault(o => o.UId == FastOrder.UId && o.PayWay == FastOrder.PayWay); string MerId = FastUserPay.MerId; string MerKey = FastUserPay.MerKey; if (MerId.IsNullOrEmpty() || MerKey.IsNullOrEmpty()) { Response.Write("E53"); return; } string MD5Str = SignStr + MerKey; string sign = MD5Str.GetMD5(); //================================================ //这里记录日志 PayLog PayLog = new PayLog(); PayLog.PId = (int)FastOrder.PayWay; PayLog.OId = FastOrder.TNum; PayLog.TId = FastOrder.Trade; PayLog.Amount = decimal.Parse(txnamt) / 100; PayLog.Way = "POST"; PayLog.AddTime = DateTime.Now; PayLog.Data = Request.Form.ToString(); PayLog.State = 1; Entity.PayLog.AddObject(PayLog); Entity.SaveChanges(); //================================================ if (Sign != sign) { Response.Write("E4"); return; } if (MerId != merid) { Response.Write("E5"); return; } //0000 交易成功【已支付,结算到子商户结算卡】 //1001 未支付 //1002 交易处理中【已支付,未结算到结算卡】 //1003交易成功结算失败 //1004 交易失败 if (resultcode != "0000" && resultcode != "1002" && resultcode != "1003") { Response.Write("E6"); return; } int factmoney = int.Parse(txnamt); if (((int)(FastOrder.Amoney * 100)) != factmoney) { Response.Write("E7"); return; } FastOrder.Trade = queryid; Entity.SaveChanges(); FastOrder = FastOrder.PaySuccess(Entity); if (FastOrder.PayState == 1) { if (resultcode == "0000") { FastOrder.UserState = 1; FastOrder.UserTime = DateTime.Now; } if (resultcode == "1002") { FastOrder.UserState = 3; FastOrder.UserTime = DateTime.Now; } if (resultcode == "1003") { FastOrder.UserState = 2; FastOrder.UserTime = DateTime.Now; } Entity.SaveChanges(); } Response.Write("0000"); }
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(); }
public void FastNotice() { string Resp = Request.Form["resp"]; string Sign = Request.Form["sign"]; string SignStr = Resp; Resp = LokFuEncode.Base64Decode(Resp, "utf-8"); JObject json = new JObject(); try { json = (JObject)JsonConvert.DeserializeObject(Resp); } catch (Exception Ex) { Response.Write(Ex.ToString()); return; } if (json == null) { Response.Write("Json Null"); return; } string resultcode = json["resultcode"].ToString(); //交易结果码 string resultmsg = json["resultmsg"].ToString(); //交易结果信息 string queryid = json["queryid"].ToString(); //交易流水号 string txnamt = json["txnamt"].ToString(); //交易金额\ string merid = json["merid"].ToString(); //交易金额 string orderid = json["orderid"].ToString(); //交易金额 FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == orderid); if (FastOrder == null) { Response.Write("E1"); return; } if (FastOrder.PayState == 1) { Response.Write("P1"); return; } FastPayWay FastPayWay = Entity.FastPayWay.FirstOrDefault(n => n.Id == FastOrder.PayWay); if (FastPayWay == null) { Response.Write("E3"); return; } if (FastPayWay.State != 1) { Response.Write("E4"); return; } if (FastPayWay.DllName != "HFPay") { Response.Write("E5"); return; } string[] PayConfigArr = FastPayWay.QueryArray.Split(','); if (PayConfigArr.Length != 3) { Response.Write("E53"); return; } string MerId = PayConfigArr[0]; string MerKey = PayConfigArr[1]; string MD5Str = SignStr + MerKey; string sign = MD5Str.GetMD5(); //================================================ //这里记录日志 PayLog PayLog = new PayLog(); PayLog.PId = (int)FastOrder.PayWay; PayLog.OId = FastOrder.TNum; PayLog.TId = FastOrder.Trade; PayLog.Amount = decimal.Parse(txnamt) / 100; PayLog.Way = "POST"; PayLog.AddTime = DateTime.Now; PayLog.Data = Request.Form.ToString(); PayLog.State = 1; Entity.PayLog.AddObject(PayLog); Entity.SaveChanges(); //================================================ if (Sign != sign) { Response.Write("E4"); return; } if (MerId != merid) { Response.Write("E5"); return; } if (resultcode != "0000" && resultcode != "1002") { Response.Write("E6"); return; } int factmoney = int.Parse(txnamt); if (((int)(FastOrder.Amoney * 100)) != factmoney) { Response.Write("E7"); return; } FastOrder.Trade = queryid; Entity.SaveChanges(); FastOrder = FastOrder.PaySuccess(Entity); ViewBag.FastOrder = FastOrder; Response.Write("0000"); }
public string PayState(string code) { string TNum = LokFuEncode.Base64Decode(code); FastOrder FastOrder = Entity.FastOrder.FirstOrDefault(n => n.TNum == TNum); if (FastOrder == null) { return("E1"); } if (FastOrder.PayState == 1) { return("S"); } if (FastOrder.State != 1) { return("E0"); } FastPayWay FastPayWay = Entity.FastPayWay.FirstOrNew(n => n.Id == FastOrder.PayWay); if (FastPayWay == null) { return("E2"); } 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 (FastOrder.PayState == 1) { return("S"); } if (FastOrder.State == 0) { return("E100"); } return("G"); }