nuxt 微信公衆號支付遇到的問題與解決

背景:nuxt爲默認的history模式,用這個npm 支付weixin-js-sdk,開啓debug模式,儘可能在ios下調試,由於alert彈窗的信息會更多。ios

async onPay (config) {
  try {
    const wxUrl = window.location.href//分享的路徑
    const res = await $axios.$get("")//獲取配置sdk參數,包括微信分享的參數
    if (res.status === 0) {
      const {data} = res
      wx.config({
        debug: true,
        appId: data.appId,
        timestamp: data.timestamp,
        nonceStr: data.nonceStr,
        signature: data.signature,
        jsApiList: ['chooseWXPay']
      })

      wx.ready(function () {
        wx.checkJsApi({
          jsApiList: ['chooseWXPay'],
          success: (res) => {
            wx.chooseWXPay({
              timestamp: config.timestamp,
              nonceStr: config.nonceStr, 
              package: config.package, 
              signType: config.signType, 
              paySign: config.paySign, // 支付簽名
              success: function (res) {
              },
              cancel: function (res) {
                // 支付取消的回調函數
              },
              error: function (res) {
                // 支付失敗的回調函數
              }
            })
          }
        })

      })

    }
  } catch (e) {
    throw e
  }
}

一、微信調起支付loading又馬上關閉,並提示:當前頁面的url未註冊:https://xxx/xx/xx/

補充:因爲支付路徑太深,ios下,提示支付路徑未註冊出現了各類狀況。甚至出現只有我一我的能夠調起支付,其餘人測試都不行的狀況。git

緣由:這是由於微信獲取支付路徑的時候,在ios與安卓下是不一樣的,對於spa應用來講,首先咱們把咱們從微信別的地方點擊連接呼出微信瀏覽器時所落在的頁面、或者點擊微信瀏覽器的刷新按鈕時所刷新的頁面,咱們叫作落地頁。問題來了,在ios和安卓下呼出微信支付的時候,微信支付判斷當前路徑ios爲落地頁,安卓則爲正常的當前頁面的路徑。github

解決支付路徑app不統一:用window.location.href 的方式跳轉至支付頁npm

微信獲取支付路徑的方式:以url最後一個/爲準,獲取/以前的路徑。axios

支付路徑例子:例如咱們後臺配置的支付的路徑爲後端

https://域名/項目名/(可能有多級目錄)/pay/

那麼就會匹配瀏覽器

https://域名/項目名/(可能有多級目錄)/pay/?xxxxxxxxxxxxxxxxxx

注意pay支付路徑後的/必定要加。由於咱們作路由跳轉極可能是這種形式服務器

https://域名/項目名/(可能有多級目錄)/pay?xxxxxxxxxxxxxxxxxx //錯誤,'?'前沒有'/',會匹配不到正確的路徑。

二、微信調起支付loading又直接關閉,提示,訂單已過時。

解決:這個是服務器那邊的問題,後端直接設置了固定的訂單時間以跳過支付環節。微信

三、sdk中wx.config中的參數。

事實上,咱們並不須要額外的請求wx.config的參數,由於支付接口返回的支付參數已經有了全部的config參數,除了signature這個加密簽名字段,在支付參數中對應的加密簽名是paysign這個字段,事實上直接用paysign做爲signature的值也是沒有問題的。wx.config的參數差異是分享的時候。須要額外的分享的路徑urlapp

以上。。。其餘記不起來了

相關文章
相關標籤/搜索