写点什么

支付系统概述(七):资产交换

作者:agnostic
  • 2024-04-14
    上海
  • 本文字数:1194 字

    阅读完需:约 4 分钟

上一章我们介绍了和用户支付交互相关的收银台系统,本章我们继续说和用户支付行为相关的另外一个系统:资产交换系统。


资产交换系统有一系列的别名,例如支付核心、统一支付。不管名称叫什么,这个系统承担的职责大致是一样的:记录和推进用户的支付行为。具体来说,资产交换系统提供如下能力:

  • 创建和推进支付单据,并记录支付单据和商品单据之间的关系。

  • 抽象用户所使用的支付资产,定义用户资产和支付工具之间的关系,记录一次支付行为所使用的用户资产。

  • 协调支付过程中各类资产的变动,比如余额的扣减、余额的增加、和渠道的交互。并保证支付过程中各类资产变动的一致性。

这个系统的称呼也就是看待这个系统职责的视角。如果从推进支付行为看,叫统一支付很合适。但更重要的,这个系统是需要协调和保证各类支付资产之间的一致性,所以我们更倾向于叫他资产交换。


在模型上,资产交换系统有两类重要的模型。

  • 一类模型用户记录支付过程和行为,我们称之为支付单。支付单需要有严格定义的生命周期:创建->支付中->支付完成->退款等等。考虑到退款和正向有可能是多对一的关系,正向逆行需要单独的模型。

  • 第二类模型是保证资产交换一致性需要的模型。如果用的是 TCC,可能是 TCC 相关的长事务的表。如果用的是状态机控制的最终一致性,需要有模型记录各类资产的生命周期。

  • 对于资产模型,资产交换系统会去使用,但是我们一般将这个模型归入资产管理系统,我们再下一章介绍,这里就不再赘述。

在服务上,资产交换系统提供 API 和 SPI 两类服务。

对于 API,主要完成对于支付单据全生命周期的管理,包括:

  • 创建支付单据。

  • 关联支付资产。

  • 支付单状态变更通知和查询。

对于 SPI,主要是用于抽象支付资产,并完成和下游关于资产生命周期的协调。我们一般将资产抽象成一个贷记和借记的行为:

  • DEBIT:扣减资产。

  • CREDIT:增加资产。

  • COMMIT:为了保证最终一致性,采用两阶段事务。


资产交换系统是整个支付系统中最核心的部分,同时也是资金风险的高发区。在整个支付系统中,资金风险主要就是集中在资产交换和渠道网络中。

所以,资产交换系统的实施过程中,最重要的就是要做好一致性保障和核对:

  • 资产交换处于一个中间地带,上游是收单,下游是账务系统和渠道网络。对上和对下都可能是一个多对多的关系。整体的幂等逻辑需要严格定义清楚。需要记录总分的关系,分录和下游需要定义严格的幂等逻辑。

  • 资产交换在支付单据和资产上都有严格的生命周期需要保证。同时这两个生命周期之间还有一定的依赖关系。状态机也是资产交换系统需要重点考虑的技术组件。

  • 资产交换系统在协调资产的过程中,存在多个资产的情况,需要保证这些资产推进的最终一致性。一般来说,会采用 TCC 框架来保证。TCC 的分布式事务逻辑,也是资产交换系统的重要组件之一。


总之,资产交换系统对上完成对商品订单的支付,对下完成对支付资产的推进。模型和服务上都体现了这两类交换行为。在技术架构上重点需要考虑最终一致性、状态机和幂等的保障。

发布于: 刚刚阅读数: 4
用户头像

agnostic

关注

常识、KISS、高可用、合规架构、架构治理 2019-02-14 加入

二十年架构经验,互联网金融专业架构师。Open Group Master Certified Architect

评论

发布
暂无评论
支付系统概述(七):资产交换_支付系统设计与实现_agnostic_InfoQ写作社区