前言
在小程序中,我們通過canvas繪制圖片并分享到朋友圈中,但是我們怎么才能在繪制的小程序碼上帶參數(shù)呢?如下圖:

動(dòng)態(tài)生成小程序碼.jpg
這里我們需要帶著參數(shù)去生成新的小程序碼(通過后臺(tái)接口可以獲取小程序任意頁面的小程序碼)
場景
官方提供了生成小程序碼的幾種方式:
- 接口 A: 適用于需要的碼數(shù)量較少的業(yè)務(wù)場景
- 接口 B:適用于需要的碼數(shù)量極多的業(yè)務(wù)場景(常用,本文就是用的此接口)
- 接口 C:適用于需要的碼數(shù)量較少的業(yè)務(wù)場景
- 接口 D:適用于“一物一碼”的業(yè)務(wù)場景
生成小程序碼
page是頁面地址,例如:'pages/index/index'。pages前面不能有斜杠
scene是參數(shù),為字符串。比如要傳入id=33,那么scene參數(shù)就可以寫成"33",多個(gè)參數(shù)以&分開,如第二個(gè)參數(shù)是code=44,則是"33&44"。
Page({
onLoad(options) {
this.getCode();
},
getCode() { //獲取動(dòng)態(tài)小程序碼
wx.request({
url: 'url', //后端接口
method: 'POST',
dataType: 'json',
data: {
page: "pages/index/index",
scene: "33&44"
},
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: res => {
//后端返回的小程序碼服務(wù)器地址(默認(rèn)是二進(jìn)制圖片,我這里是后端處理過了)
console.log(res);
//此處是將小程序碼下載到本地,用于canvas繪圖(ps:網(wǎng)絡(luò)圖片一定要先下載到本地)
wx.downloadFile({
url: res.data.data, //上方返回的服務(wù)器小程序碼地址
success: res1 => {
if (res1.statusCode === 200) {
//下載成功,我這里是執(zhí)行的canvas繪圖方法(canvas繪圖可看下篇文章)
this.canvasPoster(res1);
}
}
});
}
});
}
})
獲取參數(shù)
Page({
onLoad (options) {
//需要使用 decodeURIComponent 才能獲取到生成二維碼時(shí)傳入的 scene
let scene = decodeURIComponent(options.scene);
let id = scene.split("&")[0];
let code = scene.split('&')[1];
}
})