如何设计一套支付系统——模块模块的快速入门

2024-03-22
来源:网络整理

爆仓是商户最刚性的需求,对其容忍度最低。 商户可能仍能忍受较长的支付等待时间和繁琐的操作。

但当出现结算错误、结算长期拖延等情况时,商户认为资金安全无法得到保障,在有其他选择的情况下,商户基本会毫不犹豫地转向其他支付产品。

我们常说的清算实际上包括两个环节:清算和结算。 类似于会计中财务与出纳的关系。 财务人员负责结算,出纳负责资金划拨。

清算是指清算模块根据业务规则计算每个账户的收支账目,最终生成收支主体和金额的清算记录; 结算是指以清算文件的形式推送清算记录或调用接口向核心清算系统划转、扣划资金。

清算模块可以说是支付系统中最有价值的业务模块之一。 要求支持多种业务场景,保证清算算法准确。 信息交互的监控粒度非常细致。

与交易指令的透明传输相比,清算的每一个金额和状态实际上都涉及到资金的转移,因此状态监控和人工干预和审核是必不可少的。

清算从业人员需要一定的行业知识和专业储备。 作者总结了自己的业务知识和项目经验,希望能够结构化地帮助读者快速入门。

本文将首先介绍现实生活中常见场景的例子,介绍信息流和资金流的各个环节,以及中国清算系统的概况,从而全面了解清算业务的基础业务知识。

接下来我们将以银行收单系统为例,解构如何实现清算模块的几个核心业务能力,并抽象出行业常用的基本设计概念。

和解和清算并不会使家庭分离。 在进行清算之前,必须对业务进行核对。 关于对账模块的详细设计,可以查看作者之前的文章《如何设计支付系统——对账模块》,本文不再涉及。 关键点。

清算结算专家:负责发起清算的运营商,首先确保信息流平衡,然后确认资金流应收账款与信息流平衡账户金额一致。 我们希望能够及时发现并解决长短支付问题,保证对商户(可以在平台收款的用户)资金结算的及时性。

1. 交易的生命线

当消费者使用任何非现金支付渠道(微信、支付宝、信用卡)支付商品时,商户不会实时收到销售货款,而是由其使用的支付收单服务提供商按照一定的结算周期进行结算。 商户和收单服务提供商可以是银行、银联、第三方支付机构。

例如:小明使用支付宝支付码(绑定建设银行卡)在沃尔玛购买了1000元商品。 沃尔玛的支付服务商是工商银行的收单渠道,支付费率为0.6%。

1. 信息流

在间接模式下:

商户收银系统客户端->商户收银系统服务器:生成商户订单号、金额、状态:未付款(业务场景复杂的商户系统还会区分商户订单号和支付订单号,本文仅讲解支付订单号); 商户收银系统服务器->工行收单服务器:支付路径找到工行收单通道,发送商户订单号、金额、状态:未付款; 工行收单服务器->银联联动服务器:支付路径找到银联支付宝通道,上传工行订单号、金额、状态:未付款; 银联联动服务器->支付宝服务器:支付路由找到联动支付宝通道,透传工行订单号、金额、状态:未付款; 支付宝服务器->银联快捷支付系统:在支付路径中找到银联快捷支付,提交支付宝订单号、金额、发卡行、银行卡号、状态:未付款; 银联快捷支付系统->中国建设银行发卡网关:在支付路径中找到中国建设银行发卡网关将发送银联借记单号、金额、发卡行、银行卡号,状态:未付款; 建行发卡网关:根据银行卡号和金额进行内部转账(此时只是发卡行账本记录,不涉及资金结算),如果银行卡余额大于或等于,转账将被执行,状态:支付成功; 如果余额不足,则不会执行转账; 建行发卡网关->银联快捷支付系统:以扣款成功为例,返回:建行扣款单号、银联借记单号、金额、发卡行、银行卡号,状态:支付成功; 银联快捷支付系统->支付宝服务器:返回:银联借记订单号、支付宝订单号、金额、发卡行、银行卡号、状态:支付成功; 支付宝服务器->银联联动服务器:支付宝订单号、工行订单号、金额、状态:支付成功(同步推送到小明的支付宝APP); 银联联动服务器->工行收单服务器:支付宝订单号、工行订单号、金额、状态:支付成功; 工行收单服务器->商户收银系统服务器:工行订单号、支付宝订单号、商户订单号、金额、状态:支付成功; 商户收银系统服务器->商户收银系统客户端:工行订单号、支付宝订单号、商户订单号、金额、状态:支付成功。 2、资金流向

在间接模式下:

建行内部清算系统净额结算:建行收到扣款通知后,小明的银行账户余额实时减少1000元。 银联跨行清算系统净额:日间到晚上12点,银联生成清算文件并发送给中国人民银行大小额系统:中国银行从其发卡中扣除资金(例如钱1),清算账户减少999元,支付宝清算账户增加1元,工行清算账户增加998元。 收单行行内清算系统净额清算:次日10点,工行生成清算单并发送给中国人民银行大小额系统。 商户结算账户增加994元,商户业务发展通道结算账户增加4元。2. 中国清算系统简介

国内银行间转账基本上都使用中国人民银行的大额小额系统,该系统是国家级核心系统,准入资质和安全性要求较高。 它一般只对银行和特许金融机构(如:银联)开放。

银行的清算系统首先会将本行卡和其他银行卡进行分类。 银行卡将转入银行银行卡账户结算系统。 其他银行的卡将根据金额进行分类。 5万以上的,使用中国人民银行大额支付系统。 ,小于等于5w,使用人民银行小额支付系统。

一般可以三、四方接入的结算系统是银联银行卡跨行支付系统,以银行卡组织的形式办理银行卡清算业务。 它本质上是基于中国人民银行大小额系统的一层封装,对外开放。 实力更强,业务更灵活。

高额支付系统 (HVPS) 在国家法定工作日运行。 系统运行时间为每天8:30至17:00。 主要用于处理单笔金额5万元以上或5万元以下的普通银行间兑换。 银行间紧急汇款业务。

大额系统实行逐笔发起支付指令、全额清算的方式,加快了大额资金划拨速度和社会资金周转速度。

小额支付系统(BEPS):实行7×24小时不间断运行模式,主要用于处理单笔交易5万元以下的普通授信业务和定期扣款业务。

与大额支付系统相比,小额支付系统采用批量发送业务、定期结算、净额的业务处理方式,因此资金划转的实时性不如大额支付系统高。支付系统。

三、案例:银行收单系统清算设计 1、建立资本项目体系

在开始梳理清算需求时,需要明确资金流向。 在满足业务需求方面,首先要保证符合国家相关要求,其次要符合企业财务规划和管理措施。 常用的账户类型如下:

1) 储备账户

指接入渠道时填写的结算账户,需要独立申请并备案。 该账户的主要目的是向收单业务的收单方收取资金。

上游微信、支付宝、银联是独立的业务系统,支付时间和账单推送时间不同。 因此,微信、支付宝、银联预留支付账户将按类型进行区分,以便专用账户可以轻松直观地进行处理。 资金对账。

2) 过渡性家庭

即先将各备付金账户归还还款,然后将资金汇总一次性结算至商户和渠道的资金转接账户。 过渡账户需要每天清算。 如果存在未清算的待处理账户,则需要将其转入待处理账户。

这样,即使系统上清算指令的重复调用出现bug,业务也无法因余额不足而转移资金,从而避免大规模的资金损失。 并且根据账本中的账户余额是否清空,可以快速准确地定位到系统出现问题的具体日期。

3)关联账户

因结算卡错误、风控冻结等原因造成的待处理资金统一划入待处理账户。 每天需要结算专员发起结算并退回订单,然后检查系统显示的结算失败金额是否与过渡账户中的余额一致(结算退款会根据情况退回至过渡账户)向资金提取方向)。 如果一致启动待处理账户清算,过渡账户将被清算。

4) 商户银行账户

第三方支付分账系统_三方支付平台_第三方分账系统

商户输入的是填写的结算账户。除了一类卡外,部分银行卡还支持二三类卡。

5)外包渠道银行账户

外协渠道进口零部件时填写的结算账户。 与分行内部账户不同,生成结算文件时,商户的结算信息会归档到一份结算文件中。

6) 分行内部账户

通过分行渠道进口货物时填写的结算账户属于银行内部账户管理账户。 除了账号外,一般还需要填写账号。有的银行内部使用接口转账; 有些银行在实际填账时只记录账目,填写总行账户。

2. 划分类别

按照收款方向,结算类型可分为:转账结算、联动账户结算、商户结算、渠道结算。

过渡账户清算和联动账户清算账户一般是固定的,而商户清算和渠道清算结算账户是在生成清算文件时根据业务规则添加的。

3、明确资金流向

假设:商户费率6‰,外包渠道费率4‰,分公司渠道费率2‰,渠道成本2‰:

4. 处理未偿债务并弥补余额

转入账户:若结算失败,资金将按原路径退回至过渡账户; 结算专员核实过渡账户余额与失败金额一致后,将对待处理账户进行清算和划转。

补序排序:指错误信息修正后重新开始排序。 结算类型不变,结算状态由结算失败变为结算中,支付账户变更为挂起账户,支付账户取商户最新结算信息。

5、生成清算文件规则,获取对账结果数据。 对账任务完成后,拉取对账订单数据的副本,并生成原始清算数据; 生成商户清算记录,并将每笔订单与所属商户进行匹配。 当前费率,并计算商户手续费=订单金额*商户费率; 生成渠道清算记录,一一计算机构利润。 以平台为例,按照机构级别从下往上计算,渠道利润=订单金额*(商家费率-渠道费率); 是否冻结判断是否有冻结订单,如果有则将冻结订单移除。 (冻结订单一般来自第三方风控或平台风控,商户资金存在违规或消费纠纷风险); 判断是否有未冻结的订单,如果有,则将未冻结的订单合并到结算数据中。 (冻结订单一般来自第三方风控或平台风控,商户资金存在违规或消费纠纷风险); 是否分账决定商户是否需要分账,根据分账规则计算账户金额和账户商户信息; 生成结算明细并添加结算信息,根据商户号信息,搜索匹配的结算信息(卡号、姓名等)并生成结算明细; 是否合并入账判断是否合并入驻,常用的有两种,一是商户维度,根据商户号合并生成结算金额; 另一个是连锁商户维度,将连锁商户旗下所有店铺合并起来,生成结算金额; 并生成清算文件。

清算文件是推送到银行清算核心或支付接口的数据(txt、csv和json格式)。 具体要求以合作平台要求为准。

6.清除文件推送批量统计信息

生成清关文件后,点击清空,将清关文件推送至对应的业务系统。 您需要提前确认推送路径和文件格式。

不同银行的管理方式可能不同,有的可能需要生成两份分类文件来区分本行的卡和其他银行的卡。 对于部分地区账户类型,如果是银行内部账户转账,将通过指定接口进行资金划转,并实时返回清算结果; 如果是外部账户,会采用文件推送的方式批量清款。

常用的记录信息:交易时间、清算文件名、清算批次号、总额、交易总数、推送时间、批次号、推送批次状态。

7. 排序结果统计

每一笔转账记录都需要一一记录清算明细,方便后续对账和补货处理。

常用记录信息:交易时间、结算状态、结算类型、平台账户信息、支付账户信息、收款账户信息、金额、结算时间、流水号、失败原因。

8、排序结果统计

错误处理是指对那些尚未成功结算的结算记录进行处理,目的是将关联账户余额清零。 错误处理可以分为两类,一类是正常补偿,一类是异常情况。

正常补仓是指恢复交易时,结算系统明确提示哪些结算失败,用户可以按照正常流程进行修改,然后重新签发结算。

另一类异常情况又可以细分为退款和线下人工报销两种场景:

退回支票是指订单退回时结算系统没有提示结算失败,但实际结算失败,资金已退回提款账户。 修改退款原因后需重新发起结算。 出现这种情况的原因是银行核心结算系统返回的结果状态仅代表信息接收状态,而不是实际的结算状态。 还有更高级别的结算系统——比如中国人民银行的大小额系统,所以其他银行的卡退款是最常见的。 线下人工支付是指由于系统调整时间过长,业务急需向商户结算,可以先通过人工转账的方式向商户线下结算,稍后再同步信息流状态。 线下行为不经过平台系统,需要将清算失败转化为清算成功,保证信息流和资金流的统一,避免重复清算。

9、清算模块产品框架图

下图为清算模块的产品框架。 基本上,清算设计就是以此为出发点的。 您可以将其作为学习参考。

4、如何做好产品清仓工作

当然首先你需要了解业务:

可以从资金流、信息流的流程图入手,一步步理清。 资金流向的账户设计应与企业策划部门沟通,明确账户设计的目的和处理规范。 深入了解业务背景后,你会发现其实账户设计和表结构设计是类似的。

产学界建议以实际业务金额为例。 最好直接使用示例,使测试用例尽可能详细。 首先更容易沟通,其次自己更容易发现模型是否有遗漏。

分享