问题描述:
1、当前小程序未发布,正处于开发阶段
2、发起支付的appid和服务端的appid都是一个值(小程序的appid)
3、服务端请求下单接口一切正常,返回数据也一切正常,没有报错或验签失败的现象,参数如下:
{
"timeStamp": 1642407577,
"nonceStr": "1JYD4286KH45LOY7MEM2H8X6EZAXPA65",
"package": "prepay_id=wx171619373602695cffdf9bef6ad6950000",
"signType": "RSA",
"paySign": "EnEfdLFOrN72Iedxvzt0HiZn3i6KiXzjj\/DPjIrgX4WDMpYpfQTPOhHziOAejavvdHoSXi36\/48e5I6gx0mySwNYzioiQE\/C\/LqUbPUYxrFVk6DpkoBcz7+wdzU24qhrQSZGaclfpJDe6NiEuPvsT7ceIrisRerrc0TICKzl9uR2fWvHxO9KFDCoYJql25A9AiA\/\/Ri5a5jfMKIwUjYX1rta2J5DchXiSOAwOkQSKHUXoiSwNiOv9FkT+VpgqJGtr+6sIatM07yStzb2ELfRgcswgBqVN9DGBHYlQjDKxBxDoz9r2LNKfFAmv4xcTL8ZPv4tQsv4zLf0YlhjKQc+5g=="
}
4、在手机上测试支付报错如下:
调用支付JSAPI缺少参数:total_fee
5、小程序的代码:
wx.requestOrderPayment({
timeStamp: `"${res2.data.timeStamp}"`,
nonceStr: `"${res2.data.nonceStr}"`,
package: `"${res2.data.package}"`,
signType: `"${res2.data.signType}"`,
paySign: `"${res2.data.paySign}"`,
success (res) {
console.log('成功');
console.log(res);
},
fail (res) {
console.log('失败');
console.log(res);
}
})
V3接口虽然没有total_fee字段,但报错缺少total_fee和V2原因是一样的,自己检查
1)package参数格式错误,正确的package参数格式应该是这样:package:"prepay_id=wx201222229874569b201de80e089456213"
2)package参数为空,请按照文档要求上传正确的参数
3)下单APPID与调起支付APPID是否一致
自己可以通过postman+签名验证工具写死调起参数来验证
根据我的经验,参数类错误,需要后端在生成签名的时候打印下xml结构。在客户端侧是无法看出来的。