支付路由的动态配置实现

背景

近期,在接触到决策引擎后,突然回想到以前在上家单位,做支付路由系统时所经历过的点点滴滴,当初对于支付路由毫无概念,网上资料十分匮乏,完全被业主方牵着鼻子走,也是不断地挖坑填坑过程,甚是苦恼。也在想决策引擎这一工具的出现,能否更加便捷地解决降本增效问题,即将之前用groovy脚本和硬编码方式给替换掉,以支持运营团队对支付规则灵活调整。借此机会,将相关经验和过程记录下来,分享给有需要的读者,也欢迎专业人士的批评和指正。

1.支付相关概念

1.1 基本概念

在支付系统中,支付公司通常会给商户提供多种支付方式,而每一种支付方式,对于支付公司而言,都会接入对应的支付渠道。

支付方式

即我们常用的个人网银支付、企业网银支付、微信支付、支付宝支付、快捷支付、无卡支付等

img

支付渠道

支付渠道,体现在“道”上,道是人和交通工具走的路,先修建道路才能运输载体。支付渠道就是钱走的路线,即资金转移的通道,也被称为资金渠道、支付通道,与现实中“运输交通” 相似,先建设渠道才能支付。

支付路由

试想一下,你现在的位置是天安门地铁站,想去首都机场,具体怎么去呢?路线有多种选择,近的,远的,堵的,畅通的。怎么选择?你需要具体的路线和导航。支付路由就是就是根据用户所选择的支付方式(如支付宝)之后,支付机构通过提前配置好一系列的“规则”,最后在众多支持的支付渠道后面,选出当前最优的一条支付渠道。类似交通导航,公路、航线有编号,渠道也会进行编号,支付路由就是那个导航,帮你选择最合适你的支付渠道。

目标机构

用户实际使用的钱包或者银行卡对应的机构,是实体的属性,比如刚才买菜的时候选择的支付宝,或者你已绑定的银行卡对应的银行。

资金机构

平台合作的实际进行资金清算的机构,资金机构有2个主要特点,1是实体的属性,2实体有资金清算的权限,合作时有资金机构直接清算给平台,一般是持牌的的机构,可以是三方支付机构、商业银行、支付网关等。一个资金机构可以支持多个目标机构,也可以只支持1个目标机构,如在国内支付场景下,要接入微信支付可以选择直接接入微信的方式也就是通常所说的话直连,也可以选择通过其他三方支付公司接入微信的方式也就是通常所说的简连。

资金渠道

合作资金机构的对应通道称之为资金渠道,资金机构不同产品属性、开通方式、账户和币种的不同,按照合作的产品对资金机构进行细分,划分为资金渠道,通常来说资金机构和资金渠道是1对N的关系。资金渠道可分为以下几类:

(1)按照资金方向划分:资金机构通常都支持入金、出金处理,有时候也叫收款、付款,资金渠道按照属性来说,通常划分为入金通道,及出金通道。一般像是支付宝、微信聚合支付(包括APP、Native,公众号,小程序等)、快捷支付、网银支付都是入金通道,另外像是代付、转账到支付宝、微信零钱等、转账到银行卡都是出金渠道。

(2)按照货币属性划分:货币属性,渠道可以支持人民币、欧元、美元、外币等。

(3)按照适用客户类型划分:按照客户类型,如果客户是C端类型的为对私类型,如果是企业类型的为对公类型

(4)按照支持的支付方式划分:有钱包类型的,网银支付类型的,快捷支付类型的,国际信用卡等。

终端场景

用户支付是APP支付,扫码支付,web端支付,微信小程序,支付宝小程序。

1.2 多视角理解支付渠道

1.2.1 第三方支付机构角度看‘支付渠道’

支付机构的一个比较重要的角色是帮助入网商户完成资金的转移,将用户银行卡中的资金转移至入网商户的银行账户中,为了完成该资金转移过程,就需要对接银行,银联等机构的资金渠道。

img

支付机构角度下的支付渠道

从上图我们可以看出,第三方支付公司具有:网联、银联、直连银行、或者其他第三方支付等渠道,通过支付公司的路由系统,选择不同的渠道来完成资金转移。第三方支付公司之间除了比拼渠道,支付路由也及其重要。

对于支付机构来说,银行类和银联、网联都是其支付渠道的选择。

img

银行

