简单描述下问题。
我们目前只用到了支付宝的二维码扫码支付这一个产品,会涉及到重试关单的逻辑。
情况 1:正常调用下单,用户扫码可以正常支付
情况 2:正常调用下单,但是用户尚未扫码的时候我们关单,此时用户侧会提示支付失败
以上用户侧体验都符合预期,但是服务端关单和查单接口不正常。
情况 2-服务端-未扫码关单:
如果用户尚未扫码我们就关单,会提示关单失败( 40004 ,交易失败),但是此时用户已经不可交易了。
如果用户扫码触发提醒“支付失败,本笔交易已关闭,请收银员重新收款。”,之后再次关单,会提示关单成功。
用户扫码之前,查询订单,会提示“交易不存在”ACQ.TRADE_NOT_EXIST
用户在扫码之后,查询订单,会提示“等待支付”WAIT_BUYER_PAY
无论是用户扫码之前还是用户扫码之后,我们调用 PreCreate 预下单的接口,都可以正常得到 qrcode 的地址
所以以上情况发生了什么?
一旦我们自身的代码出现任何问题,一个单在用户有访问之前我们就提早关单但是并未记录,无论用户是否扫码我们都不能感知到这个单已经被关了——扫码之前查单提示交易不存在,扫码之后查单提示等待支付;预下单始终是成功的;用户拿到的 qrcode 始终是不能支付的
请问——这合理么?
![]() |
1
Light3 22 天前
这个跟支付宝没什么关系
支付宝只负责收款和告知你收款成功 至于你的什么关单 谁家订单不都是 30 分钟支付等待? 你说的交易不存在 你也说了 是扫码之前 那这种情况你为什么不用异步通知呢? 等待支付更简单 用户在输入密码 这个也可以异步通知来改订单状态 你不会只会调同步接口 循环查订单支付状态吧? |