以下4个步骤对应最下面“详细代码”的4个方法
第一步 :
先通过uni.login获取code
(如果是微信原生的小程序开发,应该是wx.login)
第二步:
将code传给后台接口,获取openid
第三步:
将openid传给后台接口,获取微信支付所需参数
最后:
通过uni.requestPayment这个api发起微信支付
(如果是微信原生的小程序开发,应该是wx.requestPayment)
详细代码如下
//获取code
getCode() {
uni.login({
provider: 'weixin',
success: (res) => {
if (res.code) { //微信登录成功 已拿到code
this.getOpenId(res)
} else {
console.log('登录失败!' + res.errMsg)
}
},
fail: () => {
}
});
},
//获取openId
getOpenId(res) {
this.$http({ //请求后台接口获取openId
url: '/api/grouppurchase/isAuth', //请以你的后端接口为准
noToken: true,
data: {
code: res.code,
},
}).then(res => {
if (res.code == 0) {
uni.setStorageSync('openid', res.data.openid)
} else {
this.hasLogin = false
}
}).catch(() => {
this.hasLogin = false
})
},
//点击支付按钮
//将openId传给后台接口,获取微信支付所需参数
getPayParams() {
let openId = uni.getStorageSync('openid')
this.$http({
url: '/api/order/createPayData',
method: 'POST',
data: {
orderId: this.orderId,
"client": "WX_MINI",
"openId": openId,
"payType": 2,
}
}).then(res => {
if (res.code == 0) {
this.wxpay(JSON.parse(res.data))
} else {
uni.showToast({
title: res.msg,
icon: "none"
});
}
}).catch(res => {
this.btnDisabled = false
})
},
//调用支付api,发起支付
wxpay(params) {
uni.requestPayment({
provider: 'wxpay',
timeStamp: params.timeStamp,
nonceStr: params.nonceStr,
package: params.package,
signType: params.signType,
paySign: params.paySign,
success: (res) => {
uni.showToast({
title: '支付成功'
})
},
fail: (err) => {
this.getSubscribe('0')
},
complete: (err) => {
//this.getOrderStatus()
this.btnDisabled = false
}
});
},