public static PayResultModel GetWxPayResult(string msg) { msg = msg.Replace("<![CDATA[", "").Replace("]]>", ""); var model = new PayResultModel(); XmlDocument doc = new XmlDocument(); doc.LoadXml(msg); XmlNodeList list = doc.GetElementsByTagName("xml"); XmlNode xn = list[0]; model.return_code = xn.SelectSingleNode("//return_code").InnerText; //SUCCESS/FAIL 此字段是通信标识,非交易标识,交易是否成功需要查看result_code来判断 model.return_msg = xn.SelectSingleNode("//return_msg").InnerText; //返回信息,如非空,为错误原因 if (model.return_code.Contains("SUCCESS")) { model.result_code = xn.SelectSingleNode("//result_code").InnerText; //业务结果 SUCCESS/FAIL model.mch_appid = xn.SelectSingleNode("//mch_appid").InnerText; //商户appid model.mchid = xn.SelectSingleNode("//mchid").InnerText; //商户号 if (model.result_code.Contains("SUCCESS")) { model.partner_trade_no = xn.SelectSingleNode("//partner_trade_no").InnerText; //商户订单号 model.payment_no = xn.SelectSingleNode("//payment_no").InnerText; //微信订单号 model.payment_time = xn.SelectSingleNode("//payment_time").InnerText; //微信支付成功时间 model.nonce_str = xn.SelectSingleNode("//nonce_str").InnerText; //随机字符串,不长于32位 //model.device_info = xn.SelectSingleNode("//device_info").InnerText; //微信支付分配的终端设备号 } else { model.err_code = xn.SelectSingleNode("//err_code").InnerText; //错误代码 model.err_code_des = xn.SelectSingleNode("//err_code_des").InnerText; //错误代码描述 } } return(model); }
/// <summary> /// 生成微信二维码订单 /// 窦海超 /// 2015年5月13日 14:57:38 /// </summary> /// <param name="orderNo">订单号</param> /// <param name="WxCodeUrl">微信地址</param> /// <param name="TotalPrice">总金额,注意:微信要乘以100=最后支付的金额,这里传值前不要乘以100</param> /// <returns></returns> public ResultModel <PayResultModel> CreateWxPayOrder(string orderNo, decimal totalPrice, string wxCodeUrl) { //支付方式-主订单ID-子订单ID PayResultModel resultModel = new PayResultModel(); string code_url = wxCodeUrl; if (string.IsNullOrEmpty(code_url))//先查一下库是否存在二维码地址,不存在去微信生成 { string wx_nonceStr = RequestHandler.getNoncestr(); WXpayService wxpay = new WXpayService("127.0.0.1", orderNo, "e代送", wx_nonceStr, (Convert.ToInt32(totalPrice * 100)).ToString());//传给微信的金额 code_url = wxpay.CreateNativeApi(); if (string.IsNullOrEmpty(code_url)) { return(ResultModel <PayResultModel> .Conclude(AliPayStatus.fail)); } int productId = ParseHelper.ToInt(orderNo.Split('_')[0]); int orderId = ParseHelper.ToInt(orderNo.Split('_')[1]); int childId = ParseHelper.ToInt(orderNo.Split('_')[2]); if (productId == ProductEnum.OrderChildPay.GetHashCode()) { //如果是子订单支付 orderChildDao.UpdateWxCodeUrl(orderId, childId, code_url);//把获取到的支付宝地址更新到子订单下 } } resultModel.aliQRCode = code_url; //微信地址 resultModel.orderNo = orderNo; //订单号 resultModel.payAmount = totalPrice; //总金额,没乘以100的值 resultModel.payType = PayTypeEnum.WeiXin.GetHashCode(); //微信 resultModel.notifyUrl = ETS.Config.WXNotifyUrl; //回调地址 return(ResultModel <PayResultModel> .Conclude(AliPayStatus.success, resultModel)); }
/// <summary> /// 生成支付宝二维码 /// 窦海超 /// 2015年5月12日 14:36:37 /// </summary> /// <param name="orderNo">订单号</param> /// <param name="payAmount">支付金额</param> /// <param name="orderId">订单ID,用于查询商家信息用</param> /// <returns></returns> private ResultModel <PayResultModel> CreateAliPayOrder(string orderNo, decimal payAmount, int orderId, int payStyle) { #region 通过订单ID,用于查询商家信息用 BusinessDM businessModel = new BusinessDao().GetByOrderId(orderId); string businessName = string.Empty; if (businessModel == null || string.IsNullOrEmpty(businessModel.Name)) { businessName = "e代送收款"; } else { businessName = businessModel.Name; } #endregion PayResultModel resultModel = new PayResultModel(); string qrcodeUrl = string.Empty; if (payStyle == 1)//用户扫二维码 { //qrcodeUrl = alipayIntegrate.GetQRCodeUrl(orderNo, payAmount, businessName); AliModel aliModel = new AliModel() { body = string.Empty, orderNo = orderNo, payMoney = payAmount, productName = businessName }; qrcodeUrl = new AliCallBack().GetOrder(aliModel); if (string.IsNullOrEmpty(qrcodeUrl)) { return(ResultModel <PayResultModel> .Conclude(AliPayStatus.fail)); } } resultModel.aliQRCode = qrcodeUrl; resultModel.orderNo = orderNo; resultModel.payAmount = payAmount; resultModel.payType = PayTypeEnum.ZhiFuBao.GetHashCode(); resultModel.notifyUrl = ETS.Config.NotifyUrl; return(ResultModel <PayResultModel> .Conclude(AliPayStatus.success, resultModel)); }
public APIResponse PayResultNotify(PayResultModel model) { IResult result = BizFactory.Pay.ResultNotify(model.UserId, ResultNotifyParty.App, model); return(new APIResponse(result)); }
public async Task <MessageModel <PayReturnResultModel> > Pay(PayNeedModel payModel) { _logger.LogInformation("支付开始"); MessageModel <PayReturnResultModel> messageModel = new MessageModel <PayReturnResultModel>(); messageModel.response = new PayReturnResultModel(); string url = string.Empty; string param = string.Empty; string returnData = string.Empty; try { _logger.LogInformation($"原始GET参数->{_httpContextAccessor.HttpContext.Request.QueryString}"); //被扫支付 string host = "https://ibsbjstar.ccb.com.cn/CCBIS/B2CMainPlat_00_BEPAY?"; ////商户信息 //string merInfo = "MERCHANTID=105910100190000&POSID=000000000&BRANCHID=610000000"; ////获取柜台完整公钥 //string pubKey = "30819d300d06092a864886f70d010101050003818b0030818702818100a32fb2d51dda418f65ca456431bd2f4173e41a82bb75c2338a6f649f8e9216204838d42e2a028c79cee19144a72b5b46fe6a498367bf4143f959e4f73c9c4f499f68831f8663d6b946ae9fa31c74c9332bebf3cba1a98481533a37ffad944823bd46c305ec560648f1b6bcc64d54d32e213926b26cd10d342f2c61ff5ac2d78b020111"; ////加密原串 //string param = merInfo + "&MERFLAG=1&TERMNO1=&TERMNO2=&ORDERID=937857156" + // "&QRCODE=134737690209713400&AMOUNT=0.01&TXCODE=PAY100&PROINFO=&REMARK1=&REMARK2=&SMERID=&SMERNAME=&SMERTYPEID=" + // "&SMERTYPE=&TRADECODE=&TRADENAME=&SMEPROTYPE=&PRONAME="; Dictionary <string, string> dic = new Dictionary <string, string>(); //支付信息 dic.Add("MERCHANTID", StaticPayInfo.MERCHANTID); // => self::MERCHANTID, // 商户号 dic.Add("POSID", StaticPayInfo.POSID); // => self::POSID, // 柜台号 dic.Add("BRANCHID", StaticPayInfo.BRANCHID); // => self::BRANCHID, // 分行号 dic.Add("TXCODE", "PAY100"); // => 'PAY100', // 交易码 dic.Add("MERFLAG", "1"); // => '', // 商户类型 1线上 2线下 dic.Add("ORDERID", payModel.ORDERID); //payModel.ORDERID);// => '', // 订单号 dic.Add("QRCODE", payModel.QRCODE); // => '', // 码信息(一维码、二维码) dic.Add("AMOUNT", payModel.AMOUNT); // => '0.01', // 订单金额,单位:元 dic.Add("PROINFO", payModel.PROINFO); // => '', // 商品名称 dic.Add("REMARK1", payModel.REMARK1); // => '', // 备注 1 dic.Add("REMARK2", payModel.REMARK2); // => '', // 备注 2 //dic.Add("TERMNO1", "");// => '', // 终端编号 1 //dic.Add("TERMNO2", "");// => '', // 终端编号 2 //dic.Add("GROUPMCH", "");// => '', // 集团商户信息 //dic.Add("FZINFO1", "");// => '', // 分账信息一 //dic.Add("FZINFO2", "");// => '', // 分账信息二 //dic.Add("SUB_APPID", "");// => '', // 子商户公众账号 ID //dic.Add("RETURN_FIELD", "");// => '', // 返回信息位图 //dic.Add("USERPARAM", "");// => '', // 实名支付 //dic.Add("detail", "");// => '', // 商品详情 //dic.Add("goods_tag", "");// => '', // 订单优惠标记 //商户信息 Dictionary <string, string> dicInfo = new Dictionary <string, string>(); dicInfo.Add("MERCHANTID", StaticPayInfo.MERCHANTID); // => self::MERCHANTID, // 商户号 dicInfo.Add("POSID", StaticPayInfo.POSID); // => self::POSID, // 柜台号 dicInfo.Add("BRANCHID", StaticPayInfo.BRANCHID); // => self::BRANCHID, // 分行号 var Info = StringHelper.GetPars(dicInfo); //获取拼接请求串 param = StringHelper.GetPars(dic); //加密 var paramEncryption = new CCBPayUtil().makeCCBParam(param, StaticPayInfo.pubKey); //拼接请求串 url = host + Info + "&ccbParam=" + paramEncryption; //请求 _logger.LogInformation($"请求地址->{url}"); _logger.LogInformation($"请求参数->{param}"); PayResultModel payResult; try { returnData = await GetNetData.PostAsync(url); //转换数据 try { payResult = JsonHelper.ParseFormByJson <PayResultModel>(returnData); } catch { payResult = new PayResultModel { RESULT = "N", ERRMSG = "参数错误", ORDERID = payModel.ORDERID, AMOUNT = payModel.AMOUNT }; returnData = StringHelper.GetCusLine(returnData, 15); } _logger.LogInformation($"响应数据->{returnData}"); } catch (Exception ex) { _logger.LogInformation($"异常信息:{ex.Message}"); _logger.LogInformation($"异常堆栈:{ex.StackTrace}"); messageModel = await PayCheck(payModel, 1); return(messageModel); } switch (payResult.RESULT) { case "Y": Dictionary <string, string> dicCheckPars = new Dictionary <string, string>(); dicCheckPars.Add("RESULT", payResult.RESULT); dicCheckPars.Add("ORDERID", payResult.ORDERID); dicCheckPars.Add("AMOUNT", payResult.AMOUNT); dicCheckPars.Add("WAITTIME", payResult.WAITTIME); dicCheckPars.Add("TRACEID", payResult.TRACEID); string strCheckPars = StringHelper.GetPars(dicCheckPars); if (NotifyCheck(strCheckPars, payResult.SIGN, StaticPayInfo.pubKey)) { messageModel.success = true; messageModel.msg = "支付成功"; } else { messageModel.success = false; messageModel.msg = "签名失败"; } break; case "N": messageModel.success = false; messageModel.msg = "支付失败"; break; case "U": case "Q": int waittime = payResult.WAITTIME.ObjToInt(); if (waittime <= 0) { waittime = 5; //如果需要等待默认等待5秒后再次查询 } Thread.Sleep(waittime * 1000); //轮询查询 messageModel = await PayCheck(payModel, 1); break; default: messageModel.success = false; messageModel.msg = "支付失败"; break; } messageModel.response.ORDERID = payResult.ORDERID; messageModel.response.ERRCODE = payResult.ERRCODE; messageModel.response.ERRMSG = payResult.ERRMSG; messageModel.response.TRACEID = payResult.TRACEID; messageModel.response.AMOUNT = payResult.AMOUNT; messageModel.response.QRCODETYPE = payResult.QRCODETYPE; } catch (Exception ex) { messageModel.success = false; messageModel.msg = "服务错误"; messageModel.response.ERRMSG = ex.Message; _logger.LogInformation($"异常信息:{ex.Message}"); _logger.LogInformation($"异常堆栈:{ex.StackTrace}"); } finally { _logger.LogInformation($"返回数据->{JsonHelper.GetJSON<MessageModel<PayReturnResultModel>>(messageModel)}"); _logger.LogInformation("支付结束"); } return(messageModel); }
public async Task <MessageModel <PayReturnResultModel> > PayCheck(PayNeedModel payModel, int times) { _logger.LogInformation("轮序开始"); MessageModel <PayReturnResultModel> messageModel = new MessageModel <PayReturnResultModel>(); messageModel.response = new PayReturnResultModel(); string url = string.Empty; string param = string.Empty; string returnData = string.Empty; try { string host = "https://ibsbjstar.ccb.com.cn/CCBIS/B2CMainPlat_00_BEPAY?"; Dictionary <string, string> dic = new Dictionary <string, string>(); dic.Add("MERCHANTID", StaticPayInfo.MERCHANTID); // => self::MERCHANTID, // 商户号 dic.Add("POSID", StaticPayInfo.POSID); // => self::POSID, // 柜台号 dic.Add("BRANCHID", StaticPayInfo.BRANCHID); // => self::BRANCHID, // 分行号 dic.Add("TXCODE", "PAY101"); // => 'PAY100', // 交易码 dic.Add("QRYTIME", times.ToString()); // => '', // 查询此时(每次加1) dic.Add("MERFLAG", "1"); // => '', // 商户类型 dic.Add("ORDERID", payModel.ORDERID); // => '', // 订单号 dic.Add("QRCODE", payModel.QRCODE); // => '', // 码信息(一维码、二维码) //dic.Add("GROUPMCH", "");// => '', // 集团商户信息 //dic.Add("QRCODETYPE", "");// => '', // 支付类型1:龙支付 2:微信 3:支付宝 4:银联 //dic.Add("TERMNO1", "");// => '', // 终端编号 1 //dic.Add("TERMNO2", "");// => '', // 终端编号 2 //dic.Add("AMOUNT", "");// => '0.01', // 订单金额,单位:元 //dic.Add("PROINFO", "");// => '', // 商品名称 //dic.Add("REMARK1", "");// => '', // 备注 1 //dic.Add("REMARK2", "");// => '', // 备注 2 //dic.Add("FZINFO1", "");// => '', // 分账信息一 //dic.Add("FZINFO2", "");// => '', // 分账信息二 //dic.Add("SUB_APPID", "");// => '', // 子商户公众账号 ID //dic.Add("RETURN_FIELD", "");// => '', // 返回信息位图 //dic.Add("USERPARAM", "");// => '', // 实名支付 //dic.Add("detail", "");// => '', // 商品详情 //dic.Add("goods_tag", "");// => '', // 订单优惠标记 //商户信息 Dictionary <string, string> dicInfo = new Dictionary <string, string>(); dicInfo.Add("MERCHANTID", StaticPayInfo.MERCHANTID); // => self::MERCHANTID, // 商户号 dicInfo.Add("POSID", StaticPayInfo.POSID); // => self::POSID, // 柜台号 dicInfo.Add("BRANCHID", StaticPayInfo.BRANCHID); // => self::BRANCHID, // 分行号 var Info = StringHelper.GetPars(dicInfo); //var newDic = dic.OrderBy(t => t.Key).ToDictionary(o => o.Key, p => p.Value); //参数信息 param = StringHelper.GetPars(dic); //加密 var paramEncryption = new CCBPayUtil().makeCCBParam(param, StaticPayInfo.pubKey); //拼接请求串 url = host + Info + "&ccbParam=" + paramEncryption; //请求 _logger.LogInformation($"请求地址->{url}"); _logger.LogInformation($"请求参数->{param}"); //转换数据 PayResultModel payResult; try { returnData = await GetNetData.PostAsync(url); _logger.LogInformation($"响应数据->{returnData}"); } catch (Exception ex) { _logger.LogInformation($"异常信息:{ex.Message}"); _logger.LogInformation($"异常堆栈:{ex.StackTrace}"); return(await PayCheck(payModel, ++times)); } try { payResult = JsonHelper.ParseFormByJson <PayResultModel>(returnData); } catch { payResult = new PayResultModel { RESULT = "N", ERRMSG = "参数错误", ORDERID = payModel.ORDERID, AMOUNT = payModel.AMOUNT }; } switch (payResult.RESULT) { case "Y": Dictionary <string, string> dicCheckPars = new Dictionary <string, string>(); dicCheckPars.Add("RESULT", payResult.RESULT); dicCheckPars.Add("ORDERID", payResult.ORDERID); dicCheckPars.Add("AMOUNT", payResult.AMOUNT); dicCheckPars.Add("WAITTIME", payResult.WAITTIME); string strCheckPars = StringHelper.GetPars(dicCheckPars); if (NotifyCheck(strCheckPars, payResult.SIGN, StaticPayInfo.pubKey)) { messageModel.success = true; messageModel.msg = "支付成功"; } else { messageModel.success = false; messageModel.msg = "签名失败"; } break; case "N": messageModel.success = false; messageModel.msg = "支付失败"; break; case "U": case "Q": int waittime = payResult.WAITTIME.ObjToInt(); if (waittime <= 0) { waittime = 5; //如果需要等待默认等待5秒后再次查询 } Thread.Sleep(waittime * 1000); //改成轮询查询 messageModel = await PayCheck(payModel, ++times); break; default: messageModel.success = false; messageModel.msg = "支付失败"; break; } messageModel.response.ORDERID = payResult.ORDERID; messageModel.response.ERRCODE = payResult.ERRCODE; messageModel.response.ERRMSG = payResult.ERRMSG; messageModel.response.TRACEID = payResult.TRACEID; messageModel.response.AMOUNT = payResult.AMOUNT; messageModel.response.QRCODETYPE = payResult.QRCODETYPE; } catch (Exception ex) { messageModel.success = false; messageModel.msg = "服务错误"; messageModel.response.ERRMSG = ex.Message; _logger.LogInformation($"异常信息:{ex.Message}"); _logger.LogInformation($"异常堆栈:{ex.StackTrace}"); } finally { _logger.LogInformation($"返回数据->{JsonHelper.GetJSON<MessageModel<PayReturnResultModel>>(messageModel)}"); _logger.LogInformation("轮序结束"); } return(messageModel); }
/// <summary> /// 付款操作 /// </summary> /// <param name="openid">微信openid</param> /// <returns></returns> public static RJson PayAction(string openid) { RJson r = new RJson(); //r.message = "test"; //r.result_status = "succ"; //return r; string ids = "0"; //付款ids默认0 int payFlag = 0; //付款未成功 try { //openid = "o_-IA0YU6JgzTvKINab0B30y0L_Y";//我的openid用于测试 //openid = "o11Z-joTwit-1j2QLx_-vAzwsvvQ"; //获取用户扫描但是未提现的金额总和 string sql = string.Format(@"SELECT ISNULL(STUFF((SELECT ','+ CONVERT(VARCHAR(20),Id) FROM dbo.RedPackScanRecord WHERE OpenId = '{0}' AND IsPay = 0 for xml path('')),1,1,''),0) Ids, ISNULL(SUM(Money),0) Total FROM RedPackScanRecord WHERE OpenId = '{0}' AND IsPay = 0", openid); var dt = SqlHelper2.ExecuteDataTable(sql); ids = dt.Rows[0][0].ToString(); double totalTxMoney = Convert.ToDouble(dt.Rows[0][1]); //未提现金额 if (ids == "0") { r.message = "无可提取的额度"; } else if (totalTxMoney < 1) { r.message = "不足一元不能提取成功"; } else { //先置为已提现 sql = string.Format(@"UPDATE dbo.RedPackScanRecord SET IsPay =1 WHERE Id IN ({0})", ids); LogHelper.WriteMsg("先置为已提现-openid:" + openid + ",ids:" + ids); SqlHelper2.ExecuteNonQuery(CommandType.Text, sql); string strPayResult = CorpPay((totalTxMoney * 100).ToString(), openid); //实际付款 LogHelper.WriteMsg("付款结果-openid:" + openid + ",ids:" + ids + ",结果:" + strPayResult); PayResultModel model = XmlHelpler.GetWxPayResult(strPayResult); //付款结果转类 int payid = 0; if (model.result_code == "SUCCESS") //支付成功,增加纪录 { payFlag = 1; sql = string.Format(@"INSERT INTO dbo.RedPackPayRecord ( OpenId , PayAmout , WxResult_Code , WxPartner_Trade_No , WxPayment_No , WxPayment_Time , WxReturnXML , ScanRecordId ) VALUES ( '{0}' , -- OpenId - varchar(50) {1} , -- PayAmout - float '{2}' , '{3}' , '{4}' , '{5}' , '{6}' , '{7}' ); UPDATE dbo.RedPackScanRecord SET IsPay =1 ,PayId = (SELECT scope_identity()) WHERE Id IN ({7}) ", openid, totalTxMoney, model.result_code, model.partner_trade_no, model.payment_no, model.payment_time, strPayResult, ids); LogHelper.WriteMsg("支付成功,增加纪录-openid:" + openid + ",ids:" + ids + ",sql:" + sql); SqlHelper2.ExecuteNonQuery(CommandType.Text, sql); //payid = Convert.ToInt32(SqlHelper2.ExecuteScalar(CommandType.Text, sql)); //sql = string.Format(@"UPDATE dbo.RedPackScanRecord SET IsPay =1 ,PayId = {0} WHERE Id IN ({1})", // payid, ids); //SqlHelper2.ExecuteNonQuery(CommandType.Text, sql); r.message = "提取成功"; r.result_status = "succ"; } else { //付款失败 置为IsPay =0未付款 sql = string.Format(@"UPDATE dbo.RedPackScanRecord SET IsPay =0 WHERE Id IN ({0})", ids); LogHelper.WriteMsg("支付失败,增加纪录-openid:" + openid + ",ids:" + ids + ",sql:" + sql); SqlHelper2.ExecuteNonQuery(CommandType.Text, sql); //支付失败 增加报警信息 AddAlertLog(openid, "红包" + ids + "支付时:" + strPayResult, "pay"); r.message = "提取失败,请联系管理员"; } } //double totalTxMoney = Convert.ToDouble(SqlHelper2.ExecuteScalar(CommandType.Text, sql)); } catch (Exception ex) { //LogHelper.WriteMsg("PayAction异常-openid:" + openid + ",结果:" + ex.ToString());//支付失败 增加报警信息 AddAlertLog(openid, ex.ToString(), "error"); //支付失败 增加报警信息 r.message = "提取失败,请联系管理员"; } return(r); }
/// <summary> /// 支付结果 /// </summary> public ActionResult PayResult() { //订单id int oid = WebHelper.GetQueryInt("oid"); //订单信息 OrderInfo orderInfo = Orders.GetOrderByOid(oid); if (orderInfo == null || orderInfo.Uid != WorkContext.Uid || orderInfo.PayMode != 1) return Redirect("/"); PayResultModel model = new PayResultModel(); model.OrderInfo = orderInfo; if (orderInfo.OrderState != (int)OrderState.Confirming) model.State = 0; else model.State = 1; return View(model); }
private CustomJsonResult App_ResultNotify(int operater, PayResultModel model) { CustomJsonResult result = new CustomJsonResult(); try { using (TransactionScope ts = new TransactionScope()) { OrderPayResultNotifyLog resultLog = new OrderPayResultNotifyLog(); resultLog.SysOrderId = model.OrderId; resultLog.SysOrderSn = model.OrderSn; resultLog.CreateTime = this.DateTime; resultLog.Creator = model.UserId; if (model.Params.Result == PayResultType.Success) { resultLog.Result = "1"; resultLog.OrderNo = model.Params.MerchantInfo.order_no.NullStringToNullObject(); resultLog.MerchantId = model.Params.MerchantId.NullStringToNullObject(); resultLog.Amount = model.Params.Amount.NullStringToNullObject(); resultLog.TerminalId = model.Params.TerminalId.NullStringToNullObject(); resultLog.MerchantNo = model.Params.MerchantNo.NullStringToNullObject(); resultLog.BatchNo = model.Params.BatchNo.NullStringToNullObject(); resultLog.MerchantName = model.Params.MerchantName.NullStringToNullObject(); resultLog.Issue = model.Params.Issue.NullStringToNullObject(); resultLog.TraceNo = model.Params.TraceNo.NullStringToNullObject(); resultLog.ReferenceNo = model.Params.ReferenceNo.NullStringToNullObject(); resultLog.Type = model.Params.Type.NullStringToNullObject(); resultLog.CardNo = model.Params.CardNo.NullStringToNullObject(); switch (model.ProductType) { case Enumeration.ProductType.InsureForCarForInsure: case Enumeration.ProductType.InsureForCarForRenewal: result = PayCarInsureCompleted(operater, model.OrderSn); break; case Enumeration.ProductType.InsureForCarForClaim: result = PayCarClaimCompleted(operater, model.OrderSn); break; case Enumeration.ProductType.PosMachineDepositRent: result = PayDepositRentCompleted(operater, model.OrderSn); break; case Enumeration.ProductType.PosMachineRent: result = PayRentCompleted(operater, model.OrderSn); break; } } else if (model.Params.Result == PayResultType.Failure) { resultLog.Result = "2"; resultLog.FailureReason = model.Params.FailureReason; Log.WarnFormat("订单:{0},支付失败,原因:{1}", model.OrderSn, model.Params.FailureReason); result = new CustomJsonResult(ResultType.Failure, ResultCode.Failure, "支付失败"); } CurrentDb.OrderPayResultNotifyLog.Add(resultLog); CurrentDb.SaveChanges(); ts.Complete(); } } catch (Exception ex) { Log.ErrorFormat("订单号({0})结果反馈发生异常,原因:{1}", model.OrderSn, ex.StackTrace); result = new CustomJsonResult(ResultType.Exception, ResultCode.Exception, "支付失败"); } return(result); }