当前位置:   article > 正文

微信小程序支付开发流程

微信小程序支付开发流程

关键点:小程序支付也是用的JSAPI接口。微信支付商户平台需要把小程序关联起来。

需要用到的微信端数据:APPID(小程序ID)、APPSECRET(小程序密钥)、MCHID(商户号)、KEY(商户号登录密码进行MD5加密32位小写)。

具体流程如下:

1.    前端(小程序前端,下同)调用wx.login获取code。
2.    后端(.NET/JAVA/PHP/nodejs等,下同)通过code、APPID、APPSECRET三个参数调用微信接口获取用户openid,调用接口:

string url = "https://api.weixin.qq.com/sns/jscode2session?" + "appid=" + appId + "&secret=" + secret + "&grant_type=authorization_code&js_code=" + jObject["Code"].ToString();


3.    前端下单,后端生成订单,订单包含订单编号(唯一,后面会需要反查)、订单信息、金额等等并回传前端。
4.    前端拿到openid和订单编号,发给后端生成预付单。
5.    后端根据预付单信息生成prepay_id。方法大概就是后端去调用微信支付的统一支付接口,参数是由订单信息、回调通知URL、服务器IP地址、openid等拼接一个XML格式数据。然后从返回的XML数据中提取prepay_id。统一支付接口:

  1. /// <summary>
  2. /// 统一支付接口
  3. /// </summary>
  4. const string UnifiedPayUrl = "https://api.mch.weixin.qq.com/pay/unifiedorder";


6.    最后得到appId(小程序ID)、timeStamp(时间戳)、nonceStr(随机生成的字符串)、package(数据包,格式为prepay_id= wx2017033010242291fcfe0db70013231072)、signType(固定为MD5)、paySign(签名,这个是由前面几个再加上KEY进行MD5大写加密后的字符串,拼接方式如:appId=wx4f0148eef3c588ea&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx2017033010242291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=926b9f4a15a087531308b60ed3b1edad,顺序一定不能错,否则加密字符串对不上)。
7.    后端把第6点生成的数据传给前端,前端调用wx.requestPayment发起支付,代码如下:

  1. wx.requestPayment(
  2. {
  3. "timeStamp":"1490840662",
  4. "nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS ",
  5. "package": " prepay_id=wx2017033010242291fcfe0db70013231072",
  6. "signType": "MD5",
  7. "paySign": "922981E42679E92A31EBBE7866A5EAE3",
  8. "success":function(res){},
  9. "fail":function(res){},
  10. "complete":function(res){}
  11. })


8.    微信那边如果支付成功,会把信息以XML的格式通知后端,如果失败它会一直通知,直到后端通知微信收到信息为止。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/266825
推荐阅读
相关标签
  

闽ICP备14008679号