公司支付系统发展的三个阶段:从封闭应用到可扩展平台

2024-08-29
来源:网络整理

大多数公司如果想赚钱,就得有支付系统,让用户或者客户有地方支付。当然,在公司发展的不同阶段,支付系统的定位和架构是不一样的。一般来说,我们可以把一个公司的支付系统的发展分为三个阶段:

1、支付系统:支付是一个(封闭的)独立的应用系统,为各个系统提供支付功能支持,一般来说,这个系统仅限于为公司内部业务提供支付支持,与业务耦合紧密。

2、支付服务:支付作为一个开发好的系统,为公司内外部系统、各项业务提供支付服务,支付服务本身应该和具体的业务解耦。

3、支付平台:作为可扩展的平台,公司内外的用户都可以在此基础上定制开发自己的服务。

这种划分有些牵强,简单来说,支付系统只供公司内部使用,支付服务支持公司内外调用,支付平台可以基于服务进行定制,支持各种场景。

支付业务流程

区分支付和交易两个概念。支付是交易的一部分,一个简单的交易流程包括:客户下单,客户完成支付,商家收单,商家发货。这里我们只考虑下单流程。从软件工程的角度,我们首先需要确定几个参与者。

现在我们已经知道了主要参与者,让我们继续讨论付款流程。正常流程应如下:

1、用户向电商系统提交订单,电商系统检查订单,如果没有问题,则调用支付接口执行支付。注意,支付接口是在服务端调用的,一般很少直接从客户端调用支付接口。出于安全考虑,支付接口一般需要访问签名。我会在另一篇博文中介绍支付接口的设计。

2、支付系统检查参数的有效性,特别是签名的有效性。

3、根据用户选择的支付方式以及系统的支付路由设置,选择合适的收单机构。这里涉及到三个概念:支付方式和支付路由。这个又要讲到插槽了。简单来说,用户可以选择各种银行卡支付,比如宁波银行卡,但是你的支付系统没有接入宁波银行。这种卡,你可以选择支持这张卡的收单机构来执行支付,比如使用微信或者支付宝等第三方支付,或者使用系统支持的方式比如银联支付。这就是支付路由,根据用户提供的银行卡选择合适的收单机构来执行支付。常见的支付方式还有第三方支付,比如微信支付宝等。这种情况下不需要支付路由。

4、调用收单接口执行支付。这个是支付系统的核心,每个公司的收单接口都不一样,对接一两家收单机构是可以的,但如果有较多的收单机构,如何统一这些接口是一个设计难点。

5、支付成功后,收单机构将款项打到商家账户,商家准备发货。如何发货不是本文的重点,这里的重点是,商家能收到多少钱?比如一款价值100元的商品,用户支付了100元(不含运费、折扣等),这100元必须扣除电商系统的佣金和支付渠道的手续费后,才能最终落到商家手里。

这是一个过程,看似一切都很好,但实际上每一步都充满陷阱,一旦考虑不周,好的话订单频繁丢失,坏的话接口被盗,损失惨重。

任何一家公司,和钱打交道都离不开财务部。那么财务部重点关注什么呢?当然最重要的是账户信息。所有的交易都要记录,而且公司要定期审计,每一笔账都不能出错。这个当然不能等到审计的时候才能查到,但是需要每天对账,确保所有的交易费用都抵消了,也就是账目平衡。对账有三种情况:电商系统和商户对账;电商系统和支付系统对账;支付系统和收单机构对账。至于支付系统,我们只关注后两种。

从软件开发角度来看,需要满足一些非功能性要求:

典型的付款结构

所以支付的坑还是很多的,我们来看看顶级互联网品牌是怎么设计支付系统的,我们来看一组:

我们来看某Q旅游公司的情况:

和某董财务对比一下:

最后,我们来看看行业内最强的金融服务公司:

一般来说,从分层的角度看,支付系统与普通业务系统没有本质区别,也是按照应用、服务、接口、引擎、存储等进行分层。在应用层,支付系统一般提供以下子系统:

1、支付应用及产品(应用层):针对各类终端(PC、Web、IOS)的应用及产品,为各类业务系统提供收银支持。同时支付作为独立模块,可提供银行卡管理、财务管理、找零、虚拟货币管理、交易记录审核、卡券等功能。

2、支付运营系统(应用层):从安全角度看,支付系统的一个重要要求是懂代码的人不碰线,管理运营的人不碰代码。这对运营系统的要求很高,要求基本上所有线上的问题都可以通过运营系统来解决。

3、支付BI系统(应用层):支付过程中会产生大量数据,分析这些数据可以帮助企业了解经营状况,提供决策支持。

4.风控体系(应用层):这个是合规要求的风控和反洗钱合规。

5.信用信息管理系统(应用层):用于支持信用算法的配置,管理用户的信用信息。

其他图层功能:

1、支付服务层:为上述各端系统提供API,这些API也可以提供给业务系统直接使用。

2、接口层:与各类相关系统连接的接口,其中最重要的是连接支付渠道的支付网关。

3.引擎层:包括统计分析、风险控制、反洗钱、信用评估等在后台运行的系统。

4.存储层:各种持久性数据库支持。

这个其实就是一个常见的互联网应用系统架构,没什么特别的。比如微服务如何体现,性能需求如何满足,都无法在这个视图中体现出来。这只是从软件角度看的一个高层视图。后面我们会把各个大模块分解,从分解视图中就能知道非功能性需求如何满足。

分享