每家银行提供的业务及产品不同,例如B2C、B2B、大额支付、银企直连、代收代付、快捷支付。一般情况下,对接一个银行的话预期需要2-3周的工作量,不同银行对接入环境有不同要求,这也是成本,比如大部分银行需要专线接入,费用和带宽有关,一年也得几万费用。

银联

银行与银行之间交易,分两种情况:同行和跨行。在同行交易的情况下,交易流程仅涉及到账户金额的变动;而在跨行交易的情况下,不仅涉及到账户金额的变动,还存在两个银行之间资金流转的问题。相比之下,这里面的交易环节,会更加复杂,同时银行的运营成本也会随之增加。

那么此时,银联就应运而生了。

银联的成立,就是为了解决不同银行之间繁杂的交易问题的。它是银行与银行之间的清算机构,当用户发起跨行转账时,银联先进行记账,然后在结算日,再进行统一清算。银行之间交易环节的减少,就会节省不少运营成本。

银联作为第三方的支付渠道,为平台对接银行起到非常大的帮助作用。平台对接银联的支付渠道后(快捷支付),用户在平台消费时需要绑银行卡,首次需要上传银行卡号、手机号、身份证号码,银行卡绑定后,后续的操作步骤会相对便捷一些,只需在每次支付时输入密码即可。后续的支付扣款流程跟其他第三方支付一样需要内嵌SDK,而是都在服务端完成校验。

网联

网联,全称为“非银行支付机构网络支付清算平台”,是一个由中国人民银行领导成立的支付清算机构。类似银联的线上支付通道,通过网联清算平台实现了非银行支付机构与各家银行之间的支付交易清算和互联互通。第三方移动支付机构不再直接连接银行,而是通过网联连接,资金通过网联进行结算,线上支付统一清算平台,交易有问题马上被过滤板拦下来。

在以往,不同银行的支付系统相对独立,第三方支付机构要跨行清算需要在每一家银行开启备付金账户。网联为不同支付机构提供了一个统一的清算平台,支付机构只需在网联开设唯一的备付金账户,将交易数据传递给网联,这样大大缩短了跨行清算的周期,使得跨行支付变得更加便捷和高效。

网联与银联的区别

①银联是从纸币发展到银行卡阶段,为满足各家银行互联互通交易而产生的。比如工商银行部署的刷卡POS机,只能刷工商银行的卡,而不能刷建行的卡,所以出现了银联,银联是连接各大银行的桥梁。

②网联是互联网支付时代,为各家第三方支付公司。比如微信、支付宝、易钱包、京东白条、钱宝科技等等这些第三方支付公司互联互通交易,网联取代之前第三方支付机构直联银行的模式,网联仅作为清算平台,一端连接持牌支付机构,另一端对接银行系统。

③网联支付可以理解为是线上支付,银联支付目前主要市场在线下银行卡刷卡,网联定位于线上整合第三方支付公司的网络支付、移动支付。

1.2.2 支付平台类公司角度看‘支付渠道’

支付渠道,顾名思义就是平台上支持用户支付的通道,这些支付渠道帮助平台用户完成交易金额的支付,并且支持平台与银行之间进行资金流转、对账和清分,比如微信、支付宝、通联、易宝等。一般交易平台都会对接多家支付渠道公司。

img

电商角度下的支付渠道

上图中,电子商务网站通过接入第三方支付公司,或者有些牛的公司能直接接入银行或者银联系统,具有了支付能力。把他们当成自己的支付渠道,由支付路由系统来计算最合适的渠道进行处理。

1.2.3 银行类平台角度看‘支付渠道’

img

银行角度下的支付渠道

对于银行来说,其支付渠道主要是人行的各子系统,不同的业务,不同的时间段,选择人行的子系统是不同的。银行也会有自己的路由系统。

1.3 用支付示例来理解支付概念

1.3.1 京东app购物

在了解了支付和支付系统的概念后,也对现有的常用的支付方式有一定的认识,我们来研究下支付背后的逻辑,下面以在京东购买商品时,以微信支付为例来解说支付背后的逻辑。

img

img

