一、消息推送配置
1、解析失敗、請檢查信息是否填寫正確
服務器地址中不能使用其他的端口號,把端口號去掉,默認就是走80或443端口,另外這個地址需要外網訪問,我使用了nat123映射了80端口,這個工具需要一點點小費
2、請求超時,請檢查信息是否填寫正確
這個一般是由於后端CheckSignature方法里 經過SHA1加密的字符tmpStr和signature不匹配導致的,一開始我使用 if( tmpStr==signature ) return true; 其實應該使用 if( tmpStr.Equals(signature, StringComparison.OrdinalIgnoreCase) ),SHA1加密以后返回的字符是大寫的
3、Token校驗失敗,請檢查確認
這個一般是由於后端接口返回的數據類型不對,大多數接口都會封裝一個ApiResutModel用來統一返回類似於 { code:200, msg:"",data:{} } 的結果,但是消息推送配置里只能接受純文本,因此修改為 HttpContext.Response.WriteAsync(echostr);
二、消息推送
1、invalid openid rid: 5f5f0b66-3e0db526-555e7b82 無效的openid
這個一般由於后端請求subscribeMessage.send接口時傳遞的json格式錯誤,要不就是key順序問題,要不就是key首字符大寫的問題,一般后端定義的請求模型首字母都是大寫,而小程序接口需要的json必須全部小寫
2、{ "errcode":43101,"errmsg":"user refuse to accept the msg hint: [EW7iIa04390500]" } 用戶拒絕接受消息
當前端使用wx.requestSubscribeMessage已經成功授權后還提示上面的錯誤,一般是由於后端配置的模板id和小程序的模板id不匹配導致的
3、{"errcode":47003,"errmsg":"argument invalid! data.date4.value invalid rid: 5f4084e5-7924012e-20ad3837"}
如果消息模板中定義了date,那么日期是不能包含時間的,在C#中使用DateTime.Now.ToShortDateString()截取年月日