这篇东西是为了记录我生成微信小程序码的过程。
编写这篇文章的时间是2023年8月21日,如果查看此文章的时间距离编写时间过长,官方接口可能已经升级迭代,请参考官方文档。
什么是小程序码
顾名思义,小程序码就是微信小程序官方提供的满足不同使用场景的二维码,通过扫描二维码可以快速打开小程序并跳转到小程序码指定的页面中。在页面中也可以获取到二维码中携带的参数信息,从而进一步满足千奇百怪的使用场景。
官方解释如下:
通过后台接口可以获取小程序任意页面的小程序码,扫描该小程序码可以直接进入小程序对应的页面,所有生成的小程序码永久有效,可放心使用。 我们推荐生成并使用小程序码,它具有更好的辨识度,且拥有展示“公众号关注组件”等高级能力。
小程序码有哪几种
微信一共提供了四个接口分别用来获取四种不同的小程序码。
接口A:生成小程序码(数量有限)
适用于需要的码数量较少的业务场景。
数量有限,最多可以生成 100000(十万)个。
可以接受的path参数较长,最长为1024,基本与通常的浏览器的 get 请求的 URL 长度相当
可以满足大部分需要生成二维码数量较少但是需要携带大量参数的业务应用场景。
接口B:生成小程序码(数量无限)
适用于需要的码数量极多的业务场景
数量没有上限,但是接口的调用频次有上限,调用频次上限为:5000/分钟,如果需要超大量的二维码,官方给出的建议是预生成
调用此接口如果需要携带参数的话,是通过scene(场景)参数来传递的,用户在扫码之后,在小程序或者小游戏中可以在页面加载的过程中通过 onload 接受 scene 中携带的参数。
但是 scene 中可以携带的字符的数量是有限制的,最大不能超过 32 个字符,并且只支持数字、大小写字母以及部分特殊字符(!#$&'()*+,/:;=?@-._~)
注意,scene 虽然支持特殊字符,但是不支持 %,所以不支持传递中文(官方注释:因不支持%,中文无法使用 urlencode 处理,请使用其他编码方式)。
这种情况下,我们就不得不根据自身的业务设计一套适用于微信规则的业务出来了,仁者见仁智者见智吧。
接口C:获取小程序二维码
其实官方并不推荐使用此接口。
我看了一下文档,在文档中写明此接口的传递参数的path中最多支持 128 字节的字符长度,而接口A可以传递的参数的长度为1024,让我我也不用此接口。
除了支持的参数长度非常短之后,此接口可以生成二维码的数量也是限制最多可以生成 100000(十万)个。
不过需要特别注意的是:接口A和接口C都写明可以生成十万个二维码,但是这十万个二维码的名额数量是接口A和接口C共用的
接口D:获取小程序码(一物一码)
这里以后补充,我现在没有业务场景能够用到,也就没有申请资质,所以没有深究。