微信支付的坑

參數問題
安全目錄問題

參數問題

微信支付具體的代碼參考官方文檔,可是在使用的時候仍是碰見一個坑。小程序

寫法一(success)

WeixinJSBridge.invoke('getBrandWCPayRequest', payload, function (res) {

});

寫法二(failed)

wx.chooseWXPay(payload);

分析學習

使用寫法二的時候不能成功喚起支付,調試的時候發現 timeStampundefined ,跟蹤發現以下問題:

server給的payload格式以下:安全

nonceStr: "***"
package: "prepay_id=***"
paySign: "***"
signType: "MD5"
timeStamp: "***"

須要注意的位置是timeStamp,看文檔須要的鍵名是timeStamp,可是實際在jssdk中經過f(a)方法的調用時是經過timestamp獲取的微信

chooseWXPay: function(a) {
    c(p.chooseWXPay, f(a), a)
}
function f(a) {
    return {
        timeStamp: a.timestamp + "",
        nonceStr: a.nonceStr,
        "package": a["package"],
        paySign: a.paySign,
        signType: a.signType || "SHA1"
    }
}

解決方案

server給定timestamp,fe手動添加timestamp

回調響應的key也切換爲駝峯命名了(2017-08-31更新)

  • WeixinJSBridge.invoke err_msg
  • wx.chooseWXPay errMsg

2017-09-28

spa單頁url中新增了其它參數,再繼續支付會出現報錯 「access_denied」app

  • 更新wx.config
  • 帶參數從新加載頁面(至關於更新)

安全目錄問題

開始調試的時候把 debug: true 不少錯誤信息真機調試會彈出來,調試起來方便一些。
{errMsg: chooseWXPay:fail} 須要配置一下安全目錄。
多個商戶號的狀況下,必定要找到對應的公衆號來配置目錄。學習

小程序關聯支付易錯問題

服務號已經有了,直接關聯的小程序的APPID,這些地方都不會引發問題。關聯之後也會生成一個商戶號,開發的時候仍是使用主商戶號就好了。易錯點:簽名時key不是appSecret,這點錯了會致使「簽名驗證失敗」。微信支付

相關文章
相關標籤/搜索