在开发者工具的效果(确认支付页面/pages/orderdeal/orderdeal)
开发者工具能够来到这个二维码 真机的时候 就差不多能够调起微信支付
下边介绍下代码实现
思路:先要生成一个订单(需要付钱的订单类似于加入购物车要去支付 但是还没支付的一步),生成订单之后调用后台接口后台返回微信支付所需要的五个参数(timeStamp,nonceStr,package...等等)此刻通过uni.requestPayment来调起微信支付的窗口进行支付
生成订单页面(/pages/generorders/generorders)js:
redaybuy(){ //redaybuy是生成订单的按钮上绑定的事件
uni.request({
url:"",
data:{
mb:this.phone,
host:"www.zjjs365.com",
suit_id:this.proid
},
method:"post",
success:(res)=>{
// +res.data.Data.token
uni.navigateTo({
url:"/pages/orderdeal/orderdeal?token="+res.data.Data.token
})
}
})
}
确认支付(/pages/orderdeal/orderdeal):
async topay(){
var code = await wxlogin() //获取微信登录时候的code传给后台,后台通过code获取到openid
uni.request({
url: "",
data:{
code:code,
token:this.token, //token是从生成订单页面传递过来的 在onLoad里边接收过并赋值了
},
method:"post",
success:(res)=> {
var data=JSON.parse(res.data.Data.wx) //注意后台返回的数据的格式是什么我的是字符串格式 需要转换成json格式
console.log(data)
uni.requestPayment({
provider: 'wxpay',
timeStamp: data.timeStamp,
nonceStr: data.nonceStr,
package: data.package,
signType: data.signType,
paySign: data.paySign,
success: function(res) {
console.log('success:' + JSON.stringify(res));
uni.navigateTo({
url:"/pages/success/success" //支付成功后跳转到成功页面
})
},
fail: function(err) {
console.log('fail:' + JSON.stringify(err));
}
})
}
})
},
注意 我的code是从封装好的wxlogin.js直接引入的 大家没有这个文件 要写一个登录code在topay这个方法里也是可以的如图
(想要wxlogin.js的可以看看我之前的博客获取用户手机号)
到此 支付就可以完成了
总结:openid是后台需要的参数 我们只需要给他提供code让他自己去获取就好 剩下的微信支付参数也都是他返回 我们调用就ok