這兩天作微信公衆號消息推送的時候,遇到了幾個問題,在此記錄下緣由和解決辦法,但願能幫助你們。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個自定義模板,數量太少,還要審覈,騰訊給的理由是防止營銷和亂添加致使模板庫混亂,但問題是,不少的新產品業務線,須要發送的模板消息模板庫里根本就沒有!就算有相近的,也不能本身靈活修改和擴展,只能按照指定的模板傳參,這樣靈活性太差!