救救孩子,支付宝支付的关单逻辑简直是不知所谓

64 天前
 phpfpm

简单描述下问题。

我们目前只用到了支付宝的二维码扫码支付这一个产品,会涉及到重试关单的逻辑。

情况 1:正常调用下单,用户扫码可以正常支付

情况 2:正常调用下单,但是用户尚未扫码的时候我们关单,此时用户侧会提示支付失败

以上用户侧体验都符合预期,但是服务端关单和查单接口不正常。

情况 2-服务端-未扫码关单:

如果用户尚未扫码我们就关单,会提示关单失败( 40004 ,交易失败),但是此时用户已经不可交易了。

如果用户扫码触发提醒“支付失败,本笔交易已关闭,请收银员重新收款。”,之后再次关单,会提示关单成功。

用户扫码之前,查询订单,会提示“交易不存在”ACQ.TRADE_NOT_EXIST

用户在扫码之后,查询订单,会提示“等待支付”WAIT_BUYER_PAY

无论是用户扫码之前还是用户扫码之后,我们调用 PreCreate 预下单的接口,都可以正常得到 qrcode 的地址

所以以上情况发生了什么?

一旦我们自身的代码出现任何问题,一个单在用户有访问之前我们就提早关单但是并未记录,无论用户是否扫码我们都不能感知到这个单已经被关了——扫码之前查单提示交易不存在,扫码之后查单提示等待支付;预下单始终是成功的;用户拿到的 qrcode 始终是不能支付的

请问——这合理么?

1117 次点击
所在节点    全球工单系统
1 条回复
Light3
64 天前
这个跟支付宝没什么关系
支付宝只负责收款和告知你收款成功
至于你的什么关单 谁家订单不都是 30 分钟支付等待?
你说的交易不存在 你也说了 是扫码之前 那这种情况你为什么不用异步通知呢?
等待支付更简单 用户在输入密码 这个也可以异步通知来改订单状态

你不会只会调同步接口 循环查订单支付状态吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1146671

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX