在我们的业务需求中会遇到,获取进入小程序指定页面的二维码(包括四方形的二维码 和 小程序码),微信提供了获取小程序二维码的接口,通过这个接口,拼接参数可以获取到指定页面的二维码,用户扫码后会进入参数设定的页面。
接下来,我们以生成商品详情页(pages/goods/detail
)二维码为例进行说明
准备工作
- 获取小程序的
AppID
和AppSecret
参数
进入小程序后台,点击左侧「开发」,找到「开发设置」,我们就能找到 AppID
(小程序ID) 和 AppSecret
(小程序密钥) 。AppSecret
是不展示出来的,点击「获取」或「重置」,扫码之后,网页就会显示新的 AppSecret
,需要我们在本地保存一下,因为再次登录进来AppSecret
是不展示出来的。
- 小程序的
app.json
文件中已经注册了需要生成的页面
本例中小程序的app.json
文件中,已经注册了商品详情页(pages/goods/detail
)
1 | "pages":[ |
当然,相应目录下也需要有相应的页面文件,且你的小程序已经有已发布的线上版本。否则,用户扫码后,微信会提示出错。
获取access_token
因为在后面获取二维码的部分会用到,所以我们首先要利用 AppID
和 AppSecret
获取到 access_token
请求地址:
1 | GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET |
请求参数:
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
grant_type | string | 是 | 填写 client_credential | |
appid | string | 是 | 小程序唯一凭证,即 AppID | |
secret | string | 是 | 小程序唯一凭证密钥,即 AppSecret |
从结果中,我们可以得知:执行这个操作后,微信会给你返回一个 JSON 数据包。解析这个数据包,我们就可以获得 access_token
获取二维码
微信提供了两个 POST 获取小程序二维码的接口。你可以根据你的业务需求,自由选择任一接口,获取相应的小程序二维码。
获取小程序码
参考文档:wxacode.get
请求地址:
1 | POST https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN |
请求参数:
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
access_token | string | 是 | 接口调用凭证 | |
path | string | 是 | 扫码进入的小程序页面路径,最大长度 128 字节,不能为空;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 “?foo=bar”,即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:”bar”}。 | |
width | number | 430 | 否 | 二维码的宽度,单位 px。最小 280px,最大 1280px |
auto_color | boolean | false | 否 | 自动配置线条颜色,如果颜色依然是黑色,则说明不建议配置主色调 |
line_color | Object | {“r”:0,”g”:0,”b”:0} | 否 | auto_color 为 false 时生效,使用 rgb 设置颜色 例如 {“r”:”xxx”,”g”:”xxx”,”b”:”xxx”} 十进制表示 |
is_hyaline | boolean | false | 否 | 是否需要透明底色,为 true 时,生成透明底色的小程序码 |
返回值:
Buffer(返回的图片 Buffer)
获取普通二维码
参考文档:wxacode.createQRCode
请求地址:
1 | POST https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN |
请求参数:
属性 | 类型 | 默认值 | 必填 | 说明 |
---|---|---|---|---|
access_token | string | 是 | 接口调用凭证 | |
path | string | 是 | 扫码进入的小程序页面路径,最大长度 128 字节,不能为空;对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 “?foo=bar”,即可在 wx.getLaunchOptionsSync 接口中的 query 参数获取到 {foo:”bar”}。 | |
width | number | 430 | 否 | 二维码的宽度,单位 px。最小 280px,最大 1280px |
返回值:
Buffer(返回的图片 Buffer)