这两天作微信公众号消息推送的时候,遇到了几个问题,在此记录下缘由和解决办法,但愿能帮助你们。redis
一、{"errcode":40037,"errmsg":"invalid template_id hint: [2ZVwjA0418ge29]"}微信
这个错误码微信API文档里没有提到,可是看错误消息,知道是template_id设置不正确,觉得是拷贝错了,因而又跑到模板消息里去核对,发现没问题,后面到网上搜,才发现template_id是正式环境的模板消息id,若是要测试,必需要测试公众号添加模板消息,再 用对应的template_id才能够。但是咱们的测试公众号还在审核中,还不能添加模板消息,只能用正式环境公众号测,因此把运行环境改为由测试环境改为线上环境来测。本觉得这样就好了,结果改了之后发现还不行,一步步debug,发现微信加载的配置信息读取的是测试环境的配置信息,这也会报这个错,真是一波3折。改了后,又报了第2个错。测试
二、{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [5bi46a00433401!]"}spa
这个缘由是access_token错误,因而又debug,发现这个token是从redis里取的,而咱们的redis是测试环境,因此这个token天然也取不到,因而从线上redis中把值copy过来。一测又不行,仍是报这个错。见鬼了!转念一想,好像线上环境的redis是有有效期的,会不会是这个缘由?跑到线上从新看了下,果真不同!还有这么巧的事!只能再copy最新的值了。debug
三、{"errcode":40003,"errmsg":"invalid openid hint: [FqjboA0554ge29]"}code
真的是一步一个坑,上面2个问题解决了,这个问题又冒出来了,我用的open_id是客户端同事给的open_id,在咱们测试库里也有这个帐号,想着应该没问题啊,怎么会报这个错呢,又到网上搜答案,发现原来是这个open_id没绑定咱们的公众号,因此接收不到发送的消息,因而焕然大悟,找客户端同事确认后发现确实如此,因而又找客户端要了个绑定了的open_id,再运行测试demo,终于发现返回成功了,欣喜!token
今天测试的时候,发现还有个缘由也会报这个错:就是token错误的时候,测试用的是正式的微信公众号,可是仍是在测试环境,因此测试环境的token须要随时与线上的token同步,同步后就能收到推送消息了,只不过这错误提示就有点牛头不对马嘴了。开发
感想:因为之前没作过微信公众号开发,对模板消息的开发流程也不了解,这也是此次踩了这么多坑的缘由,好在还比较顺利的解决了,下午能够提测了!另外吐槽下腾讯模板消息开发的几个小问题:文档
一、官方文档竟然errorCode都不完整,这让你们怎么取找问题?熟悉的人可能还好,不熟悉的的都不知道从何下手同步
二、模板消息库,每月只能添加3个自定义模板,数量太少,还要审核,腾讯给的理由是防止营销和乱添加致使模板库混乱,但问题是,不少的新产品业务线,须要发送的模板消息模板库里根本就没有!就算有相近的,也不能本身灵活修改和扩展,只能按照指定的模板传参,这样灵活性太差!