互联网公司对账系统的那些事儿

在互联网行业中,作为业务当中的核心链条,大部分互联网公司多多少少都会涉及到支付业务。而只要涉及到支付业务,就会存在对账需求,对账系统的产品建设随之变得举足轻重,甚至有公司通过各种途径获取第三方支付牌照,打造属于自己的第三方支付公司,因此对账具有普遍性。对账系统是支付体系中最重要的一环,也是保证交易、资金安全的最后一道防线。在大多数的互联网公司(电商、金融、第三方支付)中,一般都会有独立的对账系统来处理。

互联网公司对账系统的那些事儿

一、业务知识

1.对账定义

在银行或者第三方支付中,对账其实是对一定周期内的交易进行双方确认的过程。一般都是在第二天银行或者第三方支付公司对前一日交易进行清分,生成对账单供平台商户下载,并将应结算款结算给平台商户。在往下一层,在互联网金融行业或者电商行业中,对账其实就是确认在固定周期内和支付提供方(银行和第三方支付)的交易、资金的正确性,保证双方的交易、资金一致正确。所有跨系统或平台的数据交互,理论上都应该进行对账。

2.对账方式

支付系统内部间的对账:支付系统一般是分布式的,整个支付系统被拆分成了多个子系统,如交易系统、账户系统、会计系统、账户系统,每个子系统在处理各自的业务,系统间的对账,就是以上系统的核对,用于修正内部系统的数据不一致。

支付系统与渠道的对账:这里的渠道泛指所有为支付系统提供代收付业务的渠道,如:第三方支付公司、银行、清算中心、网联、银联等。

3.对账类型

业务对账,即信息流对账,一般用在自己内部系统的对账,比如支付系统的支付数据和业务系统的业务数据进行对账,保证资金交易和业务交易的一致性。以此保障用户的支付交易可以完整入账。

资金对账,即资金流对账,支付系统的入账流水与银行的结算流水间核对,以此保障用户支付的钱都流入银行备付金账户,银行入账流水与实际入账资金的匹配。

4.轧账平账

每一笔交易,都要做到各参与者的记录能够吻合,没有偏差。对账系统的工作,是发现有差异的记录,即轧账;然后通过人工或者自动的方式,解决这些差异,即平账。

5.长款漏单

在以平台交易为基准的情况下和银行对账,发现周期内的交易,平台有此订单而支付通道中没有订单,成为平台长款。平台长款一般是由于用户在支付时候跨天的情况,比如用户在23:59分创建了订单,在第二天的凌晨00:05分进行了支付。在以银行交易为基准的情况下对账,银行有此订单而平台无此订单,即为平台漏单。平台漏单很少见,一般直接转人工处理。

6.账户体系

一般的支付体系中会分为登录账户和支付账户,支付账户指用户在支付系统中用于交易的资金所有者权益的凭证;登录账户指用户在系统中登录的凭证和个人信息。一个用户可以有多个登录账户,一个登录账户可以有多个支付账户,比如零钱账户、储值卡账户等。一般来说,支付账户不会在多个登录账户之间共用。对账的交易一般都是支付账户参与交易。

7.交易账户

账户设置,一般是从交易开始的。交易的实现必须有账户的支持,账户是交易的基本构成元素。从支付系统的角度,交易中涉及到的资金流是资金从一个账户流向另一个账户。发起交易的一方,被称之为交易主体,它可以是一个人,也可以是一个机构。

8.清算结算

清算主要是指不同银行间的货币收付,可以认为是结算进行之前,发起行和接收行对支付指令的发送、接收、核对确认,其结果是全面交换结算工具和支付信息,并建立最终结算头寸。计算各方应收应付账款的时间与金额。
结算是指将清算过程产生的待结算头寸分别在发起行、接收行进行相应的会计处理,完成资金转移,并通知收付双方的过程。根据清算的结果在指定的时间对各方进行实际的资金转移操作。当前,大多数银行结算业务的完成主要通过两类账户:一是银行间互相开立的代理账户,二是开立在央行、独立金融机构如银联或者第三方支付机构的账户。

9.资金池

用户备付资金(如充值)统一放在企业的银行账户中,企业可以随意支配这些资金,即为资金池。与之对应的是第三方托管,用户备付资金是放在企业在第三方支付机构为用户开设的虚拟账户中,企业无法随意取出这些资金。现在互联网金融全面要求接入银行存管,就是银行会为每个用户创建一个资金账户来保护用户的资金,互联金融公司不能随意划拨这些资金账户中的金额。

二、对账系统

1.对账设计

文件获取:下载或者读取各渠道对账文件,获取方式包括主动获取(定时任务、重试机制、下载文件)、对方推送和人工上传。

文件解析:创建不同的解析模板,根据渠道和文件类型获取对应的解析模板进行解析。解析方式有EXCEL解析、TXT解析、CVS解析。

对账处理:对账的业务逻辑处理。包括对账信息(金额、状态)、对账数据(取我方对账数据、去对方对账数据)、对账处理(以我方数据为基准对账、以对方数据为基准对账)。

差错处理:处理差错池中的订单。处理方式包括人工处理(人工核对,平账)和自动处理(驱动下游流程完成)。

一般会设计一个定时任务,每天固定的时间点触发,定时驱动调度类分别调用四个模块来处理对账。也有的支付通道或银行会主动的推送对账单,再通过http回调来触发对账流程。

2.对账流程

下载对账单:触发任务-连接FTP-判断文件-下载文件。大多数支付通道或银行都要求接入方提供FTP服务,支付通道或银行会定时将对账单推送到接入方提供的FTP服务器上面。还有一部分支付通道或银行会提供对账单的下载服务,通过FTP或HTTP的都有,FTP方式居多。另外网银的对账单比较特殊,一般都需要结算人员登录网银的后台管理系统中手动下载,结算人员下载完对账单后在导入到对账系统。

创建批次:二次入账-批次记录。一方面是为了防止重复对账,另一方面需要在对账结束的时候将对账的结果信息存储到批次中。

解析文件:判断渠道-判断类型-解析文件-转换入库。主要是将下载的对账文件解析成我们可以对账的数据类型并且入库。对账文件中包含的主要信息有:商户订单号、交易流水号、交易时间、支付时间、付款方、交易金额、交易类型、交易状态这些字段。

对账处理:获取对方账单-获取我方账单-获取缓冲池数据-以我方为基准对账-以对方为基准对账-记录差错-长款入缓冲池。以平台订单为基准对账逻辑:以平台所有交易成功的订单为基准,遍历支付通道或银行订单的所有数据,找出订单号相同的订单,对比订单的金额、手续费是否一致。如果一致跳过;如果不一致,平台订单进入差错池;如果在银行订单中没有找到此笔交易,订单进入缓存池,记录平台长款。同时统计对账相关金额和订单数。以支付通道或银行订单为基准对账逻辑:以支付通道或银行的交易数据为基准,遍历所有平台的交易(包括未成功的订单),找出订单号相同但支付状态不一致的订单,在进行对比金额存入差错池。如果没有在平台的交易中找到此订单,再从缓存池中遍历查找,找到对应的平台订单验证金额是否一致,不一致进入差错池。如果在缓存池汇中依然没有找到对应的订单,直接进入差错池,记录平台漏单。同时统计对账相关金额和订单数。

对账统计:统计差错数据-统计批次金额-记录结果。根据对账处理结果,统计的相关信息包括:对账完成时间、对账是否成功、平账的金额和订单数、差错的金额和订单数、缓存池金额和订单数等。

差错处理:撤销-修正-平账。在一般系统中,差错处理分为两种,一种人工来处理,一种系统自动来处理。本地未支付,支付渠道已支付。这主要是本地未正确接收到渠道下发的异步通知导致。一般处理是将本地状态修改为已支付,并做响应的后续处理,比如通知业务方等。本地已支付,支付渠道已支付,但是金额不同,这个需要人工核查。本地已支付,但是支付渠道中无记录;或者本地无记录,支付渠道有记录。在排除跨日因素外,这种情况非常少见,需要了解具体原因后做处理。

三、差异处理

1.信息流勾兑

支付系统信息流没有,而银行有的差异,可能是因为支付系统交易数据的丢失、银行的掉单。如果是银行的掉单,由支付公司的运营登录银行网银确认后,做补单处理,并将差异表中该记录核销。

支付系统信息流有,而银行没有的差异,此种情况一般不会发生,因为支付系统所有的交易数据都是取银行返回状态的数据。

2.资金流勾兑

支付系统资金流没有,而银行有的差异。可能原因有,银行日切晚于支付系统核心账务系统;支付系统账务核心系统与其他系统间的掉单。一旦出现,则会出现长款(即银行不应该结算而实际结算)的现象,对于因日切导致的差异,在第二天的对账中系统会对平,其他原因的,需要技术排查。

支付系统资金流有,而银行没有的差异,可能是因为银行日切早于支付系统的核心账务系统,一旦出现,会出现短款(银行应结算而实际未结算)的现象,银行日切导致段差异,会在下一天与银行的勾兑中,将此笔差异勾兑上,如果是非日切导致的原因,就需要找银行追款了。

本文由 新媒体之家 作者: 辛克派 发表,其版权均为原作者所有,文章内容系作者个人观点,不代表 新媒体之家 对观点赞同或支持,未经许可,请勿转载,题图来自Unsplash,基于CC0协议。
0

发表评论