关于系统架构:订单视角看支付

1次阅读

共计 9338 个字符,预计需要花费 24 分钟才能阅读完成。

领取是指为清偿商品交换和劳务流动所引起的债权债务,货币债务从付款人向收付人的转移的过程。领取能力是电商产品的外围能力之一,作为订单同学,有必要理解关联域领取的流程以及基本概念,同时领取畛域的很多设计思路与资损防控教训对订单域的零碎设计也很有借鉴意义。本文将从领取零碎的历史、基本概念、零碎设计、资损防控与订单与领取交互等方面予以介绍。

一、领取零碎历史与演进

领取的历史演进能够追溯到现金交易的起源。随着工夫的推移和科技的不断进步,领取零碎经验了多个阶段和改革。

起源:票号与钱庄

票号是应埠际汇兑需要而开设的金融专营机构,次要经营贷款、汇款、汇兑三大根本业务,是古代银行的雏形。客户在票号交了银子之后,票号就开出汇票给客户。客户能够随身携带汇票而不必携带大量的银子,只有凭票就能够到全国各地的分号兑出银子。分号给客户兑换之后先外部记账,各分号间定期会当面进行对账。镖局就专为票号来运送银子、为商人运送票据。在这种模式下,汇票 + 账本(手工记账)是票号在领取环节的信息载体,解决了信息流问题;镖局替票号运送资金,解决了资金流的问题。

第一阶段:手工联行(1989 前)

晚期,国内的金融环境没有达到让央行推广全国对立结算制度的客观条件。于是央行过后提出商业银行要“自成联行零碎,跨行间接通汇,互相发报移卡,及时清理资金”。同一家银行的总行及分支机构称为“联行零碎”。同一联行内的资金结算,由联行总行本人做。跨行业务能够由央行清理,也能够由商业银行本人清理。在这种模式下,各银行须要告知其余行的交易信息形成了特定的公文,加盖印鉴后在银行间传送。这种公文叫做联行函件,而过后的邮电局则承当了收发联行函件的重要业务。

联行函件整个过程根本都是手工解决,与明清期间的票号相比,并没有太大的改良。尽管运行老本较低,但容易呈现过错,且资金汇划效率仍旧不高,导致占压在途结算资金较多,如异地间资金的汇划,少则 10 多天、多则半年能力实现资金到账。

第二阶段:电子联行(1989~2005)

1990 年,中国人民银行清理核心建成,专门为金融机构提供领取清理服务。清理核心包含 NPC(National Process Center,国家金融清理总核心)和 CCPC(City Clearing Processing Center,城市解决核心)。1991 年 4 月 1 日,全国电子联行零碎(EIS)开始试运行。EIS 是基于金融卫星通讯网的,它是人民银行专门用于解决异地(包含跨行和行内)资金清理和资金划拨的零碎。它连贯了商业银行、央行、NPC 和 CCPC。以一位上海招行银行卡的用户要给持有北京工行银行卡的敌人进行汇款,应用 EIS 实现一次领取清理的案例如下图所示:

借助全国电子联行零碎,传票和凭证已变为加密后的电文,与纸质联行相比,提高微小。客户的资金在途工夫缩短到了一两天,大大提高了资金清理的效率,能够说是一个重要的里程碑。

第三阶段:现代化领取零碎(2005~ 至今)

中国人民银行领取清理零碎(China National Automatic Payment System)是为我国金融机构之间以及金融机构与人民银行之间的领取业务提供最终资金清理的重要外围业务零碎,整体架构如下图所示:

简略介绍下该零碎的几个外围子系统:

在现代化领取零碎投产之前,即便是电子联行零碎也须要一到两天能力可能到账,而现代化领取零碎将领取后实时到账变为可能,极大的进步了领取效率,晋升了消费者的领取体验。技术改革往往会带来新的商业机会和改革,推动企业进行翻新。国内的支流电子商务与电子领取平台起也从 2003 年开始衰亡,这里现代化领取零碎的投产工夫(2002 年、2005 年)十分靠近,很难说两者之间毫无分割。

二、领取零碎基本概念

外围概念

领取零碎个别指提供领取清理服务、实现领取指令传送及资金清理的零碎,由有领取牌照的领取公司提供。领取零碎是连贯消费者、商户(或平台)和金融机构的桥梁,实现了领取、资金清理、查问统计等性能。这里零碎的解释一下波及到的相干名词,便于咱们后文开展具体介绍。

