这是我们工作过程中的经验总结,现在分享给大家
说明:生成能打开小程序的二维码分为两种:1. 服务端调用接口生成;2. 前端生成二维码
一、服务端调用接口生成
- https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN
适用于需要的码数量较少的业务场景
生成小程序码,可接受 path 参数较长。 永久有效,可生成的码数量限制为 100,000 - https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN
适用于需要的码数量极多的业务场景。
可接受页面参数较短,生成个数不受限。 永久有效,数量暂无限制
调用分钟频率受限(5000次/分钟) ,如需大量小程序码,预生成 - https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN
适用于需要的码数量较少的业务场景。
生成二维码,可接受 path 参数较长。 生成个数受限,可生成的码数量限制为 100,000
在小程序中接受参数方式:page onLoad函数中接受
Page({
onLoad(query) {
// 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
const scene = decodeURIComponent(query.scene)
}
})
二、前端生成二维码
操作步骤:
1. 在小程序后台(mp.weixin.qq.com)配置链接
https://mp.weixin.qq.com/wxopen/devprofile?action=get_profile&token=1318106189&lang=zh_CN
2. 点击添加:
3. 添加完成后点击上线
4. 在JS中用第三方库将拼接好的URL(比如: https://xxxxx/homeindex?orderId=123)生成二维码
小程序获取二维码中携带的参数:
app.js的 onshow/onLoad函数中获取参数,options.query.q是生成二维码的完成URL,后截取URL获取相应参数
if (!!options.query && !!options.query.q) {
let url = decodeURIComponent(options.query.q)
if (url.indexOf('orderId') > -1) {
let index = url.slice(url.indexOf('orderId'))
if (index.indexOf('&') > -1) {
let orderObj = index.slice(0, index.indexOf('&'))
this.globalData.orderId = orderObj.split('=')[1]
} else {
this.globalData.orderId = index.split('=')[1]
}
}
}