发送模版消息返回40001,但是消息又发送成功了
发布于 6 年前 作者 phe 2892 次浏览 来自 问答
  • 当前 业务逻辑

我们现在的发送微信模版消息的逻辑是,在发送模版消息前从缓存中取token,然后发送,当微信返回的状态码为40001时,我们就会刷新当前的token,然后业务再次请求发送短信模版

  • 当前bug:

微信返回的是40001,但是用户却收到了两条短信模版,根据日志,一条发送的errorcode为 40001,一条为 0

第一条 返回:data:"{\errcode\:40001,\errmsg\:\invalid credential, access_token is invalid or not latest hint: [e0800hb19!]\}

第二条返回:{data:"{\errcode\:0,\errmsg\:\ok\}"

  • 有哪位能提供一些好的思路或解决方案么?
3 回复

第一条 返回:"data":"{\"errcode\":40001,\"errmsg\":\"invalid credential, access_token is invalid or not latest hint: [e0800hb19!]\"}=>在这个的时候也会下发通知吗?

我们批量推送模板消息的时候也遇到这个问题,推动80条消息,分了8次才推完,大部分都会报40001错,但是重新推送又正常了,并不是access_token真的过期了,但是我们好像没有遇到报40001还能收到的问题,所以我们的解决方案是,当报40001的时候,不管access_token有没有过期,都重新获取一次,然后再次推送,如果报40001用户还能收到,那真就无解了,因为无法判断用户到底有没有收到

access_token频繁失效真是个大坑,不止推送模板消息的接口,其他接口也会出现,然而微信并没有给出明确的说法,唯一的解决方案就是刷新access_token再重新调用接口

这个问题刚入坑真的头大,一上线就懵了,排查了许久。

回到顶部