當前位置:首頁 » 網頁前端 » 調用微信掃碼腳本
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

調用微信掃碼腳本

發布時間: 2023-01-20 07:47:24

① 手把手教你調用微信掃一掃!三分鍾包會

這是我第一次公眾號開發,本以為看著微信官方文檔直接復制粘貼就好了,沒想到是我天真了,爬過一個坑又入一個坑!就這么一個簡單的事,竟然搞了一下午,所以寫了這篇文章,希望可以幫到大家!

第一步:引入 weixin-js-sdk

直接在 html 文件內,使用 script 引入:

或者

第二步:許可權驗證配置

timestamp,nonceStr,signature 重要信息請根據自己的公眾號信息去獲取。需要注意的是 debug 調試的時候,設置為 true ,會自動彈出配置成功或失敗信息,調試時可以藉助它。

第三步:調用掃一掃介面

我們在需要的按鈕處,點擊事件處開始調用掃碼介面,如:

做了一個判斷處理,檢查只有微信瀏覽器,其他瀏覽器不可以調用:

第四步:真機測試

真機測試的時候,一直在提示:

errMsg:config:invalid signature

中文叫做簽名無效。

查找原因是因為我的簽名獲取來和官方 微信 js 介面簽名校驗工具獲取來的數據不一樣,很明顯獲取的簽名有問題,是因為我的 url 配置和前端調起介面的 url 不一致造成的。

第五步:蘋果手機測試

蘋果手機真機測試,提示錯誤信息為:

the permission value is offline verifying

翻譯為中文:許可權值正在離線驗證

這個錯誤原因是 config 沒有正確執行。

又繼續去檢查簽名的問題,最後發現是後台介面欄位寫錯了,欲哭無淚,總之還是簽名信息錯誤。

第六步:安卓正常,蘋果點擊無反應

用安卓測試的時候,竟然好了,完美展示掃碼結果,以為要好了。使用 ios 測試的時候,竟然發現點擊的時候沒有任何反應。

找了半天原因,是因為 window.location.href 不同造成的。

測試結果:

安卓:https://hp.******.net/

IOS:https://hp.******.net//

IOS 手機就是因為 url 與簽名配置處的 url 不同,所以導致 config 執行失敗。究其原因是因為我的 vue-router 是 hash 模式。

解決方案:把我的 hash 模式換成 history 模式。記得後台也需要配置 nginx 。

第七步:IOS 掃碼無反應

當 IOS 能調起介面的那一刻,我以為要成功了,哪知道它就是要與 安卓 與眾不同,掃碼之後沒有任何反應,但是如果你快速地連續多掃幾次就會出現結果。

你就說要命不?網上查找了半天,看見有的人說有延時,最後想乾脆加個延時算了。

果然加了延時之後就好了。

第八步:掃碼結果處理

可能存在問題:

1、iOS設備掃碼正常,Android設備掃碼後沒反應
2、Android設備掃碼正常,iOS設備掃碼後沒反應

原因 :微信開發文檔並沒有說清楚,其實在微信後台可能是維護了2個介面, 或者是對設備類型進行了區別,總之在 回調 函數中返回的結果封裝對象並不是同一個, 所以這要求我們也進行相應的處理, 不然就會出現上面這種默認奇妙的問題。

IOS 返回結果:

Android 結果:

第九步:修改路由

本以為 蘋果安卓手機都能夠正常掃碼,沒問題了。但是領導換需求了,之前是掃碼放到外邊,可以匿名掃。現在要修改成登錄之後才可以掃碼。

我就把路由修改了一下,先在登錄頁登錄成功之後,再進入掃碼頁,後台也同步修改了 url 地址,修改完測試發現:

安卓的一切正常。

蘋果手機壞了!

奔潰了,看看錯誤提示:noPermissionJsApi:[],errMsg:"config:ok"。

確定之後有一個錯誤提示。

errMsg:scanQRCode:the perssion value is offline verifying

一頓網路猛如虎,半天原地打轉轉!

有前邊一次經驗教訓,我就又去找地址的原因。最後發現是竟然 $router.push 的跳轉影響了我的 url ,在 IOS 上的 push 跳轉不能寫入瀏覽器的地址欄,但是安卓可以,導致安卓和 ios 跳轉之後的地址不同,所以 ios 失敗了。

解決辦法:

此時就正常運行了。這下滿足項目要求了,不會再出什麼幺蛾子了!

微信官方開發文檔:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#4