使用微信小程序云开发对接微信支付,拷贝官方的示例代码运行,报错:调用支付JSAPI缺少参数。莫名其妙。
官方示例代码连接:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/payment/wx.requestPayment.html
解决办法:
1、首先,云开发绑定商户号会发送一条验证信息到商户号管理员的手机上,商户号管理员必须验证通过后才行(注意不是小程序管理员)。可用状态如下:
2、官方示例代码的outTradeNo(订单号),订单号不能重复,这串数字肯定之前被用过了。要改几个数字再试试。
3、在开发者工具里,打开真机调试,可以看到具体的报错信息:
4、运行成功的参考代码:
云函数:
// 云函数代码
const cloud = require('wx-server-sdk')
cloud.init({
traceUser: true
})
exports.main = async (event, context) => {
const res = await cloud.cloudPay.unifiedOrder({
"body" : "遇见自习室",
"outTradeNo" : "1237762301201407033233365019",
"spbillCreateIp" : "127.0.0.1",
"subMchId" : "1602300040",
"totalFee" : 1,
"envId": "yujian-****",
"functionName": "pay_cb"
})
return res
}
小程序端:
wxpay: function () {
wx.cloud.callFunction({
name: 'wxpay',
data: {},
success: function (res) {
console.log("res",res)
console.log("res.result.payment",res.result.payment)
const payment = res.result.payment
wx.requestPayment({
// timeStamp: param.timeStamp,
// nonceStr: param.nonceStr,
// package: param.package,
// signType: param.signType,
// paySign: param.paySign,
...payment, //这种用法之前倒是没见过
success (res) {
console.log('pay success', res)
},
fail (res) {
console.error('pay fail', err)
}
})
},
fail: console.error
})
},
5、坑点:
报错信息莫名其妙的,文不对题。