第四章 信贷系统的整体架构-(七)资金流与信息流分离

0 阅读7分钟

七、资金流与信息流分离

这一节讲的是信贷系统里一个“看不见但极其重要”的设计原则,资金流与信息流的分离。很多系统出事,不是功能不会做,而是把“业务发生了什么”和“账上钱怎么变的”搅成了一锅粥。

图片

图 4-35 资金流与信息流分离:三流分离·记账解耦·对账兜底

(一)三流分离:业务流水、账务流水、支付流水

我先给你建立一个核心概念:一笔信贷业务(比如一次放款、一次还款),在系统里其实会形成三条独立的流水,它们记录的是同一件事的三个不同侧面:

图片

图 4-36 信贷三流分离:业务、账务、支付三条流水独立记账

第一条:业务流水(业务层发生了什么)。 记录“这笔业务在业务上是什么”。比如“客户张三于某日放款 10 万元,期限 12 个月,利率 4.9%”。它回答的是业务语义,这笔交易是放款、还款、展期还是提前结清。业务流水是给“业务人员、产品、流程”看的。

第二条:账务流水(账上怎么记)。 记录“这笔业务在会计上如何记账、账户余额如何变动”。比如放款在会计上“借:贷款(资产增加) / 贷:客户存款或内部账户(资金减少)”,涉及借贷分录、科目、余额变动。它回答的是会计语义,账怎么平、余额怎么变。账务流水是给“记账核心、总账、核算”看的。

第三条:支付流水(资金怎么实际划转)。 记录“这笔资金在支付渠道上实际怎么划付”。比如通过某支付通道、某清算渠道,实际把钱从 A 账户划到 B 账户,产生渠道流水号、手续费、清算结果。它回答的是资金清算语义,钱到底走没走、走到哪了。支付流水是给“支付系统、清算、渠道对账”看的。

这三条流水为什么要分开? 我用一个“还款日代扣”的例子说明:

客户还款 1 万元,系统同时产生: - 业务流水:一笔“正常还款”,本金 8000、利息 2000。 - 账务流水:贷款账户余额减少 10000,记账“借:客户存款 / 贷:贷款本金、利息收入”。 - 支付流水:通过某扣款通道实际从客户银行卡划走 10000,产生渠道扣款流水。

三条流水分开存储、分开管理,却通过“业务单号/交易流水号”关联起来。 好处是巨大的: 1. 各层独立演进:账务层改科目、支付层换通道,都不影响业务层。 2. 各层独立对账:账务流水要和总账对(总分对账),支付流水要和渠道对(渠道对账),业务流水要和客户账单对。 3. 问题可定位:某笔还款“业务上成功了、但钱没到账”,一查三条流水就能定位是账务没记账,还是支付没划走。

一句话记住三流分离的本质:同一件事,业务记录“是什么”、账务记录“怎么记”、支付记录“钱怎么走”,三者解耦、通过流水号关联、各自独立对账。 这就是“资金流与信息流分离”的第一层含义。

(二)记账核心与外围系统解耦

三流分离落实到工程上,就是记账核心(账务系统)必须和外围业务系统解耦。这也是我在银行做核心系统时反复强调的一条铁律:

图片

图 4-37 记账核心与外围系统的解耦架构

账务核心,是信贷系统里最稳定、最核心、最不能乱动的部分。 记账的科目、分录、余额,牵一发而动全身,任何不规范的操作都可能造成账实不符(而账实不符是监管大忌,第六节的监管红线框专门讲过)。所以账务核心要独立、稳定、接口化:

账务核心对外只暴露标准的记账接口(如“贷款放款记账”“还款记账”“利息计提记账”),业务系统只管调接口,不管账怎么记。

账务核心内部,科目、分录、余额管理封闭,绝不让外围系统直接改账。

账务核心的接口要幂等(第六节),配合流水号防重。

我再强调一遍第六节讲过的“账实一致”红线在记账层的体现:账务流水必须和业务流水、支付流水最终一致,业务说放款了、账上必须有这笔贷款;钱实际划走了、账上必须同步。这三者的最终一致,靠的不是“碰运气”,而是下一小节的对账机制。

(三)对账机制:渠道对账、总分对账、差错处理

对账,是资金流与信息流分离之后,保证“三条流水最终一致”的终极手段。 没有对账,分离就可能变成“各记各的、对不上”。我按信贷系统里最常用的三类对账给你讲:

第一类:渠道对账(和外部资金渠道对)。 信贷系统要接支付通道、代扣通道、合作方资金方。每天要和这些渠道对账,把我们记的支付流水,和渠道方返回的结算数据逐笔比对:我们记的扣款成功,渠道是不是也确认成功?渠道记的手续费,和我们记的对不对?渠道对账的核心是发现“单边账”(一方有、一方没有)和“金额不符”。

第二类:总分对账(账务内部对)。 账务核心内部,明细账(分户账)和总账(总分类账)要能对上,所有明细余额之和,必须等于总账余额。总分对账是发现记账错误、数据丢失的“体检”手段。我在银行做核心时,每日日终总分对账是雷打不动的,账不平系统绝不敢关账。

第三类:差错处理(对账发现问题后怎么纠正)。对账必然发现问题(单边账、长短款、重复记账),必须有差错处理机制:差错登记:把对账发现的差异登记成差错记录,进入差错台账。差错分类与分派:按类型(长款/短款/单边)分派给对应环节处理。差错处置:冲正(反记账)、补账(补记)、调整,都要留痕、可追溯(监管要求)。差错核销与报表:处理完核销,并纳入差错报表跟踪。

我整理一个完整的对账闭环流程图,你脑子里要有这条“闭环”:

图片

图 4-38 对账闭环流程图

对账的本质,我总结一句话:对账是分布式系统最终一致的“最后一道防线”,它把“靠方案保证”升级为“靠核验兜底”。 前面第六节讲的所有分布式事务、幂等方案,都只能降低不一致的概率,唯有对账能保证不一致“必然被发现、必然被纠正”。所以一套生产级信贷系统,对账机制不是可选项,而是标配。

【作者手记·一次被对账救了的宕机事故】

我在银行做代扣系统时遇到过这么一次:某次渠道接口异常,一批还款请求我们记了“扣款成功”,但渠道实际没扣到钱,典型的“单边账”。如果没有日终渠道对账,这些“假成功”永远发现不了,客户会发现“钱没扣但账上显示还了”,性质极其恶劣。

幸好对账机制扎实:日终对账第一时间抓出这批单边账,走差错处理(冲正+重新扣款+通知客户),把影响控制在最小范围。这件事让我彻底明白:分布式系统永远会出你想不到的问题,而对账就是那个“无论如何都能兜住”的保险。从那以后,我做每一个涉及资金的系统,第一件事就是搭对账,不是上线后再补,而是从设计第一天就把它放进架构里。