支付设计白皮书:支付系统的总架构

标签: 设计 白皮书 系统 | 发表时间:2022-05-25 12:15 | 作者:六脉神剑
出处:https://juejin.cn/tag/%E6%9E%B6%E6%9E%84

“持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第1天, 点击查看活动详情

前言

文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger
种一棵树最好的时间是十年前,其次是现在

絮叨

大家好,我是小六六,三天打鱼,两天晒网,小六六接触进入到支付这个行业也快一年了,从今天开始就开始输出自己的对支付相关的知识的梳理来和大家一起来学习支付,支付是一个非常大并且应用广泛的一个行业,它是万事万物的基础! 我觉得任何产品的最后一公里肯定是支付了。有人说:“支付很简单。”,有人说:“支付很难。” 如果你对支付感兴趣,建议关注我哦!大家一起学习!

中国互联网支付总架构

今天这篇文章就是想带大家来了解下一个从点到点,从端到端,从始到终的支付链路,最近三只松鼠的坚果不是挺火的嘛,那六六就以从京东买三只松鼠为例,带大家从整个宏观的角度来看看中国的互联网支付!

支付总链路.png

  • 小六六要买三只松鼠,那么首先我得找一个电商平台,这边用的是京东,所以最开始的话我们接触的可能是一个电商平台
  • 选好东西之后,六六这边就要去下单,下单完成之后,进入到了京东的收银台了,京东的收银台,包含了京东支付,微信支付,云闪付等等,支付宝目前还没看到,这些属于第三方支付,这些支付方式在中国都是需要支付牌照的。
  • 那么这些支付方式其实接的是我们商业银行的支付通道,然后通过支付通道到了我们的银联和网联
  • 最后到达我们的中国人民银行,也就是我们常说的央妈!绝对的食物链的顶端,所以一笔小小的支付都是经过这么多的参与方的

来看看京东支付的架构

image.png

其实这几秒钟整个支付的链条跋山涉水,翻山越岭经历千险,

支付架构解析

我们看上面的架构图,对于一个服务平台的支付架构,一般有图中的相关系统组成:直面用户的收银台,记录业务的订单系统,推动交易的交易系统,对支付指令进行处理的支付系统,支付指令传送通道的支付通道子系统。

image.png

另外支付成功后还有一条线清结算线:支付成功以后交易将数据提交清算中心完成数据的清分计算,然后提交账务系统完成记账;再通知会计核心完成内部账的记录;最后通知资金平台对交易向商家进行货款的结算……

image.png

这样对于一个服务平台来说,一个支付的骨架就出来了!

image.png

其实很多第三方支付公司都是这么玩的 你比如说国内的京东支付,微信支付,海外的Paypal,Strip checkout等等

支付系统架构

支付系统的主要职责是处理业务系统发起的所有交易请求,包含收银台、交易系统、支付核心等模块,根据各模块不同的功能职责,可以将支付系统分为业务层和支付层两部分。

  • 业务层负责为业务系统提供收付款的操作界面以及处理业务系统提交的交易请求;
  • 支付层负责通过支付渠道实时处理完成资金的收付款、记录参与交易的账户间资金流转情况并按照预定规则对账户所属资金进行拆分与合并。

image.png

收银台

收银台即用户日常付款前选择渠道的页面,是支付平台提供的基本功能之一, 主要职责是协助业务平台完成支付交易,向用户提供一致的交易体验。一般情况下,根据不同终端类型定制标准化的收银台给到外部进行调用,保证各终端体验一致且针对各端特定需求、场景来展现不同的支付方式。

收银台的业务场景(边界) 一般分为付款与充值两部分:

  • 付款即通过各类支付方式针对业务订单发起付款,例如:用户在天猫店购买一件衣服,确认订单后自动跳转至支付宝,引导用户选择对应的方式(余额、花呗、银行卡等)进行付款。
  • 充值即用户对账户进行余额充值,例如:用户登录支付宝、微信或其他商户自有钱包系统对账户余额进行充值。

交易核心

交易系统本身是作为支付系统外部处理业务逻辑的外围系统。由于支付核心系统本身并非面向业务端且业务逻辑的多变性与复杂性,支付系统为了兼顾稳定并能够为业务端提供灵活支持,因此需要在支付系统外层搭建面向业务端处理交易逻辑的交易系统。交易系统处理业务端的各种交易类型后,将业务信息转化为支付系统可识别的支付订单并导入。

以担保交易为例,C 端用户在天猫购买一件商品,成功支付后商家进行发货,用户确认收货后平台将货款结算给商家。此处设计到「担保交易支付」以及「确认收货」环节,与支付系统内部的支付与结算步骤一一对应:

  1. 用户付款成功后对应交易的付款成功状态;
  2. 用户确认收货后对应交易的成功状态。

从支付和收货缓解可以看出,担保收单交易就是讲支付系统的支付基础能力包装后对外支持业务的一款产品。

会员系统

会员系统是完整的支付平台内极其重要的基础模块之一,负责管理支付系统内部的交易主体。会员系统保存了客户在支付系统内部账号的实体信息,为客户建立了统一的、以会员 ID 为标识的会员基本信息、关系信息(会员和账户、会员和操作人、会员与银行卡)视图。

一般情况,会员在支付系统内部分为个人会员和企业会员(默认企业会员有商户权限),以电商平台为例,C 端用户为个人会员,B 端商户为企业会员:

  • 通常,企业会员会配置一定的业务参数,比如结算周期、接口权限、支付方式配置等(开通商户权限的情况下);
  • 在大多数互联网公司,支付系统仅需要对接支付渠道的模块,在没有独立平台化的情况下,不太会出现需要独立的账户体系。

支付核心

支付系统的职责为通过支付核心与后端清结算、会计、账务等系统的统一协作,让前端支付产品可以更关注产品本身的逻辑,而减少对清分、对账、储值等后端服务的考量及动作;同时通过标准化的支付指令定义,统一前端支付产品的支付请求接口,提供适应各类产品使用的基础支付服务。

支付核心的边界:

  • 支付服务:负责对后端支付系统的接口进行业务包装,同时实现使用多个支付方式进行组合支付的功能;
  • 支付服务流程:对各支付类型的支付服务流程进行定义,具体定义为充值、提现、内转支付(转账)、退款等原子类型,并实现对基础服务的流程编排;
  • 支付指令:发起订单后,通过协议和协议明细项加工得出支付指令,需具备进行后续操作处理的全部要素信息;
  • 支付协议:根据产品设立支付协议,因此支付协议的关键要素包含产品码及支付编码,定义着产品的处理流程、收付款信息、对应的支付渠道信息。

账务核心

账务核心的功能为,根据前端业务系统的要求设计相匹配的账户类型、管理各类账户、记录账户资金变动等,同时,按照公司内部的财会规范提供反映各账户间交易资金变化情况的会计数据;并且负责将自身记录账务流水与支付渠道结算资金和结算流水进行核对,对对账结果中出现的差错交易进行差错处理。

清算核心

清算核心负责维护客户参与交易时的清分、结算规则,并按照已配置的规则完成交易资金的清分与结算操作。

结束

由此可见如果你要做一个第三方支付公司的,大大小小估计得建设几十个系统呢?所以来说,支付并不简单,后面六六会和大家一起来学习各个系统!

相关 [设计 白皮书 系统] 推荐:

支付设计白皮书:支付系统的总架构

- - 掘金 架构
这是我参与「掘金日新计划 · 6 月更文挑战」的第1天, 点击查看活动详情”. 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/bin392328206/six-finger. 种一棵树最好的时间是十年前,其次是现在. 大家好,我是小六六,三天打鱼,两天晒网,小六六接触进入到支付这个行业也快一年了,从今天开始就开始输出自己的对支付相关的知识的梳理来和大家一起来学习支付,支付是一个非常大并且应用广泛的一个行业,它是万事万物的基础.

评价系统设计篇

- - 互联网 - ITeye博客
评论系统大家都见得非常多了,大到京东、淘宝、亚马逊,小到个人网站、博客都有评论系统,小型网站采用传统PHP+Mysql方式就能很快将系统搭建起来,同时采用单库单表方式就能轻松解决数据存储、数据查询等问题,但是对于上述中大型网站而言,已经远远不能支撑系统正常运行了. 接下来将从系统架构、数据存储、高性能服务等方面来揭示京东的评价系统在面对海量数据、海量请求的情况是如何处理的.

NoSQL性能测试白皮书

