订单是否会存在超时了,但是支付成功了的情况?
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