一、微信小程序支付
- 通过wx.login()获取code、调用后端接口获取openid;
wx.login({
success (res) {
if (res.code) {
//发起网络请求获取openid,一般是访问后端封装好的接口,也可以通过访问微信官方接口获取
uni.request({
url: '后端接口地址,获取openid',
method: 'GET',
success(res) {
//获取openid:用户真实唯一id进行保存
console.log(res.data.openid)
}
})
} else {
console.log('登录失败!' + res.errMsg)
}
}
})
- 调用后端接口创建订单,获取orderId;
uni.request({
url: '后端接口地址,获取订单id',
method: 'POST',
data: { 传入接口需要的参数,如商品金额,商品个数等 },
success(res) {
console.log(res.data.orderId)
}
})
- 调用后端接口获取支付核心参数,预支付;
uni.request({
url: '后端接口地址,获取支付核心数据',
method: 'POST',
data: { 传入接口需要的参数,如订单ID,openId等 },
success(res) {
console.log(res.data)
//接口会返回以下核心参数
//timeStamp 时间戳
//nonceStr 随机字符串
//package 统一下单接口返回的 prepay_id 参数值
//signType 签名算法
//paySign 签名
}
})
- 通过支付核心参数调用wx.requestPayment()发起支付;
//调用微信官方支付接口弹出付款界面,输入密码扣款
wx.requestPayment({
timeStamp, //时间戳
nonceStr, //随机字符串
package, //prepay_id
signType, //签名算法MD5
paySign, //签名
success (res) {
if (res.errMsg == "requestPayment:ok"){
console.log('支付成功', res)
}else{
console.log('支付失败')
}
},
fail (res) {
console.log('支付失败', res)
}
})
总结
登录:调用uni.login/wx.login调用微信接口,获取code,调用后端后台获取openid;
订单:调用后端接口获取订单ID,再调用后端接口传入openid、商品id、商品单价、商品数量等参数获取预支付的重要参数(时间戳timeStamp,随机字符串nonceStr,预支付id package,签名算法signType,签名paySign)
支付:调用uni/wx.requestPayment微信支付方法,传递5个重要参数,获取支付结果(成功或失败)
可以参考 官网文档