由于项目的支付模块是前同事写的,最近经常遇到access_token失效。
所以怀疑是支付模块和现在的业务没有共用access_token造成的。
阅读了下微信支付的文档,在下眼拙,没有找到哪儿用到了access_token。
望大虾们告知!
首先微信支付有四种方式:刷卡支付、公众号支付、扫码支付、APP支付。
https://pay.weixin.qq.com/wiki/doc/api/index.html
由于涉及到access_token,题主应该是公众号支付。
公众号支付后端代码包含两块:请求微信服务器创建订单、微信服务器支付成功回调,这两快的业务都用不到access_token。
再看前端,微信公众号内嵌HTML5前端支付有两套API:
1、https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_7&index=6
2、http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82
如果你用的是1,那么也用不到access_token。
如果用的是2,那么首先要调用wx.config:
http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html#.E6.AD.A5.E9.AA.A4.E4.B8.89.EF.BC.9A.E9.80.9A.E8.BF.87config.E6.8E.A5.E5.8F.A3.E6.B3.A8.E5.85.A5.E6.9D.83.E9.99.90.E9.AA.8C.E8.AF.81.E9.85.8D.E7.BD.AE
其中有一个参数是signature,再看signature是如何生成的:
http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95
其中有一项是jsapi_ticket,jsapi_ticket要通过access_token获取。
所以的确有可能用到access_token。
调用下单api,生成调用jsapi的参数都需要用到。
多处缓存,或者过期时间没有处理好。