微信小程序支付集成首先先看官方文档。如果集成过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
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我