vue專案接入微信JSSDK的坑

thomasyc發表於2019-02-16

date: 2018-12-13 15:23:09

用於記錄接入微信JS-SDK的坑,以後方便查詢 第一次接入公眾號微信支付、分享、定位等等的坑的時候,心裡是迷茫而又恐懼。因為,聽說坑特別多,後來發現自己的親身體驗到了這一點。

支付的坑

1、當前URL未註冊

vue專案接入微信JSSDK的坑

  • 問題: 微信公眾號H5調起支付時,點選支付按鈕出現“當前頁面的URL未註冊”的提示。
  • 解決辦法:由於2017年8月1日微信官方把關於支付的資訊轉移到了商戶平臺:公眾平臺微信支付公眾號支付授權目錄、掃碼支付回撥URL配置入口已於8月1日遷移至商戶平臺(pay.weixin.qq.com

所以進入以下位置:

登入微信商戶平臺-產品中心-開發配置,配置支付授權路徑。如果掉起支付的頁面在 域名/pay.html中,那麼就在此新增授權路徑,如我的掉起支付的頁面在www.weixinPay.com/pay.html 中,那麼授權目錄就配置為htt://www.weixinPay.com/

tip: 注意:後面的 / 一定要加上,表示該路徑下的頁面都可以調起微信的支付介面。

支付失敗

2、如果按照以上還是彈出當前URL未註冊 因為微信支付對spa專案的hash路由相容還是不很好。需要加上一個 "?" 如圖:

vue專案接入微信JSSDK的坑
程式碼如下:

watch: {
  $route() {
     this.directRightUrl()
  }
},
methods: {
  directRightUrl() {
    let { href, protocol, host, pathname, search, hash } = window.location
    search = search || '?'
    let newHref = `${protocol}//${host}${pathname}${search}${hash}`
    if (newHref !== href) {
      window.location.replace(newHref)
    }
  }
複製程式碼

我這裡是根據App.vue檔案,進行路由監控。然後給每個頁面都加上問號,雖然會些許效能消耗。但是方便省事,具體可以根據自己的頁面適當修改。

分享的坑

根據JS-SDK的文件,很多人都是在初始化的wx配置的時候,傳入的當前的URL地址不正確。 然後就導致如下結果:

微信分享失敗

  • 解決辦法: 請在保證後臺能正確返回初始化需要的配置引數的情況下
    初始化微信配置
修改前:
// let currentUrl = window.location.href
修改後
let currentUrl = window.location.href.split('#')[0]
複製程式碼

神奇成功了開心

分享成功

需要注意的幾點:

  • jsApList: [] 需要加入對應引數。比如,分享加入'onMenuShareTimeline', 'onMenuShareAppMessage'。 具體的對應介面的引數可以參考文件
  • 所有介面的呼叫,請保證在wx.ready()執行後,才呼叫。文件裡面是這麼建議的。
    文件內容

定位的坑

剛開始定位的,內心是有點小激動的。因為覺得這個功能很高大尚,當然了這只是我個人的想法。好了~,不扯了。

同樣的,給微信初始化的jsApList加入對應的引數。 然後在wx.ready()函式執行,但是,發現無論如何第一次進入頁面都無法成功彈出授權彈框。

店鋪選擇

後來發現,在頁面完成之後。延遲一秒再進行獲取定位,即可 百分百成功!坑爹有木有。 程式碼如下

獲取定位程式碼
獲取定位程式碼

目前遇到這個三個坑,後期遇到再寫上吧。痛苦的經歷需要不要再有了

關注公眾號'前端樹',更多實用性的乾貨

vue專案接入微信JSSDK的坑

相關文章