罕用领取模式

平台领取

用户提前注册并登录到第三方领取平台,并且曾经在该平台上实现绑卡等操作后,通过第三方领取平台进行领取。

网银领取

用户在实现必要的银行网银开明手续后,能够通过银行的网银零碎进行在线领取和转账。在进行网银领取时,用户须要登录银行网银零碎,输出相应的领取信息并进行身份验证,而后能够实现在线领取交易,挪动互联网时代较为少用。

快捷领取

一种简化了领取流程的领取形式。通常状况下,用户在首次领取时须要绑定银行卡或者进行一次认证,之后就能够应用该领取形式来实现交易,无需反复输出银行卡信息或进行繁琐的身份验证。在后续的领取过程中,用户只需进行简略的确认操作或者输出领取明码,就可能疾速实现交易。

协定领取

协定领取也称代收或者代扣,代收指渠道受权商户能够从用户的银行账户中扣款,个别用于定期扣款,如水电煤气、有线电视费、包月 / 包年会员费等。

虚构货币领取

不少公司会有本人的虚构币,这些虚币也能够作为一种领取形式。个别会有一些金额、品类的限度,如虚构领取不得超过每笔订单结算金额的 50%。

余额领取

为用户建设本地账户并应用账户来实现领取,账户反对充值、提现等操作。

信用领取

指应用信用账户进行透支,相似信用卡领取。须要较强的风控能力。

三、领取零碎简介

整体架构

在理解了领取零碎相干演进与基本概念后,咱们再来看一下领取零碎的整体架构。对于订单同学来说,在理论领取业务的接入过程中,能够接触到两类领取零碎:

第三方领取零碎:即订单同学了解里的“领取渠道”。比方咱们作为商户间接对接到微信、支付宝的领取零碎中,从而具备领取收款能力。整个零碎中的“外围零碎”性能往往是大家最为相熟的局部,它概括了咱们平时各种生产领取场景。咱们平时进行的电商交易、红包转账等都是“领取利用”的体现模式。

实际中,三方领取零碎往往能够拆分为网关、金融替换、收单域、领取域以及账务域、会员域、营销域等多个畛域。

聚合领取零碎:即订单同学通常了解里的“领取”。次要性能为屏蔽各种第三方领取零碎的差异性,提供对立的接入形式和领取产品,比方得物的汇金零碎。

一个比拟典型的电商平台的领取架构

领取流程

用户领取流程

从流量角度来看,对于一次用户发动的领取行为,申请首先达到领取网关,通过必要的平安验证和流量限度后,被转发给对应的领取服务模块。随后用户跳转收银台页面抉择领取形式后确认领取,由领取零碎对接银行 / 第三方领取机构的领取接口进行后续的领取。

领取接口

以业内某领取产品为例,其提供了多种集成领取能力的形式,其中「手机网页领取」实用于商户无独立 App,通过挪动端 H5 网站进行流传的形式。咱们以一次手机网页领取为例,理解领取的外围接口。

如上图所示,能够从交易领取的几个环节进行剖析。

  • 领取接口
  1. 在商户的 H5 网站下单并确认领取。
  2. 商户系统生成订单信息并结构领取申请发送到该领取产品零碎。
  3. 零碎校验通过后拼装本次领取所需参数返回给商户前端。
  4. 商户前端将页面跳转至该领取产品官网两头页,如果用户手机上安装了该领取产品 App,则主动唤起 App;如果未装置,则持续在以后页面进入官网 H5 收银台。
  5. 用户实现明码输出并领取。
  6. 零碎外部实现本次领取单解决流程。
  7. 解决实现后,以异步音讯模式告诉商户后盾 Notify_URL,确认此次交易胜利。
  8. 解决实现后,从官网两头页跳转商户自定义领取后果页 Return_URL,展现领取后果。
  9. 实现本次领取。
  • 交易敞开接口

