微信JSAPI支付提示支付签名验证失败、jsapi缺少参数 total_fee、当前url未注册问题的解决方法
作者:互联网
一、支付签名验证失败问题
微信官方提供的JSAPI发起支付中对签名的描述并不是很清楚,详见:https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6
找了很多资料才找到具体的签名方法,希望对大家有用。
$data2['timeStamp']=time(); $data2['appId']=$config['app_id']; $data2['nonceStr']=$nonce_str; $data2['package']="prepay_id=".$result['prepay_id']; $data2['signType']="MD5"; $data2['paySign']= $wxpay->createMd5Sign($data2);
要注意的是 参与签名的prepay_id,必须是 prepay_id=**** 的格式。
二、jsapi缺少参数 total_fee
wx.chooseWXPay({ timestamp: 0, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr: '', // 支付签名随机串,不长于 32 位 package: '', // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) signType: '', // 微信支付V3的传入RSA,微信支付V2的传入格式与V2统一下单的签名格式保持一致 paySign: '', // 支付签名 success: function (res) { // 支付成功后的回调函数 } });
另外在微信浏览器发起微信支付时,package的格式要求也为 prepay_id=**** ,如果不是,则会出现 JSAPI缺少参数 total_fee 的问题
三、当前url未注册
当前url未注册 的问题需要登陆微信支付商户中,产品》JSAPI中设置支付授权目录 即可。设置要求为 https://www.alipay.com/pay/ 到你支付的上级目录就行
标签:prepay,fee,微信,未注册,签名,支付,id,data2 来源: https://www.cnblogs.com/fogwang/p/15222311.html