一、支付簽名驗證失敗問題
微信官方提供的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/ 到你支付的上級目錄就行