如上图所示,在我的京东app上绑定了招商银行信用卡、工商银行储蓄卡,那么在收银台默认支持的付款渠道有5个(京东支付、招商银行信用卡、工商银行储蓄卡、微信支付、云闪付),也可称之为【展示层路由】,而在选择了“微信支付”作为目标机构后,又选择了“招商银行信用卡”作为资金机构和资金渠道,好像这里并没有体现出【交易路由】的规则决策过程,全是人工指定的渠道支付。假如我们新增一种叫做“自动路由/通用路由/渠道优选”这种方式来自动计算出一种最适合的付款方式,再为每种渠道添加上各种限制因素(例如:手续费率、银行交易限额、支付时效性、支付成功率),那此时就需要规则引擎来自动进行规则匹配,为商户做出最优支付方案。

1.3.2 ETC微信小程序充值

ETC场景的收银台比较简单,主要承担着收单和充值两个功能。充值主要是充值ETC钱包,用于后续通行路费的扣款。而消费收单主要是通行路费扣款以及申办和其他增值服务的收费,如下图所示选择不同的充值方式,可能会因手续费率不同导致最终支付的金额会有所不同。

img

2.支付路由的价值

作为一家支付机构,其主要是给商户提供稳定、便捷的支付通道服务。因此每一家支付机构往往会接入多家支付渠道,从而避免某个支付渠道出现故障,降低用户支付体验。

尤其是“断直连”之前,支付公司背后的支付渠道能力参差不齐,每一家支付渠道支持的服务能力、支持的支付方式,稳定性以及价格成本均会不一样,具体表现如下:

  • 稳定高的支付渠道,渠道价格会很高,同时支持的支付方式也不一定全
  • 价格便宜的支付渠道,可能系统稳定性不足;
  • 价格适中的支付渠道,有些支持的银行少,甚至支持的各个银行互不相同;
  • 稳定性适中,服务态度较好的支付渠道,也有很多支付方式不支持;

基于上述问题,支付机构就需要全面考虑好去设计一套支付路由系统了,而支付路由的价值也将体现在以下几点:

  1. 保证渠道多样性;提高综合服务能力;提供多银行渠道;
  2. 保证用户体验,在支付渠道出问题时,将用户损伤降低最小,保证对外的用户体验一致性;
  3. 降低渠道成本,间接提高收入;
  4. 方便运营操作,降低人工操作成本,提升运营工作效率

3.支付路由设计与实现

说明:由于篇幅原因,并受限于个人的专业知识,不会对支付业务全面展开,只局限于支付路由相关的流程进行探讨。

3.1 要解决的问题

要解决上述一系列问题,就需要系统性地考虑支付系统路由设计了,首先得进行渠道筛选,得到满足要求的支付渠道也可称之为“收银台”;其次需要检查商户白名单或指定的支付规则,若能成功匹配到一种支付渠道,那就将其作为最终的支付方式,若未能命中,则进入第三步的渠道优选;在渠道优选中,通常有“费用最低策略”和“拥堵策略”这2种。

img

3.2 路由设计

路由是支付系统的核心功能模块。在整个支付系统的信息和资金流转过程中,清算和结算两个阶段基本上是用不到路由的,路由规则的设计主要集中在商户入网和交易这两个阶段。在商户入网阶段通常会用到鉴权路由,交易阶段通常会用到商户路由和支付通道路由。

支付通道路由,主要是在交易的过程中由用户选择或者支付系统按照费率成本、高成功率、合规性的原则选择一条合适的交易通道。当支付系统在接入渠道不多或者商户单一且需求简单时,通常采用人工路由,由运营人员根据客户需求配置指定的支付渠道、支付产品、配置指定的路由商户。当接入通道数量多,商户数量大且个性化需求较多时,配置规则的工作量将很大,可以采用自动路由的方式解决,由运营人员提前在系统中固定好路由规则,交易时由系统自动选择商户和通道。大多数成熟的支付系统都采用人工+自动路由的模式来处理路由模块,具体哪些用人工、哪些用自动,则根据业务的路由场景来判断。

3.2.1 渠道筛选

渠道筛选的主要作用是筛选出能够支持本次交易的资金渠道,再来回顾下上面的京东app支付例子,在付款时我选择了微信付款,别问我为啥不用支付宝呢?

img

从上图我们可以看出,京东app是支持200多家银行和三方支付公司微信支付、云闪付、Apple Pay。那么,我们可以做个假设,若京东app是接入了以下渠道,咱们以支付单笔3894元为例,资金渠道信息如下:

渠道名称 目标机构 交易币种 终端场景 单笔最小限额(包括) 单笔最大限额(包括) 费率 状态 渠道维护时间
支付公司A 微信 CNY APP 0 1000 3% ON -
银行B 微信 CNY 小程序 0 10000 1% ON -
微信C 微信 CNY APP 0 10000 2% ON -
微信C 微信 CNY 小程序 0 10000 2% ON -
支付宝D 支付宝 CNY web 0 20000 1% ON -
银行E 银行E储蓄卡 CNY APP 0 1000 0.5% ON -
银行F 银行F信用卡 CNY APP 0 5000 0.1% ON -

首先把不支持app的终端场景过滤掉,然后把超限的渠道给过滤掉,再把关闭的渠道以及在维护中的渠道给去掉,初步筛选出满足条件的渠道如下所示:

渠道名称 目标机构 终端场景 限额 费用(元)
微信C 微信 APP 10000 77.88
银行F 银行F信用卡 APP 5000 3.894

3.2.2 白名单和指定规则

在实际的运营过程中,我们对某一些商户单独配置特殊的路由规则,如果符合条件的支付渠道有A,C,D,正常情况下运营会希望优先选择渠道A ,因为该渠道比较便宜;但是针对于商户c,我们希望是以用户体验为主,所以尽管支付渠道C更贵,但还是希望优先选择渠道C而不是A。那么,白名单的主要作用是看某个业务场景是否指定了资金渠道,优先匹配指定的高优先级的渠道。

规则编号 规则名称 限定商户范围 策略优选 优先级 状态
RULE1 默认规则 不限 费用最低策略 100 ON
RULE2 京东指定规则 京东 微信C 2 ON
RULE3 京东指定规则 京东 京东支付G 1 ON
RULE4 淘宝指定规则 淘宝 支付宝D 100 ON
RULE5 默认规则 不限 拥堵策略 90 ON

注意:优先级数字越大,表示权重越大,即最先匹配

3.2.3 渠道优选

假设,渠道优选策略目前支持2种方式:“费用最低策略”和“拥堵策略”。

费用最低策略即支付产生的手续费最低,有按笔数收手续费,按金额阶梯及笔数范围优惠阶梯匹配渠道路由,达到一定阈值,笔数的阈值或者金额阶梯的阈值走另外一个渠道计算下来的成本会更节省。也有些渠道可能存在按照日或者月限制流量,如每日能走1000万交易,超过1000万渠道就不在支持,这时候就需要切换到其他渠道。

而拥堵策略是由于支付渠道或开户银行网络不稳定、系统出现问题等原因,导致部分交易处于处理中或者交易失败,交易吞吐量低下。因此路由需要具备每个支付渠道的监控能力,例如连续失败笔数、五分钟内失败交易占比、交易吞吐量等属性。

再或者,当对接的支付渠道有多个的时候,可能由于商务层面和系统层面,需要执行交易量分流。可设置每个渠道流量百分比,备用渠道交易总额等。

3.3 规则引擎实现自动决策

3.3.1 创建库文件

支付订单信息

img

渠道信息

img

渠道中间变量

img

白名单信息

img

参数库

img

3.3.2 创建规则文件

支付渠道决策表

说明:根据输入的支付信息,筛选出符合条件的支付渠道信息,并添加到集合中。

img

白名单规则表

说明:先自动匹配商户指定的支付渠道,若没有匹配到,则会第二次匹配并命中默认规则。

img

决策集

说明:串起整个决策过程,逻辑运算等,得到最终的实际支付渠道信息。也就是按照3.1章节中的①渠道筛选 ---> ②白名单/指定规则 ---> ③渠道优选 ---> ④试算完成 这4步。

img

3.3.3 测试验证

测试1

输入的支付订单信息中商户名称是“京东”,会命中白名单走指定的支付渠道“微信C”,且微信C也在第一步的渠道筛选结果中。

(1)输入/输出数据

img

(2)规则执行日志

img

测试2

输入的支付订单信息中商户名称是“京东1”,未能命中白名单商户指定的支付渠道,那就会进入渠道优选环节,从而二次命中“费用最低策略”,然后再计算出前面筛选出来的渠道中费用最低的渠道,作为最终实际支付渠道。

(1)输入/输出数据

img

(2)规则执行日志

img

results matching ""

    No results matching ""