微信小程序消息配置问题汇总

一、消息推送配置

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()截取年月日