一搓侄、生成小程序碼
方案一(服務(wù)端接口,生成小程序碼)
1.服務(wù)端 ?? 調(diào)用 ??微信服務(wù)端 ?? 獲取接口憑證 auth.getAccessToken
入?yún)?/th> | 參考值 | 說明 |
---|---|---|
grant_type | client_credential | 填寫 client_credential |
appid | wx1187xxxxxxxxxe0cb | 小程序唯一憑證话速,即 AppID |
secret | a55dbd5xxxxxxxxc96dd8991f59d | 小程序唯一憑證密鑰讶踪,即 AppSecret |
2.服務(wù)端 ?? 調(diào)用 ?? 微信服務(wù)端 ?? 獲取小程序碼 wxacode.getUnlimited
入?yún)?/th> | 參考值 | 說明 |
---|---|---|
access_token | 步驟1中,返回的接口憑證 | 接口調(diào)用憑證 |
scene | noteId=123&groupId=456&miniShopId=789 | 最大32個(gè)可見字符泊交,只支持?jǐn)?shù)字乳讥,大小寫英文以及部分特殊字符:!#$&'()*+,/:;=?@-._~ ,其它字符請自行編碼為合法字符(因不支持% 廓俭,中文無法使用 urlencode 處理云石,請使用其他編碼方式) |
page | /packageLive/pages/live/live | 參考值必須是已經(jīng)發(fā)布的小程序存在的頁面(否則報(bào)錯(cuò)),例如 pages/index/index , 根路徑前不要填加 / ,不能攜帶參數(shù)(參數(shù)請放在scene字段里)研乒,如果不填寫這個(gè)字段汹忠,默認(rèn)跳主頁面 |
width | 入?yún)?30 | 參考值二維碼的寬度,單位 px雹熬,最小 280px宽菜,最大 1280px |
auto_color | false | 自動(dòng)配置線條顏色 |
line_color | {"r":0,"g":0,"b":0} | 線條顏色 |
is_hyaline | false | 是否需要透明底色 |
3.服務(wù)端 ?? 返回 ?? 客戶端 ??小程序碼URL
特別注意:
- 微信服務(wù)器返回的圖片是 Buffer,需要服務(wù)端處理成 圖片url橄唬。
4.小程序 ?? 用戶打開時(shí)解析 ??攜帶參數(shù) ??跳轉(zhuǎn)
特別注意:
- scene參數(shù)赋焕,由于使用限制最大32個(gè)可見字符,只支持?jǐn)?shù)字仰楚,大小寫英文以及部分特殊字符:!#$&’()*+,/:;=?@-._~,其它字符請自行編碼為合法字符(因不支持%犬庇,中文無法使用 urlencode 處理僧界,請使用其他編碼方式)
- 傳參規(guī)則調(diào)整為: 通過’,’分開(小程序端接收需保持一致)
參考文檔:
草料參數(shù)小程序碼生成器—開發(fā)者使用指南
微信官方文檔—獲取小程序碼
微信官方文檔—服務(wù)端API—生成小程序碼—wxacode.getUnlimited
微信官方文檔—服務(wù)端API—調(diào)用憑證—auth.getAccessToken
方案二(草料模板接口,生成小程序碼)
1.進(jìn)入草料小程序參數(shù)二維碼生成器
2.通過草料后臺(tái)配置模板
3. 通過Chrome抓取接口臭挽,獲取模板id捂襟,跳轉(zhuǎn)固定頁面,攜帶固定參數(shù)(模板與頁面一一對應(yīng))
4. 客戶端 ?? 調(diào)用 ?? 草料服務(wù)端 ?? 生成小程序碼接口(非公開API欢峰,可能會(huì)失效葬荷,存在潛在不可控的風(fēng)險(xiǎn))
5. 草料服務(wù)端 ?? 返回 ?? 客戶端 ?? 小程序碼URL
6.小程序 ?? 用戶打開時(shí)解析 ??攜帶參數(shù) ??跳轉(zhuǎn)
7. 通過 PostMan 測試 https://cli.im/mina/generate_qrcode
接口可用性:
image.png
二、傳遞參數(shù)
客戶端實(shí)現(xiàn):(Weex代碼纽帖,主要是網(wǎng)絡(luò)請求宠漩,Native可以參考)
// 調(diào)用草料模板抓取的接口,通過param_value設(shè)置參數(shù)懊直,進(jìn)行傳遞扒吁,注意順序
data() {
return {
retryCount: 3, // 請求重試次數(shù)
miniCodeImg: '', // 小程序碼圖片地址
noteId: 123, // 參數(shù)1
groupId: 456, // 參數(shù)2
shopId: 789, // 參數(shù)3
};
},
// 獲取小程序碼圖片
getCaoLiaoMiniCode() {
const self = this;
const queryData = {
'tpl_id': '32890',
'code_type': 'wxcode',
'param_value[0]': self.noteId,
'param_value[1]': self.groupId,
'param_value[2]': self.shopId,
};
self.retryCount -= 1;
stream.fetch({
url: 'https://cli.im/mina/generate_qrcode',
body: self.stringifyParams(queryData),
method: 'POST',
type: 'json',
headers: {
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
},
}, (res) => {
if (res.ok) {
const response = res.data;
if (response.code === 1) {
self.miniCodeImg = response.data;
} else if (self.retryCount <= 0) {
shopModal.toast({ message: '小程序碼生成失敗,請重試' });
} else {
// 重試機(jī)制
self.getCaoLiaoMiniCode();
}
}
});
},
三室囊、接收參數(shù)
小程序?qū)崿F(xiàn):
/**
* 生命周期函數(shù)--監(jiān)聽頁面加載
*/
onLoad: function (options) {
const self = this;
// 普通頁面雕崩,參數(shù)接收
var noteId = options.noteId;
var groupId = options.groupId;
var miniShopId = app.globalData.miniShopId || 0;
// 小程序碼魁索,參數(shù)接收
if (options.scene) {
let scene = decodeURIComponent(options.scene);
// 以 ',' 連接參數(shù)的方式實(shí)現(xiàn),(注意入?yún)⒌捻樞颍? noteId = scene.split(",")[0] || 0;
groupId = scene.split(",")[1] || 0;
miniShopId = scene.split(",")[2] || 0;
}
self.setData({
noteId: noteId,
groupId: groupId,
shopId: miniShopId,
});
},