小程序码怎么弄出来?生成方式、参数设置和常见报错
小程序码怎么弄出来?生成方式、参数设置和常见报错
小程序码有两种获取方式:一是在小程序管理后台手动获取,适合只需要一两个固定码;二是调用微信官方接口在服务端生成,适合需要为每个商品、每个员工、每个活动生成不同码的场景。 接口生成时,最常用的是 getwxacodeunlimit,它没有数量限制,但参数 scene 最长只能 32 个可见字符,page 页面必须是已经发布的小程序页面,这两点是新手最常踩的坑。
如果你搜索"小程序码怎么弄出来的",下面按后台获取、接口生成、参数设置和报错排查四部分讲清楚。
一、小程序码和二维码的区别
小程序码是微信为小程序设计的专属码,外观是圆形,中间是小程序的头像,用微信扫一扫就能直接打开对应的小程序页面。微信也提供另一种方形的小程序二维码接口,两者用途类似,区别在于:
| 类型 | 外观 | 特点 |
|---|---|---|
| 小程序码 | 圆形,中间是头像 | 官方推荐,可带页面参数,识别率高 |
| 小程序二维码 | 方形二维码样式 | 可带页面路径,数量有限制 |
在实际使用中,多数场景推荐使用圆形的小程序码。
二、方法一:在小程序后台手动获取
适合场景:只需要给小程序做一个"首页入口码",印在名片、宣传单、门店海报上。
操作思路:
- 登录微信公众平台,进入对应小程序的管理后台。
- 在后台的相关工具或推广入口中找到生成小程序码的功能(不同时期后台菜单位置可能调整,以实际页面为准)。
- 选择尺寸,下载图片即可使用。
优点:不需要写代码,立即可用。 局限:只能生成固定的几个码,无法为大量不同的商品、人员、活动逐个生成,也无法在码里携带自定义参数。
三、方法二:通过接口在服务端生成
需要为不同对象生成不同的码,就要使用微信官方接口。接口调用必须放在服务端,因为需要使用 AppSecret 获取 access_token,AppSecret 绝对不能写在小程序前端代码里。
基本流程
- 获取 access_token:服务端使用 AppID 和 AppSecret 调用官方接口,获得调用凭证。access_token 有有效期,需要缓存并定期刷新,不要每次生成码都重新获取。
- 调用生成接口:携带 access_token 和参数,请求微信生成小程序码。
- 接收图片:接口成功时,返回的是图片的二进制数据,服务端保存为文件,或直接返回给前端展示。
- 处理失败情况:失败时返回的是 JSON 格式的错误信息,需要判断返回内容类型,不要把错误信息当图片保存。
三个常用接口的区别
微信提供了三个生成相关的接口,选择哪个取决于你的场景:
| 接口 | 特点 | 适用场景 |
|---|---|---|
| getwxacode | 码的数量有限制,可通过 path 携带完整页面路径和参数 | 数量不多、固定的几个入口 |
| getwxacodeunlimit | 码的数量没有限制,通过 scene 携带参数,scene 最长 32 个可见字符 | 为每个商品、员工、活动生成不同的码 |
| createQRCode | 生成方形小程序二维码,数量有限制 | 需要二维码样式的场景 |
对大多数业务来说,getwxacodeunlimit 是最常用的,因为它不限数量。
四、getwxacodeunlimit 的关键参数
scene:携带自定义参数
scene 用来传递你希望带入小程序的参数,比如商品 ID、员工编号、推荐人编号。需要注意:
- 长度上限为 32 个可见字符。
- 只支持数字、大小写英文字母以及部分符号,不能直接放中文。
- 多个参数需要自己约定分隔格式,比如用特定符号拼接,在小程序里再拆分解析。
- 如果参数较长,不要硬塞进 scene,而是把参数存数据库,scene 里只放一个短编号,扫码后再用这个编号去服务端查完整信息。
page:扫码后进入的页面
page 是扫码后打开的页面路径,使用时有几点要注意:
- 页面必须是已经发布的小程序里存在的页面。 小程序还没有发布上线时,调用接口通常会因为页面不合法而报错。
- 路径开头不要加斜杠,也不要带参数(参数通过 scene 传递)。
- 如果不传,默认进入小程序首页。
- 页面需要在小程序的页面配置里存在。
env_version:指定版本
env_version 用于指定扫码后打开哪个版本的小程序,常见取值有正式版、体验版和开发版。默认是正式版,所以在小程序还没发布时,如果要测试,需要把它设置为体验版或开发版。 这是很多人"码生成了但扫不开"的原因之一。
width:尺寸
可以设置小程序码的宽度,像素值有范围限制,具体以官方文档为准,设置过大或过小都可能报错或影响清晰度。
其他可选参数
- check_path:是否检查 page 是否存在。开发阶段可以关闭,方便在页面还没发布时先生成测试,但正式使用建议保持检查。
- auto_color、line_color:设置线条颜色。
- is_hyaline:是否使用透明底色,方便把码叠加在海报上。
五、小程序里如何接收 scene 参数
用户扫码进入小程序后,参数会放在页面的启动参数里。获取方式是在目标页面的 onLoad 里读取参数中的 scene。
需要特别注意的是:scene 的值是经过 URL 编码的,需要使用 decodeURIComponent 解码后才能得到原始内容。 很多人拿到的是一串带百分号的字符,就是忘了解码。
解码之后,按你约定的格式拆分,比如得到商品编号,再去服务端请求商品详情并展示。
六、常见报错与排查
以下是生成和扫码使用中最常见的几类问题:
1. 生成失败,提示页面不合法
最常见的原因是 page 不存在,或者小程序还没发布。解决方法:
- 确认 page 路径拼写正确,没有多余的斜杠或参数。
- 确认该页面已经包含在已发布的小程序版本里。
- 测试阶段,可以将 check_path 设为不检查,并把 env_version 设置为体验版或开发版。
2. access_token 无效或过期
表现为接口返回凭证相关错误。排查:
- 确认 AppID 和 AppSecret 是否对应同一个小程序。
- access_token 有有效期,需要缓存并按期刷新。
- 多个服务同时获取 token 时,可能互相使旧 token 失效,建议统一由一个服务负责获取和分发。
3. 调用次数超限
不同接口有调用额度限制,批量生成时需要控制频率。建议:
- 对已生成的码做缓存,同一个对象不要重复生成。
- 批量生成时分批、限速调用。
4. 生成的图片打不开
接口失败时返回的是 JSON 错误信息,如果直接当图片保存,就会得到打不开的文件。处理方式:先判断返回内容的类型,是图片才保存,是 JSON 就解析错误信息。
5. 扫码后打不开小程序,或打开的是首页而不是指定页面
排查方向:
- env_version 是否与当前版本匹配。
- page 是否正确,页面是否已发布。
- 扫码的微信账号是否有权限访问体验版或开发版(体验版需要添加为体验成员)。
6. 扫码后拿不到参数
排查方向:
- 确认读取的是 scene,而不是自己在 page 里拼的参数。
- 确认对 scene 做了解码。
- 确认生成时 scene 没有超过长度限制,没有包含不支持的字符。
七、几个实用的设计建议
- scene 用短编号:不要把复杂数据塞进 scene,用短编号配合服务端查询更稳妥。
- 生成后缓存图片:同一个对象的小程序码不会变化,生成后存起来重复使用,既节省额度也提升速度。
- 分环境管理:开发、体验、正式环境使用不同的 env_version,避免测试码被误发出去。
- 印刷前先测试:码一旦印在宣传物料上就无法修改,印刷前要用不同手机、不同微信版本扫一遍。
- 注意清晰度:印刷用途建议生成尺寸较大的码,避免模糊导致扫不出来。
八、常见问题
Q:小程序码会过期吗? A:通过官方接口生成的小程序码,使用上没有有效期问题。但如果对应的页面被删除或小程序下线,扫码会打不开。
Q:小程序码可以改中间的头像吗? A:小程序码中间显示的是小程序本身的头像,可以通过修改小程序头像来变化,但不能单独自定义某一个码的中间图案。
Q:同一个小程序码,能让不同人看到不同内容吗? A:可以。通过 scene 传递不同参数,小程序根据参数展示不同内容,也可以结合用户登录信息展示个性化内容。
Q:没有开发人员,能自己生成带参数的小程序码吗? A:带参数的批量生成需要调用接口,通常需要开发人员或使用已集成该功能的后台系统。
结语
小程序码怎么弄出来,取决于你的需求:只要一个固定入口,后台手动获取最简单;需要为大量对象生成不同的码,就用 getwxacodeunlimit 在服务端调用,同时牢记三个要点:scene 限 32 个可见字符、page 必须是已发布的页面、测试阶段要设置对应的 env_version。
如果你的业务需要给每个商品、门店、员工生成专属的小程序码,并把扫码数据接入后台统计,欢迎联系广州万户网络,我们可以为你设计和开发完整的方案。咨询电话:13535321113。
需要网站建设、软件开发或爬虫定制?
模板建站1280元起,价格公开不加价。电话/微信 13535321113
