当前位置: 首页 > 科技观察

解密支付平台建设资金底线防火墙杀手级设计方案

时间:2023-03-20 11:20:16 科技观察

在金融支付行业,资金底线非常重要。保证资金不流失,是任何金融支付行业最重要的任务。其中一项最艰巨的任务,对于支付公司来说,每天的支付流量达到数亿、数十亿,甚至数十亿到数百亿,甚至上千亿的情况并不少见。面对如此大的资金流,我们该怎么办?如何保证资金安全?大家应该都听说过美股券商奈特资本(KnightCapital)因错误的交易持仓导致税前亏损4.4亿美元的故事。随后,KnightCapital股价下跌63%至2.58美元,市值缩水。至2.53亿美元,仅为几天前的四分之一,股价再次下跌17%至2.14美元。这起事件是由KnightCapital的一个小“技术问题”引起的,导致其向交易所发出了错误的股票交易指令。所以,如果我们做的是金融交易系统,保证资金安全是底线。只有保证了资金的安全,才能盈利,盈利才能让我们的公司活下去。接下来让我们的盈利模式进入批量模式。我们可以把公司做大做强。金钱损失和金钱的底线我们如何定义金钱损失?在从事金融支付活动过程中,由于人为或系统原因造成的资金损失称为资金损失。例如,在某电商交易过程中,平台单方面发生,支付不成功,但通知用户下单成功并发货。这是典型的平台单方面造成的资金损失。为确保资金不流失而采用的客观和主观方法是资金的底线防火墙。我们把这些方法称为保证资金底线的方法。基金的底线是一个非常专业和非主流的概念。维基百科或其他渠道没有官方定义。我们用例子来说明,帮助读者理解基金的底线。例如,我们将支付成功通知与原始支付信息进行对比。典型案例是通过唯一ID和金额保证资金底线,保证不发生单边交易。在本文的后半部分,我们将重点关注第三方支付行业的资金流失风险和资金底线防火墙的构建。从支付业务划分资金底线风险在第三方支付行业,业务通常分为通过资金流转获取和支付。在这里,我们分享了获取和支付资金的底线风险的可能情况。收单资金底线风险收单业务是第三方支付的主要业务之一。由于收单业务可以结合多种交易场景,也是一种省钱的业务,交易量大,风险高。专业。单边是收单业务中最典型的底线风险。单边一词来自金融业。在收单结算过程中,很容易出现“单边账”。单边账:即一方账户发生变化,而另一方的账户没有变化,由此产生的问题是,钱去了哪里?这一幕又分为长短两种情况。长期:上游给我的报酬比下游多。短付款:上游支付给我的钱比我给下游的少。我们看到长期账户其实就是我们的资金比账户多,没有资金损失。百分之九十九的单边账户是多头账户。如果有短期账户,那将是一场灾难。这也是基金最严重的底线风险,我们应该坚决杜绝。那么在第三方支付平台上,所谓的单边通常是指金融行业的单边账户做空付款,也就是导致我们资金流失的情况,因为在第三方工作的小伙伴-partypayment都不是金融专业的或者不熟悉金融的,所以大家把单边账的短款称为单边,这里我们也按照这个习惯来解释一下。下面是一个典型的第三方支付收单机构的示意图。第三方支付系统接入商户系统,接入银行系统。因为处在承上启下的环节,最容易在收单方产生底线资金风险。简单来说,收购单边资金的底线风险是下游系统故障,但由于某种原因,典型的是系统bug,返回上游系统成功。如果上游系统是商户的电商系统,很有可能已经发货了,造成资金损失。从制度层面,我们将单边分为以下三种类型。1.第三方支付系统与银行之间的单方。这种单边发生在第三方支付系统和银行之间。由于某种原因,银行系统支付失败,第三方支付系统支付成功。2.第三方支付系统内的单方。这种单向发生在第三方支付内部的系统之间。由于某种原因,第三方支付底层系统支付失败,而上层系统支付成功。3、第三方支付系统与商户之间的单方。这种单边发生在第三方支付和商户系统之间。第三方支付系统因故支付失败,但通知商户支付成功。对于以上三种情况,一定要坚决避免,或者及时发现止损。另外还有两种特殊的单边场景,一种叫金额单边,一种叫单号重复单边。1.金额单方订单在银行实际支付的金额小于第三方支付的订单金额。2、单边上位交易系统中多笔订单号重复的订单对应银行子系统中的同一笔订单。基金支付底线风险支付业务也是第三方支付的重要业务之一。具有交易量大、单笔交易价值高的特点。支付业务更容易产生资金底线风险。付款、多付和错误付款也很常见。财务损失的具体情况如下。1.重复支付订单多次支付,造成资金双倍损失。2.多单支付总金额大于订单金额,其中较大部分为资金损失。3.订单支付错误,支付给其他商户。4、未扣款的款项不从商户账户中扣款,资金直接从备付金账户中扣除,转入商户账户或企业银行卡。从时间上规避资金底线风险的方法我们从资金底线发生的时间点来总结规避资金底线风险的方法。这些手段共同构成了资金底线的防火墙。根据经验提前规避,分析资金底线风险发生的情景,阻断该情景发生的必要条件,避免该情景的发生。这种方案是最好的方案,也是最难实现的方案。一般通过总结历史上线事故,找出发生过的典型资金风险场景,根据场景特点设计规避方案。例如:付款后,资金进入账户。进入账户时,通过通道查看支付是否成功。如果不成功,该帐户将被拒绝。事中拦截事中拦截是避免资金损失的一个非常重要的解决方案。是通过支付的特征来识别支付过程中是否发生了资金底线风险。如果被查出,可以及时拦截,防止事情进一步恶化。.例如:当通道收到银行返回的支付成功通知后,会检查返回通知中的支付成功金额是否与支付订单一致,如果一致则向上通知。事后止损对于某些场景,我们通常没有办法完全规避和提前拦截。这种情况下,我们通常会通过对账、监控等方式发现问题,并提前预设好止损的操作功能。一旦发现问题即止损。比如:我们通过监控手段知道某个渠道的成功率低或者高,然后我们会报警,我们可以通过运营决策关闭某个渠道。主观方面避免财务损失很多时候比较大的财务底线事故都是人为因素造成的,往往忽略了人为控制的多个阶段,导致最后的“悲剧”。这也难怪,我们是人,我不是神。每天都受到生活、家庭、工资、心脏受伤程度等各种因素的影响。偶尔跑个短差在所难免。从主观上看,避免经济损失主要是通过分析人和采取策略来避免经济损失。在我工作的几年里,我一直负责资金的底线风险。作者使用了两个重要的监管解决方案来避免财务损失。1、定期向小伙伴宣讲保护底线的重要性。笔者曾多次对新员工和小伙伴进行底线培训。一方面,汇报底线项目的进展情况,以及之前发生的底线事故的案例分析。也提醒小伙伴们在设计的时候首先要考虑资金的底线。我经常对朋友说:一个业务或者一个功能,可以难用或者不赚钱,但是不能赔钱。2、设计审查中应增加资金底线审查项。笔者这几年一直在回顾支付平台的架构设计。对于笔者审核过的所有方案,笔者都会引导小伙伴思考是否存在财务风险。如何应对资金风险,经过笔者对该方案的审核,资金风险很小。客观避免经济损失虽然我们可以通过主观培训和设计评审来提醒大家有资金底线保护的意识,但是由于我们每个人,包括测试人员,每天的状态和情绪都不一样,所以表现也会有所不同。同样,因此,我们也不能完全靠人来保证资金的底线。我们应该寻找能够保证资金底线的客观规律,并将这些客观规律落实到制度中去,使制度的资金不能动摇。我们总结有几种方法。1.支付、渠道、账户三方验证上述案例中,一次支付完成后,资金进入账户。进入账户时,通过通道查看支付是否成功。如果不成功,该帐户将被拒绝。通过这种对支付、记账、渠道系统的客观三角闭环验证,可以避免资金损失。三角剖分检查如下图所示。1).通知和渠道??的端到端验证。第三方支付系统与商户交互的系统是通知系统,与银行交互的系统是通道。通知和渠道??是系统上下的两个边界。控制两条边界不产生顺序边是一个非常重要的任务,可以通过端到端的检查来保证。Head-to-tailcheck的示意图如下。2)渠道与银行验证支付成功后,银行通知第三方支付后,第三方支付渠道系统会实时查询银行比对状态和金额。部分银行由于设计问题不支持实时查询,可以退而求其次,与银行增加分钟级的异步验证机制。3)渠道成功率监控监控渠道成功率过高或过低也很重要,防止系统bug把本不该成功的支付都认为成功。4)自动化底线防火墙人总是会受到各种环境的影响,完全靠人来保证代码质量并不是万无一失的。因此,我们应该寻求自动化测试的解决方案。事实上,第三方支付的产品形态主要是API产品。非常适合自动化测试。因此,我们需要从两个方面寻求自动化。一是自动化管理测试用例,不断积累测试用例,并对测试用例进行分类。哪些是业务测试用例,哪些是基金底线测试用例?资本底线测试用例应该在生产环境之前在内部环境进行测试,并且应该由系统自动触发。必须集成在devopsonline流程中,不能跳过。如果这部分自动化资金底线测试不通过,则不准上线。在下图中,我们看到我们为内部环境搭建了一个自动化的底线测试防火墙。1)在渠道试运营过程中,资金底线风险通常在渠道系统中释放,因为渠道系统总是需要对接新的银行渠道,往往在河边行走,没有办法弄湿鞋子。所以,在上线新渠道的过程中,一定要保证有一个试运营阶段,运营一定要仔细观察支付结果,而且要有足够的时间,至少要到第二天才能看到银行的清算单据和对账单据,与发起的真实交易一致,才算新渠道开通成功。2)万无一失的资金对账资金对账是第三方支付保障资金安全不可或缺的手段,主要是通过第三方支付信息与银行的对账,通常银行会提供清算凭证和对账凭证,清算单记录了第三方支付的所有交易,对账单是银行提供的备付金账户资金当日的账户余额。通过这两个对账单,一个代表信息流,一个代表资金流向,这样就可以把所有的资金对账都说清楚了。3)负责人底线验收。重要功能上线,必须指定负责人。负责人要对资金底线负责,功能上线前要验收。在这里,必须坚持负责到底的原则。不要让每个人都负起责任。结果大家都不负责,除了问题,大家都有责任,谁负责,谁来做底线验收,谁上线谁就得到最好的回报。只有这样,才能保持良性循环,促使大家对事情采取负责任的态度。4)系统间的一致性检查在第三方支付系统中,由于业务的复杂性,通常采用分布式架构或微服务架构来实现系统。一个流程是根据功能在多个系统中实现的,那么每个系统都有自己的支付状态,各个系统之间如何协调呢?这就需要进行系统间的一致性校验,即系统中任意两个相邻的系统都需要校验支付订单的状态。执行底线保护任务的方法论如果你有幸在你的支付公司负责底线保护任务,恭喜你,只有关键核心人员才能做这个工作,但是换句话说,这个工作在其实很吃力不讨好。如果你做得好,你应该这样做。如果你做得不好,那是你的责任。不管怎么样,还是要把事情做好。如果您收到此任务并感觉无法开始,那么请参阅下面的方法。审查以前发生的所有资本风险案例。梳理所有可能出现资金风险的场景。根据发生资金风险的情况和情景,形成规避、拦截和止损的预案。制定计划并跟踪计划的执行情况。【本文为专栏作家“李彦鹏”原创稿件。转载可通过作者简书号(李彦鹏)或专栏取得联系】点此查看该作者更多好文