针对须要的业务场景,反对被动勾销订单(针对未领取订单,已领取单可走退款流程)。

  1. 用户发动 / 商户后盾管理员发动订单勾销申请。
  2. 商户零碎向该领取产品零碎发动敞开订单申请。
  3. 后盾判断解决后返回勾销后果。
  • 交易查问接口
  1. 商户后盾发动交易查问申请。
  2. 零碎判断交易单存在,并返回交易后果。
  • 退款接口
  1. 用户 / 商户发动退款申请
  2. 商户零碎审核解决退款申请是否非法。
  3. 非法状况下,商户零碎向该领取产品零碎发动退款申请。
  4. 零碎解决并返回后果。
  5. 相干渠道将资金返回(有肯定时间延迟)。
  • 退款查问接口
  1. 用户 / 商户发动退款查问申请。
  2. 零碎解决后返回后果。
  • 下载对账单接口
  1. 商户零碎依据业务对账须要,发动对账申请,查问最新的对账单下载地址。
  2. 零碎返回对账单下载地址。商户零碎依据对账单下载地址下载对账文件。
  3. 零碎返回对账单文件。

资金流与信息流

央行在 2017 年 8 月公布《对于将非银行领取机构网络领取业务由直连模式迁徙至网联平台解决的告诉》,规定了非金融领取机构受理波及银行账户的网络领取业务全副通过网联解决。目前业内采纳的都是“间连”模式提供网络收单服务。这里以一次银行卡网络收单领取交易流程为例,整体资金流与信息流如下:

  1. 【信息流】步骤 1 用户通过电商领取收银台下单并领取,电商领取解决领取业务数据,并将领取申请发到第三方领取渠道。
  2. 【信息流】步骤 2 第三方领取将申请转发至网联。
  3. 【信息流】步骤 3 网联将领取扣款申请转发到发卡行。
  4. 【资金流】步骤 4 发卡行从用户银行卡扣款,用户银行卡金额缩小,返回领取胜利给网联。
  5. 【信息流】步骤 5 网联记录领取胜利数据,返回领取胜利给三方领取。
  6. 【信息流】步骤 6 三方领取回调电商领取零碎,更新领取状态和记录领取信息。电商领取回调订单零碎,更新订单状态,给用户返回下单胜利。
  7. 【资金流】步骤 7 网联周期性对三方领取业务做清结算,通过央行清理零碎做资金清理划拨到三方领取机构备付金托管所在银行。
  8. 【信息流】步骤 8 三方清结算服务对货款商户领取交易记录做清理和结算,具体细节如下:
  • 清理服务依据交易因素对商户主体交易依照约定的计费规定进行清理,记录商户主体因为商业交易而产生的债权债务,周期性生成对应的结算凭证。
  • 结算服务依照约定结算周期和形式对商户主体产生的债权债务进行清偿, 申请网联结算打款。
  1. 【资金流】步骤 9 网联通过周期性清结算形式模式做资金划拨到商户收款所在银行。
  2. 【信息流】步骤 10 商户结算收款银行账户显示货款到账。

从上图看,步骤 1 到步骤 6 体现了付款方付一笔钱的流程,示意了三方领取一笔收单业务的信息流和资金流,其中步骤 4 中付款方的银行卡余额会被实时扣减,发卡行侧记应酬未付。步骤 5 网联记录领取交易相干数据作为跨行清结算业务的根据。步骤 6 三方领取侧更新领取交易后果并逐层告诉至订单零碎,同时把领取胜利音讯同步给三方的清结算,清结算根据交易领取的结算因素做清分分录,记录商户应结资金和应收手续费。步骤 7 属于资金流。由网联负责跨行周期清理,网联通过央行清理零碎实现资金划拨后资金到了三方备付金账户。步骤 8 属于资金流。三方领取实现周期性结算凭证生成后通过网联发动结算打款,最终资金到账工夫依赖于网联清理 + 资金划拨的工夫。自此,一笔电商交易通过用户银行卡扣款、网联清结算、三方领取清结算,最终实现钱货两清。

资金结算

清结算是对交易领取数据进行全面整顿、计算、汇总、查看核查和最终结算的过程,可拆分为清理和结算两个子域。清理域服务依据交易推送的信息,依照约定的计费规定进行清分、汇总,记录主体因商业交易而产生的债权债务,并定期生成相应的结算凭证。结算域依据约定的结算周期和形式,对商户主体产生的债权债务进行清偿。清结算确保了金融交易的安全性和准确性,保障各方权利。

