微信支付遇到的缺少参数问题
最近工作还是比较忙的,好就想继续更新下博客。现在是2018-11-1 20:40,刚忙完项目,趁着记忆还清晰就把现在的项目遇到的问题记录一下;
微信支付 提示JSAPI缺少参数:
调用的方法代码是:
wx.chooseWXPay({
appId:data.pay_parameters.appId,
timestamp: data.pay_parameters.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: data.pay_parameters.nonceStr, // 支付签名随机串,不长于 32 位
package: data.pay_parameters.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
signType: data.pay_parameters.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: data.pay_parameters.paySign, // 支付签名
success: function (res) {
// 支付成功后的回调函数
vm.ispayed = false//已支付
vm.showOrderInfo()
}
});
这个是我更改参数形式之后的代码,错误就出现在这里。微信JS-SDK接口注释说支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
。原来啊,timestamp字段均为小写,我之前是直接拿的后台返回的参数塞进去的,由于S大写导致了接口调用失败。
下图是我alert出的直接拿后台参数使用的数据,可见S为大写