对于退款/拒付这类逆向订单操作需要创建新的单号么

一、问题背景

这两天被问了这么一个问题,所以才开启了这个话题。问题如下:

支付中心一般都是由交易系统和支付系统两大系统构成,其中交易系统主要是处理跟商户或用户的请求,创建相关订单并发起支付,支付系统主要是处理跟支付通道的对接,将支付请求转给支付通道并处理响应。正常用户发起支付请求,交易系统创建交易订单,给到支付系统,支付系统创建支付单,并记录跟交易订单的关系,给到支付通道。但是如果遇到退款或者拒付的情况,想问一下,对于这种逆向订单,交易系统和支付系统还要创建新的逆向单号么

 

二、问题解决

1. 正向支付(正常支付流程)

  • 交易系统

    • 面向商户和用户,负责生成业务层面的 交易订单号(Trade Order ID),一般是平台唯一订单标识。

    • 订单状态:待支付、支付中、支付成功、支付失败。

    • 主要职责:记录交易请求、订单金额、商品、商户信息。

  • 支付系统

    • 面向支付通道(银行、Google Pay、Apple Pay、银联等)。

    • 负责生成 支付单号(Payment ID),与交易订单一一或一对多关联。

    • 订单状态:已受理、支付中、成功、失败。

    • 主要职责:处理支付路由、下发支付请求、接收通道回调、通知交易系统。

正向链路举例
用户下单 → 交易系统生成交易单 T202509090001 → 请求支付系统 → 支付系统生成支付单 P202509090001 → 调用 Google Pay / Apple Pay → 通道返回结果 → 支付系统更新支付单 → 交易系统更新交易单。


2. 逆向订单(退款 / 拒付场景)

为什么需要新的逆向单号?

  • 审计 & 幂等性:退款/拒付不是简单修改原单状态,而是一个新的资金流向,必须有独立编号。

  • 对账:正向支付与逆向交易需要分开记录,以便资金对账清晰。

  • 风控:拒付、退款可能原因复杂(欺诈、用户发起、银行撤销等),单独单号便于跟踪溯源。

  • 通道要求:支付通道(如银行、Google、Apple)通常要求每笔退款/拒付有唯一的 Refund ID/Dispute ID,不能直接复用支付单号。


3. 逆向订单在系统中的处理

  • 交易系统

    • 会生成 退款单号 / 拒付单号(Trade Refund ID)。

    • 与原始交易订单关联(例如 T202509090001-R01 表示交易单 T202509090001 的第一次退款)。

    • 状态:退款申请中、退款中、退款成功、退款失败;拒付处理中、拒付成功、拒付失败。

  • 支付系统

    • 同样需要生成 支付退款单 / 支付拒付单(Payment Refund ID / Payment Dispute ID)。

    • 与支付单绑定(例如 P202509090001-R01)。

    • 状态:受理、处理中、成功、失败。

    • 记录与支付通道(如 Google Pay API、Apple Pay API)的交互流水号(Refund Txn ID / Chargeback ID)。


4. Google Pay 的处理逻辑

  • Google Pay 本身并不直接做资金清算,而是作为 代扣渠道

  • 商户集成 Google Pay API 后,实际交易和退款要通过 网关/收单行/处理器

  • 对退款:

    • 商户系统必须生成 Refund ID 并调用收单行的退款 API;

    • Google Pay 只会作为支付授权入口,退款状态依赖收单行返回;

    • 退款单号在 交易系统和支付系统都需要单独记录,因为对账和风控都要追溯。


5. Apple Pay 的处理逻辑

  • Apple Pay 类似,它是 支付凭证(Tokenized Card)提供方,不做清算。

  • 商户发起退款时:

    • 必须生成 Refund ID,调用网关/收单行的退款接口;

    • Apple Pay 不会帮你生成退款单,商户/支付系统必须自行生成并追踪;

    • 对于拒付(chargeback),通常由发卡行触发,商户会收到异议单(Dispute/Chargeback ID),需要在支付系统和交易系统中挂载独立单号处理。


6. 设计对比总结

系统角色正向支付(订单/支付单)逆向交易(退款/拒付单)
交易系统 生成交易订单号(Trade Order ID)
记录商品/金额/商户信息
生成退款单号 / 拒付单号(Trade Refund/Dispute ID)
关联原交易单,追踪用户维度请求
支付系统 生成支付单号(Payment ID)
与交易单对应,调通道
生成退款/拒付支付单号(Payment Refund/Dispute ID)
与原支付单对应,调通道退款接口
Google Pay 提供支付授权 & Token,商户生成支付单 不生成退款单,商户需生成退款单号并调收单行退款 API
Apple Pay 提供支付 Token,商户生成支付单 不生成退款单,商户需生成退款单号并调网关/收单行退款 API

结论
无论是退款还是拒付,交易系统和支付系统都需要生成新的逆向单号,分别记录在交易层和支付层。

    • 交易系统:关注业务维度、用户/商户可见。

    • 支付系统:关注资金维度、通道可见。

    • Google Pay / Apple Pay:本身不管理逆向单,依赖商户/支付中心自行生成并与收单行交互。

 

posted @ 2025-09-10 17:05  Boblim  阅读(75)  评论(0)    收藏  举报