当前位置 主页 > 网站技术 > 代码类 >

    .NET Core 实现微信小程序支付功能(统一下单)(2)

    栏目:代码类 时间:2019-09-11 14:04

    注:一般正常获取到prepayid就可以发起支付,请确保所给的参数正确。

    微信支付回调

    微信支付回调规则如下:

    回调代码实现

    ///<summary>/// 微信支付回调地址/// </summary>/// <returns></returns>[HttpPost("PayNotifyUrl")]public ActionResult PayNotifyUrl(){ ResponseResult result = new ResponseResult(); ResponseHandler resHandler = new ResponseHandler(HttpContext); string return_code = resHandler.GetParameter("return_code"); string return_msg = resHandler.GetParameter("return_msg"); try {  var mch_key = Senparc.Weixin.Config.SenparcWeixinSetting.TenPayV3_Key;  resHandler.SetKey(mch_key);  var notifyXml = resHandler.ParseXML();  bool signFlag = resHandler.IsTenpaySign();  if (signFlag && return_code.ToUpper() == "SUCCESS")  {   string attach = resHandler.GetParameter("attach");   string device_info = resHandler.GetParameter("device_info");   string out_trade_no = resHandler.GetParameter("out_trade_no");   string transaction_id = resHandler.GetParameter("transaction_id");   string total_fee = resHandler.GetParameter("total_fee");   PayOrderNotifyParam param = new PayOrderNotifyParam()   {    PayNo = out_trade_no,    Attach = attach,    PayPrice = decimal.Parse(total_fee) / 100,    TransactionNo = transaction_id,   };   //回调参数说明:https://pay.weixin.qq.com/wiki/doc/api/app/app.php?chapter=9_7&index=3   //Logger.Info(string.Format("支付回调接收参数成功,notifyXml={0},param={1}", notifyXml, param.SerializeObject()));   result = Service.PayNotifyUrl(param);   if (result.errno != 0)   {    //回调处理逻辑失败    Logger.Error(string.Format("支付回调处理失败:支付单号:{0},{1}", param.PayNo, result.errmsg));   }   else   {    Logger.Info(string.Format("支付回调处理成功,支付单号:{0}", param.PayNo));    string xml = string.Format(@"<xml>       <return_code><![CDATA[{0}]]></return_code>       <return_msg><![CDATA[{1}]]></return_msg>       </xml>", return_code, return_msg);    return Content(xml, "text/xml");   }  }  else  {   //错误的订单处理   Logger.Error(string.Format("支付回调接失败,signFlag={0},notifyXml={1}", signFlag, notifyXml));  } } catch (Exception ex) {  Logger.Error(string.Format("支付回调异常:Message={0},StackTrace={1}", ex.Message, ex.StackTrace)); } return Content("fail", "text/xml");}

    回调接口最好验证下签名是否正确,验证签名请先设置下商户KEY,如签名成功,微信支付成功,这时可以处理业务数据。

    注:如果业务处理成功最好返回SUCCESS告诉微信,否则微信会隔一段时间就会回调一次,直到回调次数用尽,这里也需要自己业务处理好状态。

    总结

    以上流程就是微信支付过程,以上步骤由于一些隐私问题部分代码采用了截图,如有不明白之处请与我联系,我们一起交流学习,下一篇文章我们将实现微信退款功能。

    以上所述是小编给大家介绍的.NET Core 实现微信小程序支付功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对IIS7站长之家网站的支持!
    如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!