微信小程序支付集成首先先看官方文档。如果集成过JSAPI或JSSDK调起微信支付,接入小程序支付就非常简单了。
微信小程序支付业务步骤一共三步:
1、小程序端通过wx.login的返回的code换取openid 2、服务端向微信统一下单 3、小程序端发起支付
支付需要的几样东西:
APPID = \'小程序ID\'; MCHID = \'商户号\'; KEY = \'商户平台设置的密钥key\'; APPSECRET = \'小程序密钥\';
小程序端是通过wx.requestPayment(OBJECT)接口来调起微信支付的,首先看看它需要哪些参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
timeStamp | String | 是 | 时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间 |
nonceStr | String | 是 | 随机字符串,长度为32个字符以下。 |
package | String | 是 | 统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=* |
signType | String | 是 | 签名算法,暂支持 MD5 |
paySign | String | 是 | 签名,具体签名方案参见微信公众号支付帮助文档; |
success | Function | 否 | 接口调用成功的回调函数 |
fail | Function | 否 | 接口调用失败的回调函数 |
complete | Function | 否 | 接口调用结束的回调函数(调用成功、失败都会执行) |
可以看到要调起支付,必须先完成统一下单接口,拿取 prepay_id 参数值。官方说明文档在这里,里面唯一有区别的就是要先获取用户的openid,还好小程序提供了wx.login(OBJECT)接口。看代码:resp 是提交商城订单返回的参数,其中包括订单号(orderids)、支付金额(payprice);
var Rand = Math.random(); /* 订单号增加随机数,防止在线下单单号重复 */ var orderno = resp.data.order.orderids + \'_\' + (100 + Math.round(Rand * 899)); var total_fee = resp.data.order.payprice; var body = \'\' + orderno; wx.login({ success: res => { wx.request({ url: app.data.apiurl + \'handler_cash.php?code=\'+res.code+\'&userid=\'+userid + \'&orderno=\' + orderno + \'&total_fee=\' + total_fee + \'&body=\' + body, success: function (resp) { if (resp.data.msg.return_code == \'FAIL\') { wx.showToast({ title: resp.data.msg.return_msg, image: \'/images/err2.png\', duration: 1000 }); } else { /* 微信支付开始 */ wx.requestPayment( { \'timeStamp\': resp.data.msg.timeStamp.toString(), \'nonceStr\': resp.data.msg.nonceStr, \'package\': resp.data.msg.package, \'signType\': resp.data.msg.signType, \'paySign\': resp.data.msg.paySign, \'success\': function (res) { wx.redirectTo({ url: \'/pages/paycomplete/index\', }); }, \'fail\': function (res) { wx.showModal({ title: \'\', content: \'支付失败\', confirmText: \'知道了\', showCancel: false, success: function (res) { wx.reLaunch({ url: \'/pages/myhome/index\', }) } }) }, \'complete\': function (res) { //接口调用结束的回调函数(调用成功、失败都会执行) wx.reLaunch({ url: \'/pages/myhome/index\', }) } }) /* 微信支付结束 */ } } }) } }); /* 微信支付结束 */
本文地址:https://www.stayed.cn/item/32
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我