推送模板消息返回无效的 openid,用户明明已经关注。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
# 存储
{ "app": "mp", "openid": "oXxx" }
# 发送前校验应用归属
openid 属于另一个应用,不同公众号或小程序之间不通用。这一点先确认清楚,后面就不用反复试。
「模板消息 40003」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。
能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。
同一份配置存在多处的,先确认改的是被加载的那一份。
具体做法是,确认 openid 来源应用;按应用分别存储标识;必要时用统一标识换取对应 openid。
改完照着核一遍,消息发送成功,用户可正常收到。