支付系统中最为常见的交易流转如上所示。
现实账代表着实际的资金流转,对应银行账户的余额变动,最终我们可以通过银行提取到现金。
同时,支付公司在对应银行的户头资金也会进行变化,一般公司户头的变化都是极为高频的,故银行不会实时计算余额而是会异步入账,并在每日日终时生成户头的流水记录和日终余额。
对于支付公司来说,在请求银行转账接口成功后,一般会先将请求成功的流水和金额记录到公司的内部户中,也即待清算账户。
等到银行日终后,会拿银行的流水和余额与本公司记录的流水和余额进行核对,这也就是一般对账的核心数据流。
对账核心逻辑
对账的核心即为两边数据的对比,因此如上所示会存在4种比对情况。
我方有银行无、银行有我方无、双方有但金额不一致、双方有且金额一致。
差错分析
针对上述4种情况,由于金额方向的不同可以具体分为以下8种差错。
入金,也即流入我方户头的资金。
出金,为从我方账户扣款流出的资金。
差错处理
以我们自己为主体,差错的金额进行挂账处理,对平的金额进行头寸结转。
我们多收的钱挂长款,后续进行长款销账直至长款金额为0。
我们少收的钱挂短款,后续进行短款销账直至短款金额为0。
差错记账
会计基本公式: 资产 = 负债 + 所有者权益。
-
涉及记账账户:
-
头寸账户: 我方记录的银行户头的账户,理论上每日日终余额要与银行实际日终余额相等。属于资产账户。
-
入金待清算账户:我方记录的银行户头理论收入资金账户。属于资产账户。
-
短款账户:我方少收的钱挂账形成的待追款账户。属于资产账户。
-
出金待清算账户:我方记录的银行户头理论支出资金账户。属于负责账户。
-
长款账户:我方多给的钱挂账形成的待追款账户。属于负责账户。
-
客户账户:我方记录的客户余额。属于负责账户。
-
-
记账平衡公式
- 头寸 + 入金待清算 + 短款 = 客户账 + 出金待清算 + 长款
记账分录如下,可以由借贷平衡公式组合得出一对或多对分录。如
//入金清算挂账结转 (分录1入金长款挂账 & 分录2对平头寸结转)
Dr头寸
Cr 入金待清算
Dr头寸
Cr 长款
//长款销账 (退客户账)
Dr 长款
Cr 客户账
挂账&结转总公式
销账总公式
至此对账的业务处理逻辑介绍完毕,下面为对应的技术实现。
对账架构
步骤如下
- 监听我方流水数据 ,并生成我方对账明细
- 监听解析出来的外部流水,并生成外部对账明细
- 由对账平台驱动双侧流水进行对账
- 对平的数据直接走账务接口进行结转记账,差错数据推送至差错中心统一处理
- 差错中心可以直接走账务进行长短款进行挂账处理,也可以通过交易进行退款等操作
对账模型
-
配置表:包含对账周期(T/D)、keywork取值逻辑、渠道信息、银行信息等
-
对账明细表:清算日期、清算金额、keywork(对账关键字)、渠道信息、银行信息、交易信息等
-
内/外多账表:临时存放由于时间差导致非真正的差异数据,格式与明细表一致,次日对账时如果有则进行数据清除,对于一直没有消除的数据可以当做差错数据,放入长短池中
-
对账结果表:包含明细表信息、对账结果信息、对账状态、对账批次等
-
长/短款池:对账结果产生的长/短款数据,包含明细表信息、处理状态、差异原因等
-
结转表:对平的明细数据结转表,包含明细表信息、处理状态等
大数据量下的技术实现
- 方案一,使用分库分表技术,将明细数据按清算日期分片,提高数据查询效率。利用分治思想,将每次数据拆分成多个子批次进行核对,最后进行子批次的汇总。可参借鉴考任务调度平台设计进行主子批次的核对任务执行设计。
- 方案二,打通大数据平台。将明细数据导入到大数据平台里,利用大数据平台的处理能力进行对账,回流结果数据到业务库进行后续处理。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名,转载请标明出处
最后编辑时间为: