付款后取消,是逆向链路里难度陡升的分水岭。 钱已经打出去了,要撤销这笔合同,就必须把钱还回来。 而退款,发生在支付域,不在交易域——这就引出了「双轨并行」的核心设计。
支付前取消,只需要回补创单时的资产操作,没有资金流动。
付款后取消,必须同时完成:
CANCELLED)这三件事,不能捆绑在一次调用里同步完成——退款是异步的(支付机构需要处理时间),而关单必须等退款完成后才能触发。
于是,这条链路天然拆成两条并行轨道:

两条轨道的唯一交汇点:退款单。关单轨道在执行前,必须确认退款单已经被支付域受理,否则不允许推进。
原则:所有退款入口收口在交易域。
无论是买家申请售后、客服取消、风控砍单,退款请求最终都由交易域统一向支付域发起。售后域、履约域都不能绕过交易域直接调用支付域的退款接口。
交易域在向支付域发起退款请求前,先在本地创建退款单(RefundOrder):
退款单(RefundOrder)
- refundId 退款单 ID
- orderId 关联的主订单
- skuOrderIds[] 本次退款涉及的 SkuOrder 列表
- refundAmount 退款总金额
- priceSnapshot 逆向算价快照(退多少钱、退哪些优惠)
- status PENDING → PROCESSING → SUCCESS / FAILED
- applyTime 申请退款时间
- finishTime 退款完成时间