微信小程序支付开发流程

关键点:小程序支付也是用的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。统一支付接口:

/// 
    /// 统一支付接口
    /// 
    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发起支付,代码如下:

wx.requestPayment(
{
"timeStamp":"1490840662",
"nonceStr": "5K8264ILTKCH16CQ2502SI8ZNMTM67VS ",
"package": " prepay_id=wx2017033010242291fcfe0db70013231072",
"signType": "MD5",
"paySign": "922981E42679E92A31EBBE7866A5EAE3",
"success":function(res){},
"fail":function(res){},
"complete":function(res){}
})


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

你可能感兴趣的:(微信小程序,小程序)