形象的来看,领取波及业务次要可分为收、付、退、提、转、充等 6 大类(对于订单同学来说更关怀的是收、付、退三大性能,对应订单的购买、履约、售后三个子域)。资金结算个别分实时结算与定期结算,咱们以定期结算为例,剖析整体资金结算的简版流程。

计费

计费为通过对应的计费规定将业务流水音讯转换为清结算的资金语言,生成对应的结算资金明细。

  • 匹配 以交易业务的流水信息路由匹配到相应的计费规定。
  • 清分 依据计费规定,将资金划分给交易中的不同角色,生成对应的计费后果与资金摊派明细。简略来说就是算清楚哪个费用项,多少钱,谁给谁。
  • 分录 落地计费明细与结算明细变更。

汇总

依据清理明细,依照资金指令以及时间段进行汇总操作。

校验

次要是对整个结算的模型、指令以及单据、工作的完整性校验,以及账务资金核查查看等,确保最终结算前的数据无误。

结算

生成账单并执行相应的资金指令,实现最终的资金转移。

资金平安

领取业务的资金平安次要能够从精确、合规两个方面了解:

  1. 精确
  • 信息精确:即信息不错不漏不重。应答思路为流程上的容错机制以及核查来实现。
  • 机会精确:即不早不晚,应答思路为核查以及监控预警。
  1. 合规
  • 二清合规

流程容错

单据关联

正如某些订单域外部的多种单据间存在关联关系一样,领取设计上也有单据间关联的设计。例如从流程上来说所有的逆向过程都必须持有正向的单据,因而退款必须要关联到原来的领取,退款领取单要关联到原领取单。单据之间的关联只有有以下用处:

  • 状态一致性:正如订单域中的订单单据如果胜利,则订单关联的营销单、领取单肯定胜利一样。领取场景的各个单据的状态也存在关联关系,例如创立退款领取单的前提是所关联的原领取单必须胜利。
  • 金额一致性:金额管制是退款的一个外围问题,管制不好很容易产生资损。因为反对屡次局部退款,金额必须避免退超,这里蕴含两个维度,一个是总金额不能退超,一个是各个维度的资金组成组成不能退超。具体的做法是,每一笔退款的金额,都会在原单上累加记录到已退金额,记录已退款的总金额,校验不可超。

幂等

通过惟一键实现幂等是较为常见的实现形式。例如订单侧常见的反复领取退款是以订单号关联 PaymentNo 做反复领取校验的惟一键,领取侧交易单以内部单号 + 商户号为惟一键,领取单以交易单号 + 操作码作为惟一键。幂等能够无效的避免操作不反复,这里须要额定留神的是,幂等的可重入问题:例如对于一笔整单退的申请,上游申请退款 200 元,领取域曾经解决胜利,上游因为超时基于同一笔领取单号进行进行退款重试,此时应该返回胜利而非业务校验异样。

重试

最大致力告诉是领取畛域常见的流程容错伎俩,分布式环境下,网络抖动、服务临时不可用等都会造成业务流程解决异样,常见的策略为将申请放入 MQ 进行异步重试,重试距离逐次拉长,重试如果胜利,则回调交易,如果失败或者解决中,则持续重试(所以接口幂等反对可重入很重要,对重试更敌对)。

  • 例如订单收到领取胜利回调后,开始解决订单流程。如果在下单阶段仅锁定库存、营销等资源,须要在领取回调流程真正扣减资源的话,这里须要对超时等场景进行重试(调用上游须要做好幂等),如资源扣减失败则关单退款

重试指定次数如业务单据仍未达到终态,则将订单信息长久到数据库中,告诉人工进行解决。

  • 例如用户卡登记,会员销户等问题导致退款退不进来,重试肯定次数后领取单只能置为失败。期待产运分割用户后,在领取层从新生成退款领取单进行退款。

核查

核查是保障资金平安的重要机制。从时效角度来看,次要有(准)实时核查与离线核查(如 T+1 核查),实时核查的准确性不如离线核查,且须要相应的实时核查平台建设(例如得物的 DCheck 平台)。离线核查次要的问题是发现问题的机会较为后置,局部场景会影响零碎的时效性。例如清结算与账务侧的每日资金核查失败会影响结算时效性。

从核查维度来看,次要能够有如下几种核查形式:

一致性核查:

资金在从业务端终点(数据由业务产生)到财务端起点(最终流入财务零碎)中,在链路中的各个系统 / 表中都留有相应的凭证。例如交易一笔订单的实付金额对应着领取的一笔领取单的领取金额,商户一笔收单或领取退款会在对应的商户待结算户产生一笔动账,对应在清结算会做一笔有资金方向的清分分录。对这些金额咱们能够建设相应的一致性核查工作进行核查验证。

一致性核查包含双向一致性核查和单向一致性核查两种,单向一致性核查无奈发现单边数据缺失问题。

业务正确性核查:

在特定的业务场景下,业务有本身的业务规定,能够针对这些业务规定进行校验。常见有以下四种形式:

  • 个别正确性校验:例如某些领取业务只能用于特定的商品类型,则能够通过自定义 SQL 校验规定来进行校验。
  • 总分校验:各个子金额汇总该当等于总金额。
  • 程序性核查:业务流程中有顺次执行的解决流程,则能够校验是否有流程缺失。
  • 幂等性核查:校验是否有业务被异样的反复解决,如反复退款等。

时效性核查:

次要核查时效相干,如未领取的领取单在超时后是否及时敞开,结算机会是否满足时效要求等。

危险额度核查:

对一些可能有高风险的要害配置与金额相干额度进行校验,如分账比例 <=30%、不能负佣、总营销金额不能超过每日下限等。

总的来说,对实时性较高的工作采纳实时核查,而日终查看等采纳离线核查,通过对领取全过程的监控预警以及失败 case 产研及时染指解决,从而保障了资金平安的准确性。

资损攻防

也就是咱们业内常说的混沌工程,通过注入故障能够无效的验证咱们的零碎是否足够强壮以及监控核查是否及时无效,常见的实现形式有:

  • 通过模仿外围依赖超时等异样场景,验证容错重试流程是否能够失常工作。
  • 模仿资损外围字段落库异样的场景,验证监控核查是否能够及时发现。当然也能够通过旁路攻打的形式,如批改数据库的 binlog 字段而非间接批改数据来查看是否触发告警,这样对线上业务的影响会更小一些。

二清

对订单同学来说,二清就是在下单时查问商户对应的领取二级商户信息并传递到领取与结算。那么什么是二清?二清合规问题是如何解决的?

什么是二清?

首先咱们通过几个案例来理解下什么是二清。

二清问题实际上能够分为“资金二清”与“信息二清”:

  • 资金二清:指无证机构通过平台或大商户模式截留积淀了应间接结算给二级商户的资金,再通过其余形式实现二次清理,实质性的管制整体结算资金。
  • 信息二清:信息二清层面,监管不仅要求平台不能进行“资金二清”,同样也要求其提供的交易信息实在可追溯,且分账信息是商户实在志愿。

信息二清次要为了防止平台应用了合规的三方领取机构,尽管不触碰具体的资金结算,但把握了原始的交易订单数据、分润信息和商户资金结算的入账规定,使银行或领取机构依据其提供的分账规定、指令为商户入账,本质上通过平台分账指令传输主导了结算资金的方向。

电商公司晚期求生存是更次要的问题,在整体领取零碎演进过程中,往往都采纳二清的模式。这外面用于公司对立收款的账号咱们称之为“大账户”。资金通过用户流向公司的大账户,在通过结算最终流向卖家。这里存在肯定的合规危险:

  • 资金挪用危险:平台代为几种收款,有擅自挪用的危险
  • 资金监管危险:无证机构向平台入驻的商家结算资金,游离于监管体系之外
  • 交易信息危险:无奈保障平台提供交易信息的真实性,有伪造的危险

近些年随着监管越发成熟,电商公司因为领取不合规被责令整改的新闻不足为奇,随着公司业务规模的倒退,二清合规问题也愈发迫切的须要失去解决。

二清解决方案

对于二清问题,通常有两种解决形式:

  • 通过申请或收买的形式取得领取牌照,使平台取得非法的资金清理能力(牌照较低廉,老本较高)。
  • 接入三方领取公司的二清解决方案(聚合领取零碎需配合接入革新)。

目前得物采纳的是第二种计划,咱们以某宝的二清解决方案为例,简略介绍得物是如何通过某宝的互联网平台直付通产品解决二清问题。简略来说,得物平台上的二级商户须要入驻某宝成为某宝的商家,买家在得物的订单领取胜利(反对多个商家的订单合并领取)后,某宝记录对应商家待结算资金,待平台确认可结算时,某宝将资金间接结算至商家指定的收款账号。同时反对平台按订单灵便抽取佣金(也就是咱们常说的分账)。

