写点什么

支付系统概述(十三):资金风险管理

作者:agnostic
  • 2024-05-04
    上海
  • 本文字数:1554 字

    阅读完需:约 5 分钟

上一章介绍了支付成功率,以及影响支付成功率的因素以及应对。本章我们技术阐述支付系统另外一个重点:资金安全。


如果说支付成功率影响的是一个支付系统在市场上的地位,那么资金安全却是一个支付系统自身能够存续的关键。资金安全上出问题,直接损失的是利润而不是交易量。支付系统目前利润率一般维持在千五左右,如果一个大的资损时间导致了几百甚至上千万的损失,不光前看的利润可能化作乌有,甚至有可能导致整个支付系统的无法存续。


既然资金安全对于支付系统来说如此重要,那么这就值得我们在资金安全上投入足够的资源。

如何保证一个支付系统的资金安全,可以总结为几个关键词:规范、全面、冗余。


首先,规范。一个支付系统的开发,不管是设计、编码、测试和线上验收,都需要遵循基本的规范。

  • 流程要完整性:不论开发多简单的功能,都需要架构、开发、测试以及产品和业务的共同参与。各自把好自己的关口。

  • 编码要规范:类似金额处理要克隆、汇率处理要注意方向、未知异常不换单、一锁二判三更新等。前人的教训要成为我们日常开发的准则。

  • 开量要灰度:多小的功能,都需要能满足灰度的要求。先测试用户,再内部用户,然后逐步按照比例推全量。保证问题的尽早发现和尽可能控制影响面。


其次,全面。一个支付系统的资金风险,可能会发生在任何我们忽略的点上。所以我们对于风险识别需要全面。

  • 业务风险:包括市场上的汇率、流动性风险,业务操作的风险,法律和财务上的风险等。这些需要有专门的监控、发现和运营能力去支撑。同时需要专门的业务团队来负责。

  • 风控:用户和商户欺诈、信用、制裁等导致的风险,这部分有专门的风控系统去 cover。我们在前面也介绍了,这里不展开。

  • 应用系统风险:这部分包括内部应用系统错误和外部应用系统错误导致的风险。这部分风险,是比较容易被忽视也比较难发现的。而资金损失的重灾区,往往也在这里。


最后,冗余。这部分主要是针对应用系统风险而言。对于业务风险,我们也可以采用双录、审核等进行多层保障。对于应用系统,我们更应该遵循墨菲定律的描述,时刻牢记一个应用系统是永远会犯错的。杜绝错误是不可能的,重要的是发现错误和如何应对错误。

在稳定性上,我们是通过对计算、网络和存储资源的冗余保证高可靠性。在资金安全上,我们通过对算法的冗余,提升系统的正确性。

  • 核算反映:所有的业务行为都需要有记账,有核算反映。核算信息是交易信息之外的另一套算法逻辑。有了核算的反映,我们就可以明确虚拟资金流,并通过对于虚拟资金流中的账户、科目等的监控核对,发现业务交易上的异常。

  • 多层次对账体系:通过明细对账和汇总对账。核对我方和机构之间的数据一致性。如果我方的交易流水、机构的交易流水、机构的清算文件、银行的明细账单、银行的日终余额这五部分信息都可以交叉核对成功,一般来说资金的风险就不会太高。

  • 交叉验证算法:任何一种算法,都有可能发生被人写错的情况。所以,我们需要在正常的支付逻辑之外,有旁路的逻辑对数据进行核对,发现算法的问题。例如用户动账信息和用户交易之间的核对、用户交易和渠道交互之间的核对、用户兑换和外汇敞口之间的核对。这些核对需要包括实时和离线两套,同时需要支持双向核对。

  • 多源数据核对:对于汇率信息,我们不能相信某一个机构的报价。需要建立横向(机构自身价格之间)和纵向(多个机构之间)的价格的对比,发现异常价格,进行人工应对。


在应用架构上,我们需要建设独立的事实核对、离线核对、风险运营系统对风险进行多层次的防控。

在技术架构上,需要引入流动计算(实时计算)和数据仓库的能力,支撑大数据量的核对工作。


资金安全是一个支付系统的重中之重,本文仅仅简单介绍了一下支付系统资金安全需要考虑的点。具体的实施,每个支付公司都有自己的独门武器,这些都需要在实践中总结和沉淀。资金安全是一个持续性的工作,需要专门的团队来负责。


发布于: 刚刚阅读数: 5
用户头像

agnostic

关注

常识、KISS、高可用、合规架构、架构治理 2019-02-14 加入

二十年架构经验,互联网金融专业架构师。Open Group Master Certified Architect

评论

发布
暂无评论
支付系统概述(十三):资金风险管理_支付系统设计与实现_agnostic_InfoQ写作社区