小程序生成指定页面二维码

在我们的业务需求中会遇到,获取进入小程序指定页面的二维码(包括四方形的二维码 和 小程序码),微信提供了获取小程序二维码的接口,通过这个接口,拼接参数可以获取到指定页面的二维码,用户扫码后会进入参数设定的页面。

接下来,我们以生成商品详情页(pages/goods/detail)二维码为例进行说明

准备工作

  1. 获取小程序的 AppIDAppSecret参数

进入小程序后台,点击左侧「开发」,找到「开发设置」,我们就能找到 AppID(小程序ID) 和 AppSecret(小程序密钥) 。AppSecret是不展示出来的,点击「获取」或「重置」,扫码之后,网页就会显示新的 AppSecret,需要我们在本地保存一下,因为再次登录进来AppSecret是不展示出来的。

  1. 小程序的app.json文件中已经注册了需要生成的页面

本例中小程序的app.json文件中,已经注册了商品详情页(pages/goods/detail

1
2
3
4
5
"pages":[
..........,
"pages/goods/detail"
........
]

当然,相应目录下也需要有相应的页面文件,且你的小程序已经有已发布的线上版本。否则,用户扫码后,微信会提示出错。

获取access_token

因为在后面获取二维码的部分会用到,所以我们首先要利用 AppIDAppSecret获取到 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

获取access_token

从结果中,我们可以得知:执行这个操作后,微信会给你返回一个 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)

获取小程序码实例

获取小程序码实例

坚持原创技术分享,您的支持将鼓励我继续创作!