//api.itorm.com/itapi/server/receiveApiNotice?requestId=100000029&amount=100 public string receiveApiNotice() { string result = "fail"; bool flag = false; string requestId = TQuery.GetInput("requestId"); noticeReceiveApiModel model = new noticeReceiveApiModel(); model.code = "0000"; model.message = "支付成功"; model.amount = TQuery.GetDecimal("amount", 0m).ToString("F2"); model.fee = (TQuery.GetDecimal("amount", 0m) * 0.002m).ToString("F2"); model.externalld = DateTime.Now.ToString("yyyyMMddHHmmssfff"); model.payerPhone = "15110167786"; model.payerName = "陈鑫"; model.payTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); model.requestId = requestId; model.src = "B"; model.status = "SUCCESS"; model.lastNo = "0239"; model.bankCode = "icbc"; model.busiType = "COMMON"; model.customerNumber = "123456"; //返回后日志记录 Logs.WriteLog("回调参数:" + JsonConvert.SerializeObject(model), "d:\\Log\\Yeepay", "ReceiveApi"); yeepayLogParasDao.Init(Convert.ToInt32(requestId), JsonConvert.SerializeObject(model), 2); //更新 yeepayLogDao.UpdateState(Convert.ToInt32(requestId), model.code, model.message, (model.backState == 0 && model.status == "SUCCESS") ? 10 : -1); if (model.backState == 0 && model.status == "SUCCESS")//成功 { var yeepayLog = yeepayLogDao.Single(Convert.ToInt32(requestId)); var payRecord = payRecordDao.Single(yeepayLog.KeyId); if (payRecord.State == 1) { result = "SUCCESS"; return(result); } //修改订单信息 payRecord.PayTime = Convert.ToDateTime(model.payTime); payRecord.State = 1; payRecord.PayerPhone = model.payerPhone; payRecord.PayerName = model.payerName; payRecord.LastNo = model.lastNo; payRecord.Message = model.message; payRecord.BankCode = model.bankCode; payRecord.Fee = Convert.ToDecimal(model.fee); payRecord.Src = model.src; flag = payRecordDao.Update(payRecord); //添加支付银行卡 int ubkCnt = userBankCardDao.Count(" UserId=@UserId and TypeId=0 and State=1 and BankCard=@BankCard ", new { payRecord.UserId, payRecord.BankCard }); if (ubkCnt == 0) { UserBankCard ubk = new UserBankCard(); ubk.BankCard = payRecord.BankCard; ubk.TypeId = 1; ubk.State = 1; ubk.UserId = payRecord.UserId; ubk.Mobile = model.payerPhone; ubk.IP = ITOrm.Utility.Client.Ip.GetClientIp(); ubk.Platform = 1; ubk.BankCode = model.bankCode; userBankCardDao.Insert(ubk); } if (flag) { result = "SUCCESS"; } } return(result); }
//易宝收款回调 public string receiveApi() { string[] paramtersKey = System.Web.HttpContext.Current.Request.Form.AllKeys; var sortedParamtersKey = from s in paramtersKey orderby s ascending select s; StringBuilder str = new StringBuilder(); str.Append("{"); foreach (string key in sortedParamtersKey) { str.AppendFormat("\"{0}\":\"{1}\",", key, System.Web.HttpContext.Current.Request.Form[key].Trim()); } if (str.Length > 0) { str.Remove(str.Length - 1, 1);//移除最后一个逗号 } str.Append("}"); //返回后日志记录 Logs.WriteLog("页面首次记录:" + str.ToString(), "d:\\Log\\Yeepay", "ReceiveApiNotice"); noticeReceiveApiModel model = new noticeReceiveApiModel(); model.code = TQuery.GetString("code"); model.message = TQuery.GetString("message"); model.amount = TQuery.GetString("amount"); model.fee = TQuery.GetString("fee"); model.externalld = TQuery.GetString("externalld"); model.payerPhone = TQuery.GetString("payerPhone"); model.payerName = TQuery.GetString("payerName"); model.payTime = TQuery.GetString("payTime"); model.requestId = TQuery.GetString("requestId"); model.src = TQuery.GetString("src"); model.status = TQuery.GetString("status"); model.lastNo = TQuery.GetString("lastNo"); model.bankCode = TQuery.GetString("bankCode"); model.busiType = TQuery.GetString("busiType"); model.customerNumber = TQuery.GetString("customerNumber"); model.createTime = TQuery.GetString("createTime"); model.hmac = TQuery.GetString("hmac"); //string json = "{\"requestId\":\"100000091\",\"customerNumber\":\"10019321635\",\"externalld\":\"661461948596449280\",\"createTime\":\"2018-02-24 15:49:19\",\"payTime\":\"2018-02-24 16:17:55\",\"amount\":\"100\",\"fee\":\"0.43\",\"status\":\"SUCCESS\",\"busiType\":\"COMMON\",\"bankCode\":\"CCB\",\"payerName\":\"刘*敏\",\"payerPhone\":\"185****6235\",\"lastNo\":\"625362******0286\",\"src\":\"B\",\"mainCustomerNumber\":null,\"hmac\":\"54a4145327a2db38e2ab7f0146eb2cea\",\"code\":\"0000\",\"message\":\"成功\",\"backState\":0}"; //model = JsonConvert.DeserializeObject<noticeReceiveApiModel>(json); lock (lockReceiveApi) { string result = "fail"; bool flag = false; //返回后日志记录 Logs.WriteLog("回调参数:" + JsonConvert.SerializeObject(model), "d:\\Log\\Yeepay", "ReceiveApiNotice"); yeepayLogParasDao.Init(Convert.ToInt32(model.requestId), JsonConvert.SerializeObject(model), 2); //签名验证 StringBuilder sb = new StringBuilder(); sb.Append(model.code); sb.Append(model.message); sb.Append(model.requestId); sb.Append(model.customerNumber); sb.Append(model.externalld); sb.Append(model.createTime); sb.Append(model.payTime); sb.Append(model.amount); sb.Append(model.fee); sb.Append(model.status); sb.Append(model.busiType); sb.Append(model.bankCode); sb.Append(model.payerName); sb.Append(model.payerPhone); sb.Append(model.lastNo); sb.Append(model.src); string sign = ITOrm.Utility.Encryption.EncryptionHelper.HMACMD5(ITOrm.Payment.Yeepay.YeepayDepository.YeepayHmacKey, sb.ToString()); if (model.hmac != sign) { Logs.WriteLog($"签名比对失败:mac:{model.hmac},sign:{sign}", "d:\\Log\\Yeepay", "ReceiveApiNotice"); return(result); } //更新 yeepayLogDao.UpdateState(Convert.ToInt32(model.requestId), model.code, model.message, (model.backState == 0 && model.status == "SUCCESS") ? 10 : -1); if (model.backState == 0 && model.status == "SUCCESS")//成功 { var yeepayLog = yeepayLogDao.Single(Convert.ToInt32(model.requestId)); var payRecord = payRecordDao.Single(yeepayLog.KeyId); if (payRecord.State == 10) { result = "SUCCESS"; Logs.WriteLog($"重复处理:{result},payRecord.State == 10", "d:\\Log\\Yeepay", "ReceiveApiNotice"); return(result); } //修改订单信息 payRecord.PayTime = Convert.ToDateTime(model.payTime); payRecord.State = 10; //payRecord.PayerPhone = model.payerPhone; //payRecord.PayerName = model.payerName; payRecord.LastNo = model.lastNo; payRecord.Message = model.message; payRecord.Fee = Convert.ToDecimal(model.fee); payRecord.Src = model.src; flag = payRecordDao.Update(payRecord); Logs.WriteLog($"修改订单信息:flag={flag}", "d:\\Log\\Yeepay", "ReceiveApiNotice"); ////添加支付银行卡 //int ubkCnt = userBankCardDao.Count(" UserId=@UserId and TypeId=1 and State=1 and BankCard=@BankCard ", new { payRecord.UserId, payRecord.BankCard }); //Logs.WriteLog($"支付银行卡个数:ubkCnt:{ubkCnt}", "d:\\Log\\Yeepay", "ReceiveApiNotice"); //if (ubkCnt == 0) //{ // UserBankCard ubk = new UserBankCard(); // ubk.BankCard = payRecord.BankCard; // ubk.TypeId = 1; // ubk.State = 1; // ubk.UserId = payRecord.UserId; // ubk.Mobile = model.payerPhone; // ubk.IP = ITOrm.Utility.Client.Ip.GetClientIp(); // ubk.Platform = 1; // ubk.BankCode = model.bankCode; // int ubkId= userBankCardDao.Insert(ubk); // Logs.WriteLog($"支付银行卡添加Id:ubkId:{ubkId}", "d:\\Log\\Yeepay", "ReceiveApiNotice"); //} if (flag) { result = "SUCCESS"; } } Logs.WriteLog($"返回结果:{result}", "d:\\Log\\Yeepay", "ReceiveApiNotice"); return(result); } }