uniapp掃小程序普通二維碼鏈接進入小程序,獲取二維碼鏈接的參數方法不一致問題
微信小程序獲取參數方法?參考文檔:掃普通鏈接二維碼打開小程序 | 微信開放文檔
二維碼內容獲取
在小程序后臺配置二維碼跳轉小程序規則之后即可使用微信(6.5.6及其以上客戶端版本)掃碼打開小程序。
二維碼鏈接內容會以參數?q?的形式帶給頁面,在onLoad事件中提取?q?參數并自行?decodeURIComponent?一次(對于小游戲可使用 wx.getEnterOptionsSync 接口獲取),即可獲取原二維碼的完整內容。同時會附加一個參數 scancode_time(UNIX 時間戳,單位秒),表示用戶掃碼的時間。
Page({onLoad(query){constq=decodeURIComponent(query.q)// 獲取到二維碼原始鏈接內容constscancode_time=parseInt(query.scancode_time)// 獲取用戶掃碼時間 UNIX 時間戳}})
支付寶小程序獲取參數方法 參考文檔:關聯普通二維碼 | 小程序
獲取二維碼碼值請在小程序 app.js 文件的 app() 的 onLaunch() 方法中使用 options.query 獲取,代碼示例如下:
說明:代碼只能獲取二維碼碼值,自定義參數值請自行獲取。
onLaunch(options){my.alert({title:'app onLaunch',content:JSON.stringify(options),success: (res)=>{//成功處理代碼段? ? ? },? ? });//獲取關聯普通二維碼的碼值,放到全局變量qrCode中if(options.query&&options.query.qrCode) {this.qrCode=options.query.qrCode;? ? }? }
參數名描述
path當前路徑。若沒有填寫目標頁面,那么當前路徑為首頁(如下圖);若填寫則返回目標頁面的路徑。
qrCode二維碼碼值。
發布
測試完成后開發者可將二維碼跳轉規則發布上線,發布后掃描所有符合匹配規則的二維碼,將跳轉至指定的小程序頁面。
IDE 調試啟動參數
比如普通二維碼碼值是 http://商戶網站域名?bb=cc&dd=ff
對其做 URLENCODE ,得到 http%3a%2f%2f%e5%95%86%e6%88%b7%e7%bd%91%e7%ab%99%e5%9f%9f%e5%90%8d%3fbb%3dcc%26dd%3dff。
打開 IDE 頂部功能區中的添加編譯模式,選擇自定義編譯。
在之前得到的參數前面加上 “qrCode=” 后填入啟動參數并確認。
在模擬器中進行調試。
注意:支付寶小程序的二維碼鏈接只能通過app.vue頁面里的onLaunch中以參數options.query.qrCode帶進來,不能直接在頁面onLoad里獲取
實際項目運用
if (query.q) { // 掃碼進入微信小程序,微信小程序二維碼鏈接是以參數q傳進來的
let url = decodeURIComponent(query.q) //解碼url
this.serverOrderId = this.$getParams(url, 'serverOrderId')
this.txnType = this.$getParams(url, 'txnType')
} else if (query.serverOrderId) {//正常頁面跳轉
this.serverOrderId = query.serverOrderId
this.query = query
this.txnType = query.txnType
this.inviteRefundUserId = query.inviteRefundUserId //收銀員邀請管理員退款的收銀員userid
} else { //掃碼進入支付寶小程序,// 支付寶小程序的二維碼鏈接只能通過app.vue頁面里的onLaunch中以參數options.query.qrCode帶進來
this.txnType = this.$getParams(this.$store.state.orderDetail_qrcode, 'txnType')
this.serverOrderId = this.$getParams(this.$store.state.orderDetail_qrcode, 'serverOrderId')
}