Appearance
问题现象
用户在小程序下单、支付或进行业务操作后,微信服务通知中没有收到对应的小程序订阅消息提醒。
根本原因与排查步骤
微信小程序订阅消息遵循 “一次性订阅” 规则,必须在前端由用户主动点击触发授权弹窗并同意接收后,后端才能下发一次通知。
检查用户是否在小程序端触发并同意了授权弹窗
- 微信机制要求:小程序订阅消息必须在用户产生交互动作(如点击“提交订单”、“立即支付”)时拉起微信原生授权弹窗。
- 排查:确认用户在操作过程中是否弹出了授权确认窗口,并勾选了“允许”接收通知。若用户点击了“拒绝”或在微信设置中关闭了该小程序的通知权限,后端将无法下发消息。
检查后台模板消息 ID 是否已同步
- 登录平台总后台 -> 【设置】 -> 【消息管理】(或订阅消息)。
- 查看关键业务通知(如支付成功通知、发货通知、账单提醒)对应的“模板ID”是否为空。
- 若为空,点击页面顶部的 【同步小程序订阅消息】 重新从微信公众平台拉取模板 ID 并保存。
清理小程序端本地缓存
- 原因:小程序前端在首次加载时会将后端配置的订阅模板 ID 列表缓存到本地。若后台更新或重新同步了模板 ID,前端若未及时刷新缓存,会使用旧的模板 ID 拉起授权,导致微信鉴权失败。
- 解决:在微信中下拉小程序任务栏,长按拖动删除该小程序以彻底清理本地缓存,重新搜索进入小程序测试。
检查微信下发日志
查看后端 runtime/log/ 日志,搜索 subscribeMessage 或 send,查看微信接口返回的 errcode:
errcode: 43101:用户拒绝接收该模板消息或未授权。errcode: 40037:template_id 不正确或已被删除。errcode: 41030:模板消息中的参数格式与微信后台字段定义不匹配(如字符超出长度限制或时间格式错误)。