微信小程式:小程式碼、小程式二維碼、普通二維碼

weixin_33830216發表於2018-04-27

通過後臺介面可以獲取小程式任意頁面的二維碼,掃描該二維碼可以直接進入小程式對應的頁面。

目前微信支援呼叫微信介面生成兩種二維碼,小程式碼(1),小程式二維碼(2),和用二維碼生成器生成的普通連結二維碼(3),如下所示:


697141-75deb1c9a5345756.png

生成小程式碼和小程式二維碼的具體操作文件寫的很詳細:微信介面獲取二維碼
生成普通連結二維碼,去草料輸入連結生成一個就好,連結規則參考官方文件:掃碼開啟小程式接入指南
下面主要介紹如何獲取二維碼所帶的引數。
值得注意的是,微信介面生成的二維碼和普通連結二維碼掃出來的資料是不一樣的。

1. 微信介面

為滿足不同需求和場景,這裡提供了三個介面,開發者可挑選適合自己的介面。 A介面,生成小程式碼,可接受path引數較長,生成個數受限。 B介面,生成小程式碼,可接受頁面引數較短,生成個數不受限。 C介面,生成二維碼,可接受path引數較長,生成個數受限。

697141-fb95a5d235fc38e6.png
筆者根據微信提供的方式在開發工具上測試了一下:
傳入介面引數:{"path": "pages/user/user?id=1&type=2", "width": 430}
注:pages/user/user 需要在 app.jsonpages 中定義,要寫全,不能寫成pages/user,會報錯
697141-753674070a19ef27.png

//可以再兩個地方拿到引數,根據需要自取
//app.js
onShow(options){
  console.log(options)
}

//pages/user/user.js
onLoad(options){
  console.log(options)
}
697141-49855bbcfe5375f4.png

直接可以通過options.id, options.type拿到資料,並不需要decodeURIComponent處理。(這裡就被坑了)

697141-6be9115006fa2986.png

測試微信介面生成的二維碼時,使用最新的開發工具 自定義編譯條件,以控制檯列印的資料為準。

2. 普通連結二維碼

普通連結二維碼,是指開發者使用工具對網頁連結進行編碼後生成的二維碼。(比如去草料生成一個免費二維碼)

登入微信公眾平臺後臺,開啟 設定 > 開發設定 > 掃普通連結二維碼開啟小程式 > 新增
比如我們新增一個連結規則:https://******.cn/user,然後新增一條測試連結:https://******.cn/user?id=1&type=2(定義連結引數有很多方式,根據規則來就可以了),這裡需要下載校驗檔案,放到指定的目錄下,才能儲存。

697141-6e6e5821282ea764.png
然後去草料生成一個二維碼,用手機微信掃描這個二維碼進入小程式。暫時無法用開發者工具掃描,因為開發者工具只能掃描小程式碼。同樣的

//可以再兩個地方拿到引數,根據需要自取
//app.js
onShow(options){
  console.log(options)
}

//pages/user/user.js
onLoad(options){
  console.log(options)
}

697141-c858a23537efbd02.png

可以看到返回了引數q,自行UrlDecode一次,即可獲取原二維碼的完整連結內容。

// app.js
if (options.query.q){
  var link = decodeURIComponent(options.query.q); // https://******.cn/user?id=1&type=2
  var query= link.split('?')[1]; // id=1&type=2
  var id = query.split('&')[0].split('=')[1]
  var type = query.split('&')[1].split('=')[1]
};

// pages/user/user.js
if (options.q){
  var link = decodeURIComponent(options.q); // https://******.cn/user?id=1&type=2
  var query= link.split('?')[1]; // id=1&type=2
  var id = query.split('&')[0].split('=')[1]
  var type = query.split('&')[1].split('=')[1]
};

感謝瀏覽,歡迎評論指正,轉載請標明出處。

相關文章