今天发现的一个坑,大致情况是这样的。
微信开发,都需要获取Access token,而这个Access token根据腾讯的文档,说的是7200秒过期(也就是2小时的时间)。
上图是文档说明。文档链接:微信开放文档
这个是文档结出的样例,文档说的“目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。”也就是说,可能不到7200秒,所以,当初在做系统时为了保障系统的正常运行,也没有使用7200的固定值,而是使用了他返回的这个数值,为了更加妥当,还做了300秒的提前值(5分钟)。
悲剧的是,我都做了提前,仍然出现了问题。通过查看系统日志发现:他居然提前了至少16分钟过期,(他告诉我7200秒过期,我出现问题的时间距离过期还有16分钟之久,重要的是,因为接口使用量小,本周期中只使用了两次,其中一次正常的)。
所以啊,我现在只能在他给的期限内再提前30分钟刷新Access token试试了。
留此文以纪念。
上一篇《Delphi 微信支付接口AEAD_AES_256_GCM解密》有需要的朋友也可以看看哈。
补充说明:
这几天回头再对系统做了检查。发现,坑我的是我自己,检查开发环境日志发现那天开发环境里使用了生产环境的微信配置并对token进行了刷新,所以导致生产环境里的原有token不可使用。误认为是返回的7200不准确。
后来,我实际也对程序进行了容错处理(之前是懒了一点,有容错,但有点简单),当发再token不能使用时,会自动调用刷新token,如果5次不成功,则放弃并预警。