当前位置: 首页 > news >正文

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

一、问题背景

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

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

 

二、问题解决

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:本身不管理逆向单,依赖商户/支付中心自行生成并与收单行交互。

 

http://www.wxhsa.cn/company.asp?id=385

相关文章:

  • torch版本应该跟cuda、cudacnn的版本一致
  • 小白如何零成本搭建一个属于自己的私人知识库
  • 安装mysql数据库,从下载到配置的详细教程
  • 根据端口找到进程id
  • 双因子验证网站(aspsms.com/en/registration/)无法注册——Capcha Error
  • MathType7下载安装2025最新下载+安装教程(附安装包)
  • mysql导入数据库,从基础命令到高效技巧
  • 基于“北斗+卫星互联网”的低空飞行服务保障基础设施
  • [BJOI2018] 染色 题解
  • 【完结10章】Java大模型工程能力必修课,LangChain4j 入门到实践
  • CVE-2025-30208 Vite开发服务器任意文件读取漏洞
  • Claude Code 从入门到精通:最全配置指南和工具推荐
  • 故障分析:11GR DATAGRUAD环境BROKER配置Fast-Start Failover
  • Cesium Shader内置变量 czm_*
  • IDA Pro 9.2 发布 - 强大的反汇编程序、反编译器和多功能调试器
  • 传统
  • Java 那些基础又关键的事儿
  • 2025-09-10
  • Codeforces Round 1047 (Div. 3)
  • sentinel-1.8.0 安装
  • 数据结构与算法-27.树-并查集
  • wpf XAML设计器在加载用户控件的时候,提示null引用等直接执行了用户控件里构造函数代码的问题
  • 设计模式-策略
  • Linux中怎么调整系统inode数量?
  • DARPA AI网络挑战赛技术框架全解析:自动化漏洞挖掘与修复系统构建
  • 数据库基本查询语句
  • 【项目实战】基于WS63的鸿蒙星闪红外遥控车(循迹、超声波避障、远程控制、星闪/红外遥控)有教程代码
  • macbook pro怎么安装windows系统
  • XSS与CSRF的联系与区别
  • 异或