曦阳x 阅读(10) 评论(0)

        这两天做微信公众号消息推送的时候,遇到了几个问题,在此记录下原因和解决办法,希望能帮助大家。

        1、{"errcode":40037,"errmsg":"invalid template_id hint: [2ZVwjA0418ge29]"}

            这个错误码微信API文档里没有提到,但是看错误消息,知道是template_id设置不正确,以为是拷贝错了,于是又跑到模板消息里去核对,发现没问题,后面到网上搜,才发现template_id是正式环境的模板消息id,如果要测试,必须要测试公众号添加模板消息,再  用对应的template_id才可以。可是我们的测试公众号还在审核中,还不能添加模板消息,只能用正式环境公众号测,所以把运行环境改成由测试环境改成线上环境来测。本以为这样就行了,结果改了以后发现还不行,一步步debug,发现微信加载的配置信息读取的是测试环境的配置信息,这也会报这个错,真是一波3折。改了后,又报了第2个错。

       2、{"errcode":40001,"errmsg":"invalid credential, access_token is invalid or not latest hint: [5bi46a00433401!]"}

            这个原因是access_token错误,于是又debug,发现这个token是从redis里取的,而我们的redis是测试环境,所以这个token自然也取不到,于是从线上redis中把值copy过来。一测又不行,还是报这个错。见鬼了!转念一想,好像线上环境的redis是有有效期的,会不会是这个原因?跑到线上重新看了下,果然不一样!还有这么巧的事!只能再copy最新的值了。

      3、{"errcode":40003,"errmsg":"invalid openid hint: [FqjboA0554ge29]"}

            真的是一步一个坑,上面2个问题解决了,这个问题又冒出来了,我用的open_id是客户端同事给的open_id,在我们测试库里也有这个账号,想着应该没问题啊,怎么会报这个错呢,又到网上搜答案,发现原来是这个open_id没绑定我们的公众号,所以接收不到发送的消息,于是焕然大悟,找客户端同事确认后发现确实如此,于是又找客户端要了个绑定了的open_id,再运行测试demo,终于发现返回成功了,欣喜!

      感想:由于以前没做过微信公众号开发,对模板消息的开发流程也不了解,这也是这次踩了这么多坑的原因,好在还比较顺利的解决了,下午可以提测了!另外吐槽下腾讯模板消息开发的几个小问题:

          1、官方文档居然errorCode都不完整,这让大家怎么取找问题?熟悉的人可能还好,不熟悉的的都不知道从何下手

          2、模板消息库,每个月只能添加3个自定义模板,数量太少,还要审核,腾讯给的理由是防止营销和乱添加导致模板库混乱,但问题是,很多的新产品业务线,需要发送的模板消息模板库里根本就没有!就算有相近的,也不能自己灵活修改和扩展,只能按照指定的模板传参,这样灵活性太差!