微信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/  到你支付的上级目录就行


原文地址:https://www.cnblogs.com/fogwang/p/15222311.html