微信小程序、支付寶小程序、H5根據字符串生成相同的二維碼


前言:

建議后端合成二維碼,直接返回圖片給前端(包括二維碼帶logo),如果后端沒有實現這個,只返回字符串給前端,那么就需要前端來用插件合成二維碼了。

前端合成二維碼,就要用到插件。不少H5的二維碼插件都用到DOM的,小程序中沒有DOM這個概念,所以h5的好多插件並不能直接用到小程序上,也就出現了h5插件到小程序的移植。

如果項目有多個平台,那么就建議使用已經移植到小程序上的插件,這樣能保證不同平台生成的二維碼是相同的,不然就會出現不同平台生成券碼不一致的問題(雖說不影響券碼的識別,但是總歸不太好)。

解決方案:

H5使用QRCode插件,小程序使用QRcode移植的weapp-qrcode-base64插件,這個本來針對微信小程序做的移植,經驗證,支付寶小程序也可以用。使用這兩個插件,生成是二維碼就是一致的了。

這個插件是不基於canvas的,具體用法這里就不說了,開源項目里邊都有詳細說明。

對於weapp-qrcode-base64的使用,詳見博文:https://www.cnblogs.com/xyyt/p/10945435.html

后記:

這個插件還是挺不錯的,可以設置二維碼的容錯率以及碼的顏色,不足之處就是不能合成logo,需要前端后期將logo布局到合成的二維碼上方。

能夠直接合成logo的插件也嘗試過,但是在開發及跨平台移植過程中出現不少問題,最后也就嘗試出來上邊這種方式,實現了一直的二維碼合成。

下面介紹的其他插件中有支持直接合成logo的,有興趣的同學可以研究下。


其他插件介紹:

wxbarcode——支持微信小程序,支付寶小程使用須改造,詳見博文:https://www.cnblogs.com/xyyt/p/12512687.html

適用場景:同時展示二維碼、條形碼。

使用方式:引用js

插件地址:https://www.npmjs.com/package/wxbarcode。

主要代碼結構如下:

建議將utils文件夾提出來直接用,這樣方便在微信、支付寶小程序之間進行移植。

優點:同時包含二維碼、條形碼,亦可單獨使用|支付寶可用(改造調用封裝函數);

缺點:不支持容錯率|微信小程序不支持組件中調用,支付寶小程序可以(經驗證,微信小程序中使用該插件,將canvas放組件中不顯示二維碼)|暫時還沒找到對應的h5插件。
-----------------------------------------------------------------
weapp-qrcode—— 支持微信小程序
使用方式:引用js

插件地址:https://www.npmjs.com/package/weapp-qrcode

優點:支持容錯率|支持logo圖片|支持回調函數|支持調整二維碼計算模式(typeNumber為3時同weapp-qrcode-base64)

缺點:華為v10出現間隔性不顯示的問題(兩個頁面之間切換,有時候不顯示二維碼

-----------------------------------------------------------------

node-qrcode-npm——支持支付寶小程序、h5:

插件地址:https://www.npmjs.com/package/qrcode

使用方式:npm安裝

優點:支持容錯率|支持回調函數|H5/支付寶小程序通用

缺點:微信小程序不支持(插件使用了node 的 buffer,微信小程序不支持)

--------------------------H5插件----------------------------------

jsbarcode——支持H5:

插件地址:https://www.npmjs.com/package/qrcodejs2

使用方式:npm安裝

優點:支持多種編碼格式|支持多種調用方式|支持設置顏色|支持顯示券碼|支持img/canvas/svg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM