帮忙么网 > 支付中心 > 当前页面

订单是否会存在超时了,但是支付成功了的情况?

2024-10-27 NEW个对象

存在,需要进行退款处理。

订单状态:未支付、支付成功、已退款、支付关闭,如果订单超时,不可能更新为支付成功,如果订单成功,也不可能更新为超时。

订单状态流转:未支付 ->  支付成功 -> 已退款,或者 未支付 -> 支付关闭。


支付成功

只有未支付的订单的才能更新成功。
在执行SQL的时候,判断支付状态是否是未支付,如果是更新,否则更新失败,并抛异常人工处理。

为什么要抛异常,而不是自动退款?

1、这种事情是小概率事件。
2、自动退款很危险,如果出现bug,会有损失。
3、会进入退款流程,人工对帐、钱原路返回。

对帐机制?

1、在订单表里有支付额度、冲退额度
2、如果支付成功,设置支付额度。
3、对帐处理:过期订单的支付额度 = 冲退额度,如果不一致则说明订单异常,进行对帐处理,进行退款操作。

已退款

只有支付成功的订单才能退款成功
在执行SQL的时候,判断支付状态是否是已支付,如果是更新,否则就更新失败。

支付关闭

只有未支付的订单的才能更新成功。

1、检查订单的状态是否是已支付,如果是则不更新。
2、调用第三方接口,查询订单状态,如果是退款,则说明缺少支付成功状态,人工补起,如果是成功,则不更新
3、如果以上都不满足,则可以将订单关闭。

在执行SQL的时候,判断支付状态是否是未支付,如果是更新,否则就更新失败。

建议在操作订单数据订单前加分布式锁,避免出现数据异常,以及很多线上问题。

相关文章

  • 支付中心:订单自动过期

    支付中心模块,在生成订单之后,订单在10分钟会自动过期,这个功能是通过定时任务实现的。

    NEW个对象 2024-10-19

  • 订单是否会存在超时了,但是支付成功了的情况?

    存在。订单状态:未支付、支付成功、已退款、支付关闭,如果订单超时,不可能更新为支付成功,如果订单成功,也不可能更新为超时。 订单状态流转:未支付 -> 支付成功 -> 已退款,或者 未支付 -> 支付关闭。

    NEW个对象 2024-10-27

  • 支付中心:数据与第三方不一致该如何处理

    这样的情况是存在。 遇到这样的情况,会通过定时任务进行数据同步。 当然并不是所有数据进行同步,而是同步那些异常数据。

    NEW个对象 2024-10-28

推荐文章