这外面有几个外围的概念:

  • 分账抽佣 :可依据理论业务场景将交易资金分账到其余业务参与方的领取产品账号(例如:平台抽取佣金、其余方服务费等)。目前反对单个平台 最多 20000 个 参与方的分账,单笔交易订单 最高分账比例 30%
  • 结算:买家确认收货后,得物通过资金确认结算性能,将整笔订单结算给二级商户收款账号,最长账期反对 365 天,超过 365 天订单主动结算。
  • 营销补差:平台举办平台出资的营销流动,如跨店满减、全场通用券等营销伎俩,资金结算后,平台向该领取产品发动补差指令,将营销资金补到二级商户的账号。

简版流程

  • 买家领取订单,订单触发分账,将钱转入卖家待结算户,此账户金额对卖家不可见
  • 用户确认收款,得物平台发动结算指令,该领取产品将卖家待结算户的钱依照当时在该产品后盾配置的分成规定进行分账。别离流入得物的该领取产品账户与二级商家已结算户,此时卖家就能够看到本人的账户余额减少了
  • 卖家将二级商家已结算账户的钱提现等操作。

当然这里还有一些撤销分账、补差等细节流程,这里就不做过多的开展了,感兴趣的同学能够浏览三方领取公司的二清解决方案相干文档。

四、订单与领取

得物订单与领取交互

因为监管 KYC 的要求,一笔领取单不仅须要领取相干信息的如领取形式、领取金额、领取无效工夫等,也须要订单的买家信息、卖家信息、商品信息等等。这些信息客户端无奈全副给到,且基于平安的角度,也不能由客户端通过公网传参的形式传递,须要订单域与领取域进行交互传递相干信息。目前得物领取提供了下单模式(业务方调用领取零碎创立领取单)和反查模式(业务方实现 PayInfo SPI,领取零碎反查业务方获取领取信息)两种模式,目前订单是依照反查模式与领取交互。

订单开发中常见领取相干问题

0 元订单

微信 / 支付宝等常见三方领取文档里有阐明,领取金额 Total_amount 字段取值最小为 1(1 分钱)。因而如果 0 元订单还创立预领取单的话会失败。之前有订单域通过注册定时回调工作,伪装成一个收银台领取回调的形式来实现 0 元单回调,实际下来会踩坑(与理论业务流程不符,假装的回调须要不停适配领取回调的改变)。正确做法是对于 0 元订单,只走创立商户订单的流程,并间接更新订单状态,不走领取回调流程。

领取订单过期工夫设计

在电商交易系统中有两个过期工夫的概念:订单过期工夫和领取单过期工夫。这两个工夫会产生时间差的起因在于:用户在「确认订单页」点击「提交订单」就会创立订单并跳转至收银台,此时开始锁定库存并计时;而用户在收银台停留的工夫是不确定的,这部分不确定工夫造成了时间差。具体来讲,如果用户点击「去领取」创立预领取单时传递的过期工夫是个固定值,那么就有可能会呈现一种状况:在订单零碎该订单曾经过期生效了,但用户在领取平台内还能领取该笔订单(而此时领取胜利回调订单零碎,订单已勾销,零碎是不会进行后续发货流程的)。因而,领取单的过期工夫要联合领取单创立以后工夫和订单创立工夫一起动静计算得出,保持一致,从而给平台用户提供更好的生产体验。

五、总结

总的来看,理解领取零碎有助于订单交易方向的同学理清上下游,更加全面了解电子商务四流中的资金流。同时领取零碎在资金核查、流程容错方面有着十分经典的设计,值得咱们去学习借鉴。

参考文章:

1. 银行、票号兴替与清末民初金融改革 
2.https://baijiahao.baidu.com/s?id=1774618341934674551&wfr=spider&for=pc
3.https://download.csdn.net/blog/column/9276612/108820800
4.https://www.sohu.com/a/314762715_348231

* 文 / 申尧

本文属得物技术原创,更多精彩文章请看:得物技术官网

未经得物技术许可严禁转载,否则依法追究法律责任!

正文完
 0