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

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

2024-10-27 NEW个对象

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

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

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


支付成功

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

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

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

对帐机制?

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

已退款

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

支付关闭

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

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

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

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

相关文章

  • 支付中心:调用第三方支付,第三方已经处理成功,但是调用方显示支付失败,是什么原因造成的?

    先说下支付流程: 支付中心调用第三方,第三方将支付结果通过异步的方式返回给支付中心,支付中心做后续的处理。 从流程中来看:

    NEW个对象 2024-10-28

  • 调用第三方接口会遇到那些问题以及解决方案

    调用第三方接口会遇到那些问题以及解决方案? 如果有对接第三方的场景,一般第三方会给你一个文档,文档里包含对接第三方的规则,还有一些接口文档。 根据文档要求进行调用即可,不同的三方接口调用规则可能不一样。

    NEW个对象 2024-10-29

  • 支付中心-业务场景描述

    公司的业务模块分为:订单模块、钱包模块等,后续还会加入其它的模块。 订单模块和钱包模块都需要有支付功能,比如:支付宝和微信支付。 支付宝支付:二维码支付、PC支付、条码支付等等。 微信支付:微信小程序支付、付款码支付、APP支付等等。

    NEW个对象 2024-10-17

推荐文章