微信支付:微信環境下JSSDK支付處理、移動H5頁面微信支付常見問題處理

微信環境下支付

在微信環境下,調用微信支付,按照jssdk文檔裏的寫法,直接調用支付方法就行。

wx.chooseWXPay({
  timestamp: 0, // 支付簽名時間戳,注意微信jssdk中的所有使用timestamp字段均爲小寫。但最新版的支付後臺生成簽名使用的timeStamp字段名需大寫其中的S字符
  nonceStr: '', // 支付簽名隨機串,不長於 32 位
  package: '', // 統一支付接口返回的prepay_id參數值,提交格式如:prepay_id=\*\*\*)
  signType: '', // 簽名方式,默認爲'SHA1',使用新版支付需傳入'MD5'
  paySign: '', // 支付簽名
  success: function (res) {
    // 支付成功後的回調函數
  }
});

需要注意的地方:

  • 調用chooseWXPay方法時,需要確保 wx.ready 狀態下
  • 在這種支付下,微信支付後臺會配置相應的路徑,前端hash模式的路由,需要進行處理。
    用戶訪問的頁面爲:
    http://test.com/index.html#/pay/12312312
    在這樣的頁面路徑下,發起支付,會報錯。需要處理成:
    http://test.com/index.html?#/pay/12312312
    帶上? 讓微信支付忽略#及後面的內容

移動端網頁H5支付

微信h5支付更簡單一些。
正常操作下,前端從後臺接口能直接拿到MWEB_URL, 使用location.href=MWEB_URL 就可以直接跳轉支付。

在微信支付文檔裏列出來的常見問題中,出在前端的,主要是referer值問題。正常情況下,用a標籤或location.href方式,都會帶上referer值,只有當從https鏈接是往http鏈接跳轉時,纔不會帶上。
** 缺用戶真實IP導致 支付時出現商家參數格式錯誤**。
就是後端生成鏈接時,沒有帶上用戶訪問頁面的真實ip導致的。官方文檔獲取ip指引

前端是無法獲取用戶真實ip的,真實ip需要後端拿。
解決這個問題:

  • 方法一、後端自己取用戶訪問鏈接時的真實ip,然後生成支付鏈接
  • 方法二、後端單獨出一個獲取ip的接口,前端先調接口拿到ip,再在調生成支付鏈接接口時,把這個ip作爲參數傳往後臺。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章