最新消息:解决了,感谢“跨商通”大神的指导。勾选ES6转ES5,增强编译,就没问题了。
问题描述:
(1)正式版、iPhone、普通用户,不能正常调起微信支付。
(2)正式版、Android、普通用户,可以正常调起微信支付。
(3)正式版、iPhone、开发者,不能正常调起微信支付。
(4)开发版、无论是Android还是iPhone、开发者,都可以正常调起微信支付。
-小程序APPID:wx32e58c8b56c48a32
-请求的具体API接口(提供文档地址和请求的URL):wx.requestPayment
- 问题发生时间【必填】:2021年2月27日 19:00
- 商户号【 必填】:1603093166
- 商户订单号【 必填】:8f8f44-1614423574810-957597
- 相关报错信息文案:正式版拿不到日志,看不到报错信息
- 问题截图或视频:无
-完整的请求和返回参数以及单号:普通用户使用正式版/体验版都调不起支付,好像云函数wxpay没有进入,所有查不到日志,初步分析原因可能是wxpay云函数或者CloudPay.unifiedOrder(),但是也找不到办法解决。
小程序端:
// 微信支付:统一下单
wx.cloud.callFunction({
name: 'wxpay',
data: {
params
},
success: res => {
const payment = res.result.payment
console.log('success:'+res)
wx.showLoading()
//发起支付
wx.requestPayment({
...payment,
success(res) {
console.log('pay success', res)
},
fail(err) {
console.log('pay fail', err)
},
complete(err){
wx.hideLoading()
}
})
},
fail(err){console.log('fail:'+err)},
complete(err){console.log('complete:'+err)},
})
云函数wxpay:
exports.main = async (event, context) => {
console.log(event.params)
const res = await cloud.cloudPay.unifiedOrder({
"functionName":"wxpayCallback",
"envId":"online",
"subMchId":"1603093166",
"spbillCreateIp" : "127.0.0.1",
"tradeType":"JSAPI",
"nonceStr":event.params.nonceStr, //随机字符串
"body" : event.params.body, //商品描述
"outTradeNo" : event.params.outTradeNo, //商户订单号
"totalFee" : event.params.totalFee //总金额(单位:分)
})
return res
}
碰到过一次这种情况,原因是不支持promise,换成异步wx.requestPayment即解决。
如果你不是这种情况,跳过。
wx.requestPayment({
...payment,
success(res) {
console.log("pay succes", res)
},
fail(err) {
console.error("pay fail", err)
},
complete(err){
}
统一下单请求正常么?找你后端问问