- - 博客园_知识库
  最近,bankmark公司针对目前市面上流行的NoSQ数据库SequoiaDB、Cassandra、MongoDB进行了详细的性能测试,InfoQ经授权发布中文版白皮书.   作为一项快速发展的极具创新性的IT技术,NoSQL 技术在大数据和实时网页应用中的运用在最近几年呈现了大量的增长. 因为NoSQL数据库的存储允许更灵活的开发方式和执行方式,这些NoSQL数据库能够在许多的工商业应用领域很好地替代传统关系型数据库(RDBMS).

思考系统API设计的问题

- edware_love - C++博客-首页原创精华区
最近正好在思考系统API设计中考量的一些问题,. 我现在的理解是这样的,假设有巨大的真实内存. windows首先将高2G的内存自己占了,用作各种内核对象. 这2G内存共享给每个进程,但进程不能直接访问,只能通过windows给定的函数访问. : 然后每个进程都给他2G内存,进程如果创建自己的对象就放到自己那2G内存里面,如果要建立内核对象就放到共享的那高2G里面去.

系统设计中的简单法则

- - 酷勤网-挖经验 [expanded by feedex.net]
最近,包云岗在自己的 博客中总结了系统设计中的基本法则——简单之美,列举了不少经典观点和案例. 他首先总结了麻省理工方法(MIT Approach)和新泽西方法(New Jersey Approach)的异同:. 简单性:两种方法都强调设计必须简单,这既是对实现的要求,也是对接口的要求. 但是,MIT方法认为接口的简单要比实现的简单更加重要,而NJ方法认为实现的简单要比接口的简单更加重要.

财务系统设计的思考

- - 行业应用 - ITeye博客
说到财务系统的设计,就不由得联想到了目前很流行的一个职业“互联网产品经理”,他们的设计着眼于用户体验,创造出新的功能,改善着上亿网民的生活,比如扫一扫,摇一摇等. 财务系统不同于互联网的产品,它的复杂性对于没有深入了解它的人来说,是不太能想象出来的. 互联网的功能开发,讲究的是时效,从一个点子,到产品发布可能只用一周的时间,然后如果市场冷淡,可能第三周就下线了.

12306订票系统设计关键点

- - 互联网旁观者
12306全国火车票网上售票网站的情况大家都见到了,如果让你来设计该订票网站,你会如何设计才能应对如此大规模以及高并发的情况呢. 以下是百度前技术总监邵辉给出的设计:. 列车在线订票系统的业务逻辑比较简单,不用多说. 可能的瓶颈有两个,一个是车次和剩余票量的查询,一个是下单. 在设计软件架构之前,需要先研究产品需求、软硬件条件、网络环境以及关联系统的接口,但这些资料无从获得,所以只能做几点分析和假设,做为设计的前提条件.

网购秒杀系统架构设计

- - 企业架构 - ITeye博客
秒杀活动只是网站营销的一个附加活动,这个活动具有时间短,并发访问量大的特点,如果和网站原有应用部署在一起,必须会对现有业务造成冲击,稍有不慎可能导致整个网站瘫痪. 用户在秒杀开始前,通过不停刷新浏览器页面以保证不会错过秒杀,这些请求如果按照一般的网站应用架构,访问应用服务器、连接数据库,会对应用服务器和数据库服务器造成极大的负载压力.

秒杀系统设计的知识点

- - 互联网 - ITeye博客
A, 高并发,cache,锁机制 . B, 基于缓存架构redis,Memcached的先进先出队列. C, 稍微大一点的秒杀,肯定是分布式的集群的,并发来自于多个节点的JVM,synchronized所有在JVM上加锁是不行了. F, 如何防止用户来刷, 黑名单. G, 利用memcached的带原子性特性的操作做并发控制. .

O2O供应链系统架构设计

- - 美团技术团队
本文是美团技术沙龙第一期, O2O技术架构与实践上的分享内容. 请在微信搜索“美团技术团队”关注我们的公众账号,了解更多活动信息. 英国知名供应链专家Martin Christopher曾经说过一句非常深刻的话:“21世纪的竞争不是企业和企业之间的竞争,而是供应链和供应链之间的竞争. 在风云变幻、寡头纷争的O2O战场,美团屡出重拳并步步为营,战绩不俗.