请教下微信扫码支付过期问题

  • time_expire默认时间2小时
  • 关闭订单最短调用时间间隔为5分钟

调用微信Native扫码支付,如果将time_expire设置为1小时,是不是要把第一次下单返回的code_url存储起来,当前下单不支付后面再支付的时候去取第一次存储的code_url,超过1小时的订单就可以调用关闭订单接口,再重新请求下单,返回新的code_url。请教下业务上是不是这样处理比较妥当?

阅读 4.6k
1 个回答

很多人对那个 time_expire 参数有点儿误解,其实它不是指订单过了这个时间后如果用户还没支付就自动关闭了,而是指多长时间之内可以重复用同一个商户订单号(out_trade_no)重复调接口。(这也确实是微信的锅,写的那文档鬼能看明白)

实际上微信支付并没有“一段时间后如果用户还没支付订单就自动关闭了”这个设定,这个设定需要开发者自己去实现。

P.S. 不止下单接口,包括转账啊、红包啊很多接口,是允许同一个商户订单号重入的。甚至转账到零钱这种接口时官方会建议你出现 SYSTEM_ERROR 时必须使用同样的商户订单号重入,以免因系统抖动出现重复转账的问题。

image.png


Native 支付的那个 code_url 有效期是固定的,就是 2 个小时,2 个小时内只要用户不付款,就可以反复扫码调起支付。

至于要不要缓存这个 code_url,看你们业务需要了。一般来说你看电商网站之类的,每个订单在提交之后都是有一个倒计时的,倒计时之内其实拿到到的支付参数都是一样的,不需要重复请求微信 API。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进