微信通知报错:“code”:“40001”
{"code":"40001","message":"invalid credential, access_token is invalid or not latest rid: 6285b05b-6dc11ee1-4a77d5ba"}
这是微信获取token过期引起的
主要的场景包含以下:
1用户1登录微信公众号充值,微信消息回调中redis中的key是由token+openId组成,由于key唯一,导致每个人第一次充值后都有微信通知,但是每个人充值后都会生成自己的key,这个时候机构始终以最新的key作为key,之前的人充值后,再次以原来的key查询回调接数据库表,就会查询不到对应的key,从而导致微信通知失败
2用户2登录微信公众号充值,微信消息回调中redis中的key是由token+openId组成,
这个时候有用户3也使用了用户2的token但是用户2未调用微信回调接口,用户3生成了对应的key后,之后用户2的toeken失效,用户2进行微信回调,这个微信就会返回40001,显示token超时
解决办法:
openID唯一,并且token每次获取的时候都要到数据库中更新所有的token,这样微信充值成功后消息回调,就能在公众号中正常显示。