前端生成微信小程序码
获取 access_token
uni.request({
url: 'https://api.weixin.qq.com/cgi-bin/token',
data: {
grant_type: 'client_credential',
appid: APP_ID,
secret: APP_SECRET,
},
success: (res) => {
console.log(res.data.access_token)
},
})
下面使用的 uni.app 的请求方式,如果不用这种,换一种请求方式就行了
html
<image :src="qrCode" style="width: 380rpx" />
createwxaqrcode
uni.request({
url: `https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=${access_token}`,
method: 'POST',
responseType: 'arraybuffer',
data: {
path: 'pages/index/index?id=123',
width: 380,
},
success: (res) => {
this.qrCode = `data:image/jpg;base64,${uni.arrayBufferToBase64(
res.data
)}`
},
})
getwxacode
uni.request({
url: `https://api.weixin.qq.com/wxa/getwxacode?access_token=${access_token}`,
method: 'POST',
responseType: 'arraybuffer',
data: {
path: 'pages/index/index?id=123',
width: 380,
auto_color: true,
line_color: { r: 219, g: 35, b: 35 },
},
success: (res) => {
this.qrCode = `data:image/png;base64,${uni.arrayBufferToBase64(
res.data
)}`
},
})
getwxacodeunlimit
uni.request({
url: `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${access_token}`,
method: 'POST',
responseType: 'arraybuffer',
data: {
scene: 'id=123',
width: 380,
auto_color: true,
line_color: { r: 219, g: 35, b: 35 },
},
success: (res) => {
this.qrCode = `data:image/png;base64,${uni.arrayBufferToBase64(
res.data
)}`
},
})
接口 | 特点 | 次数 | 是否必须发布 | 限制 |
---|
/cgi-bin/wxaapp/createwxaqrcode | 需要的码数量较少 | 共 10w 次 | 否(开发版) | url 最大长度 128 字节 | /wxa/getwxacode | 需要的码数量较少 | 共 10w 次 | 是 | url 最大长度 128 字节 | /wxa/getwxacodeunlimit | 需要的码数量极多 | 暂无限制 | 是 | 通过 scene 传参(最大支持 32 个可见字符) |
获取小程序码(一物一码)
一物一码
保存小程序码(app端使用)
saveXcxQrFn() {
let dataTime = new Date().getTime()
let count = 666
let num = Math.floor(Math.random() * count)
let randomNumber = dataTime + '' + num
let base64 = this.xcxQrCode.replace(/^data:image\/\w+;base64,/, '')
let bitmap = new plus.nativeObj.Bitmap('bmp')
bitmap.loadBase64Data(
this.xcxQrCode,
() => {
let filePath = `_doc/uniapp_temp_${randomNumber}/canvas/${randomNumber}.png`
bitmap.save(
filePath,
{
overwrite: true,
format: 'png',
quality: 100,
},
() => {
uni.saveImageToPhotosAlbum({
filePath,
success: () => {
uni.showToast({
title: '保存成功,请到相册查看',
icon: 'none',
})
},
fail: () => {
uni.showToast({
title: '保存失败,请稍后重试',
icon: 'none',
})
},
complete: () => {
bitmap.clear()
},
})
},
() => {
uni.showToast({
title: '保存失败,请稍后重试',
icon: 'none',
})
bitmap.clear()
}
)
},
(e) => {
uni.showToast({
title: '保存失败,请稍后重试',
icon: 'none',
})
bitmap.clear()
}
)
}
|