开发微信支付,一直报错choosewxpay fail错误,按照网上说的,仔细检查了支付目录配置和代码,没有错,参数也传递正确,最终发现错误,改正如下:
$('#chooseWXPay').on('click', function(){
wx.chooseWXPay({
timestamp: payObject.timestamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: payObject.nonceStr, // 支付签名随机串,不长于 32 位
package: payObject.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: payObject.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: payObject.paySign,
success : function(res) {
// 支付成功后的回调函数
window.location.href = 'http://www.baidu.com';
}
});
});
最后才发现,是生成的paySign有错,而paySign生成错误是有package这个参数值错误导致的,
在后台经统一下单接口返回xml,获取其中的prepay_id,给js传package参数时要传
String package = "prepay_id=” + prepay_id; //prepay_id是通过统一下单接口获取的
js代码中的 payObject.package就是的值就是这里的package,
在生成paySign时,package参数的值是“prepay_id=******”的形式,是“prepay_id=*****”参与签名生成
|