微信小程序订阅消息模板 ID 本身没有固定的过期时间,但如果后台模板被删除或服务类目变更,会导致 ID 失效。最推荐的处理方向是登录微信公众平台重新添加模板并更新代码配置,风险边界在于用户需要重新触发订阅授权。
先说结论:模板 ID 失效通常是因为后台配置变更或类目审核问题,需重新获取 ID 并更新代码。
- 适合:订阅消息发送失败报错 invalid template id 或 43100 的场景
- 先准备:微信公众平台账号权限、小程序开发工具、新的模板 ID
- 验收:后台发送测试消息成功且线上日志无报错
快速处理思路
该问题主要通过微信公众平台后台操作解决,无需命令行。第一步登录微信公众平台进入订阅消息栏目,第二步检查现有模板状态或删除失效模板,第三步从模板库重新添加同类模板获取新 ID,第四步在代码配置中替换旧 ID 并重新提交审核或发布。
为什么会这样
模板 ID 失效的核心原因是模板状态与小程序当前资质不匹配。微信小程序订阅消息模板依赖于小程序的服务类目,如果类目审核过期、变更或被取消,关联的模板 ID 会随之不可用。此外,开发者在后台手动删除模板或模板库自身调整也会导致 ID 失效,公开资料中没有看到可靠的量化数据说明模板自动过期时间,通常以后台状态为准。
分步处理
1. 登录微信公众平台,在左侧菜单找到“订阅消息”栏目。
2. 点击“模板库”,根据业务场景搜索关键词,选择与当前服务类目匹配的模板。
3. 点击“选用”,确认关键词格式,生成新的模板 ID。
4. 打开小程序代码项目,全局搜索旧的模板 ID,替换为新 ID。
5. 检查代码中请求订阅授权的接口参数,确保 tid 参数已更新。
6. 保存代码,重新编译上传并发布版本。
怎么验证是否生效
在微信公众平台“订阅消息”页面找到新模板,点击“发送测试消息”,输入测试微信号接收验证。同时在小程序开发工具控制台查看云开发日志或服务器日志,确认 sendSubscribeMessage 接口返回 errCode 为 0。线上环境观察用户订阅后是否收到通知,且无接口报错。
常见坑
1. 类目不匹配:新选用的模板必须属于小程序当前通过审核的服务类目,否则无法选用。
2. 关键词顺序:模板关键词顺序必须与发送消息时的 data 结构严格一致,否则发送失败。
3. 用户授权:更换模板 ID 后,旧的用户订阅记录可能不生效,需引导用户重新点击订阅按钮授权。
4. 缓存问题:部分云开发环境可能缓存旧配置,更新后需清除缓存或重启函数。
常见问题
模板 ID 会自动过期吗?
公开文档未规定固定过期时间,但类目变更或删除会导致失效。
更换 ID 后用户需要重新订阅吗?
需要,订阅关系绑定具体模板 ID,更换后需用户重新授权。
在哪里查看模板 ID 是否可用?
登录微信公众平台,在订阅消息模板列表中查看状态是否为“启用”。
参考来源
1. 微信开放文档 - 订阅消息
URL: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html