你在网店买了一件 100 元的衣服,用钱包绑定的银行卡付款。一秒后,页面显示「支付成功」,商户马上发货。可这时,商户其实还没收到钱:它要等到第二天,才在账上看到 99.4 元。

这中间的一天里,钱在哪?少掉的 0.6 元去了哪?更重要的是:每天有海量这样的支付,为什么「扣了钱没到账」「付一次扣两次」这种事几乎不会发生?这篇跟着这 100 元走一遍,看金融系统怎样让每一分钱都对得上,以及为什么金融的数据,首先要准。

金融的生意五花八门,绕不开的是两件事:钱要算准,风险要控住

领域

做什么

主要怎么赚钱

支付

帮个人和商户转账、收款

向商户收取交易手续费

银行与信贷

吸收存款、发放贷款

存贷利差、各类服务费

证券

帮企业发行股票和债券,帮投资者买卖

交易佣金、承销费

基金与理财

替投资者管理资金

管理费;代销平台收取销售相关的费用

保险

收保费,为风险兜底

承保利润,加上保费的投资收益

互联网金融平台往往同时做好几样:既有支付,又代销基金和保险,还和银行等持牌机构合作做信贷。下面只跟着支付这一样走,因为它最直接地回答了「钱怎么才能一分不差」。

一笔支付走两条线:信息流秒级完成,资金流要等到第二天

一笔支付走两条线:信息流一秒就告诉商户「成功」,钱要隔天才真正到商户;每天的对账保证两条线最后对得上
  1. 你在网店下单,选择用支付机构的钱包付款;

  2. 支付机构校验身份、做实时风控,然后向你绑定的银行发起扣款。涉及银行账户的网络支付,从 2018 年 6 月 30 日起要通过网联(非银行支付机构网络支付清算平台)转接,支付机构不能再直接连银行,这就是常说的「断直连」;

  3. 银行扣款成功,支付机构通知商户「支付成功」,商户发货。到这里只过了一秒多;

  4. 钱这时在支付机构的客户备付金里。2019 年 1 月 14 日起,备付金要 100% 集中交存,日终全部存放在支付机构于人民银行开立的集中存管账户里,支付机构不能挪用;

  5. 按约定的周期,支付机构算清楚该给商户多少(清算),再把钱真正划过去(结算):100 元扣掉 0.6% 的手续费,商户到账 99.4 元。

信息流是订单、扣款指令、成功通知,秒级就能完成;资金流是钱真正从一个账户到另一个账户,要走清算和结算,往往比信息流慢。系统设计里很多复杂度,都来自要让这两条线最终对得上。

监管也在不断完善。2023 年 12 月国务院公布《非银行支付机构监督管理条例》,2024 年 5 月 1 日起施行:设立支付机构须经中国人民银行批准,并且应当以提供小额、便民支付服务为宗旨。

钱不能凭空多,也不能凭空少:幂等和复式记账

假设你点了「付款」,网络卡了一下,页面没反应,你又点了一次。系统收到两个请求,但它们带着同一个订单号。支付系统要保证:同一笔订单无论请求几次,都只扣一次钱。这叫幂等,是防止「付一次扣两次」的第一道关。

第二道关是复式记账:账务系统里每一笔变动,都同时记在两个账户上,一边借、一边贷,金额相等。这 100 元在账上是这样走的:

时间

借(钱去了哪里)

贷(钱从哪里来)

金额

T 日,付款

客户备付金

你的银行存款

100 元

T+1,结算

商户账户

客户备付金

99.4 元

T+1,结算

支付机构手续费收入

客户备付金

0.6 元

无论中间过了多少步,所有借方加起来永远等于所有贷方,备付金这个中转账户最后正好清零。哪天借贷不平,就说明有一笔账记错了,这是发现错账最基本的手段。

每天对一遍账:差错是怎么被发现的

幂等和复式记账管的是自己的账。可一笔支付经过支付机构、网联、银行、商户四方,每一方都有自己的记录。对账就是每天把它们逐笔核对一遍。比如某天夜里核对出这样一笔:


银行

支付机构

商户

订单 A:100 元

已扣款

成功

成功

订单 B:100 元

已扣款

超时,记为失败

未发货

订单 B 的银行扣款其实成功了,只是成功通知在网络上丢了。用户被扣了钱,却没买到东西。对账把它找出来,作为差错单单独处理:要么补发「成功」让商户发货,要么把钱退给用户。扣了钱没到账的事之所以少见,不是因为它不发生,而是因为每天都有人把它找出来。

另外两个常见流程:信贷和基金申购

流程

主要步骤

关键在哪里

信贷

申请 → 风控审批,定额度和利率 → 放款 → 按期还款 → 逾期催收

风控决定借给谁、借多少、什么价格

基金申购

提交申购 → 按当日净值计算份额 → 份额确认 → 开始计算收益

工作日 15:00 前提交按当日净值,之后算下一个交易日

为什么金融系统格外较真

把上面这些放在一起,就是金融系统和一般互联网系统最不一样的地方:

要求

为什么

常见做法

钱不能错

一笔交易要么全部成功,要么全部失败,不能扣了钱没到账

事务、幂等、补偿、复式记账、每日对账

系统不能停

支付停一分钟,就是大量交易失败

多机房容灾、异地多活、灰度发布

风险要实时拦

盗刷、欺诈要在交易完成之前识别

实时风控:规则加模型,毫秒级决策

合规与隐私

要向监管报送数据,要保护个人信息

数据分级分类、脱敏、权限审批与审计

数据要准

报表直接用于经营决策和监管报送

统一指标口径、数据质量规则、血缘追溯

数据要准:大量的工作不在算出来,而在保证算得对

最后一行,就是数据团队的日常。我在蚂蚁来到了专门做数据的部门:分工比较细,每个方向都有较深的沉淀;金融业务对数据要求高,非常注重数据质量和合规;数据体量大,业务场景也足够复杂。

但正因为成熟,历史包袱也重。我做离线数据的那段时间,工作集中在取数和历史包袱治理上,其中最让我头疼的是 81 棵指标树。指标一多、口径一杂,同一个名字的指标在不同的表里就可能是不同的数,治理就成了绕不开的工作:

数据治理管五件事,排在前面的是质量:报表敢不敢用,取决于数据不错、不漏、不延迟。

我对治理的体会写在工作的这五年里:治理工作一般吃力不讨好,最好当成一个专项来做,不断完善机制、持续监控。快速增长能掩盖一切问题,但降本增效的大环境来了,开发和维护就一样重要。

后来我转回实时数据,有机会用数据湖技术重塑实时研发范式、实现降本增效。数据湖是什么,见数据湖:给对象存储装上数据库的能力。

为什么扣了钱几乎总能到账

回到开头的问题。那 100 元一秒就「成功」了,但钱要在备付金里过一夜,第二天才清算、结算给商户。它几乎不会出错,靠的是三道关:同一个订单号只扣一次钱(幂等),每一笔变动借贷相等(复式记账),每天四方逐笔核对(对账)。

同样一张报表,在金融业务里背后可能是经营决策,也可能是监管报送,口径错一点就不是小事。这也是为什么金融的数据团队分工细、流程重。想把这些用到自己的钱上,见普通人理财。

参考资料


全文评论

0

正在加载评论…