支付路由技术概述以及简单的建设说明

2019-10-12  本文已影响0人  白花蛇草可乐

一、支付路由的架构设计

1-1、设计目的

  1. 省钱。哪个支付通道更省钱选择哪一个通道
  2. 提升支付产品的QoS。这体现在系统的可靠性、稳定性、性能和可用性上。通过屏蔽掉无法连接、不稳定、性能低的通道来提升这些指标。
  3. 支持营销。通过优先选择有优惠活动的通道,可以帮助业务提升付费客户量。
  4. 降低运营成本。

1-2、系统架构

image

二、支付路由的计算因子

image

三、支付路由的限制规则

3-1、银行与渠道黑暗期

  1. 支付渠道或者开户银行会不定期发布某个银行或者整个支付渠道维护的公告,例如中国银行将于X月X日凌晨00:30至03:30进行系统维护,届时代收业务将受影响。
  2. 作为支付路由的重要因素,为了进一步保障交易成功率,支付路由方案需要考虑银行与支付渠道维护信息(即黑暗期)。在黑暗期内的支付渠道要避免将交易路由过去,以免由于通道不稳定而导致交易失败。

3-2、余额不足次数阈值

为了降低客户投诉量以及进一步满足开户银行风控要求,支付渠道一般都会对商户的代扣交易中“余额不足”的报错次数进行限制。(这个可以坑到被银行停掉代扣通道)

3-3、单笔鉴权验证

  1. 使用不同的渠道需要不同的授权。
  2. 授权无法静默(需要有短信验证码)

3-4、通道启停控制

因商务或者其他原因临时停止某通道时,应能做到一键迅速关停。

3-5、交易量分流

  1. 商务层面:由于BD一般要跟支付渠道打好关系,因此当支付渠道要求增加交易量时,可以通过每个支付渠道的交易量分流来实现。
  2. 支付渠道维系:虽然某个支付渠道可能由于价格较高或者稳定性较差等原因,导致路由选择不到该支付渠道,但作为后续支付渠道的备份,系统仍需要少量的走一些交易到这些支付渠道。
  3. 技术层面:当某个支付渠道出现不稳定表现(比如单位时间内异常数量增加)时,需要临时降低该支付渠道的权重,增加系统的整体稳定性

四、支付路由的软件架构

image
  1. 业务系统和支付路由系统分离
  2. 服务发现能力
  3. 本地缓存+同步

五、支付路由的理想与现实

5-1、手工路由

  1. 大部分支付系统在接入渠道不多时,人工路由也是一个不错的选择。运营人员指定支付渠道和产品之间的映射关系。出问题时人工切换即可。
  2. 这种路由的优势是性能高,路由结果可控,出问题时易于排查问题。当接入通道数量增加,营销活动频繁时,人工路由会是一个巨大的投入。

5-2、基于规则的路由

这种相对比较简单的自动路由设计。按照业务要求设置各种路由规则,比如:

if (支付方式 == 招商借记卡 && 额度<100) then 目标通道 = 招商快捷支付

技术上,规则可以使用规则引擎drools来描述。

5-3、基于权重的路由

规则路由的难点在于各种规则的制定。

在路由因子增多的情况下,规则的维护会是一个噩梦。基于权重的路由则可以缓解这个问题。这种计算方式,简单说,就是对各个通道打分,分数最高的就命中。难点在于制定打分的标准以及计算公式。

比如可以从费率、优惠额度、QoS和使用率角度来评分,给优惠额度高一点的比重,这会导致高优惠额度的通道被优先命中。

注意每个维度上的计算公式也不是一成不变的,比如使用率和QoS都是动态打分计算。

权重的调整是一个挑战,需要在运行过程中不断的调试。必要时,可以使用旁路测试来比较两种算法的优劣。

路由是支付的核心模块,稳定性是第一要素,其次是性能,

最后才是怎么省钱。路由系统的设计,需要和公司业务发展保持一致,并适度超前。

简单的if-else实现可以满足大多数场景下的需求。避免在系统建设初期引入过于复杂的路由。

六、在实际支付中遇到的典型问题

6-1、充值掉单

6-2、提现最终一致

6-3、提现操作防止重复提交

6-4、同人同出保证

6-5、QoS保证

七、简易支付路由设计

由于生产环境的B支付通道出现突发情况,直接单方面通知我们即将停用,造成了非常被动的局面,在短期内紧急商谈了C通道(付出了费率等方面较大的代价)。

为了将来的系统稳定性考虑,后期会接入多家支付,因此进行了一个简单的支付路由建设。

以下为根据公司实际情况做的设计概要,供参考。


【需求背景】

为了支付通道的稳定性,公司将陆续接入不同的支付通道。

在通道出问题时,能快速的切换到其他支付通道。不同的支付通道的成本、稳定性、可靠性各不相同。

我们一期支付路由规则比较简单,只考虑静态路由。

【规则条件说明】

规则的条件主要有银行单笔/单日限额、支付通道是否可用、支付通道对应银行是否可用、支付手续费、通道流量占比。

  1. 支付通道不可用,有些突发情况,支付公司系统突然无法访问或者支付通道的短信渠道出问题或者其他问题,此时需要禁用支付通道下所有的银行

  2. 单笔限额保证用户支付时提供满足单笔限额的支付通道

  3. 支付公司对应银行不可用,支付通道的运营流程中,如果银行临时维护,支付通道会通知商户银行的维护时间,此时需要在维护时间内支付通道对应的银行不可使用

  4. 支付费用,考虑成本原因,会优先使用费用低的支付通道

  5. 流量占比,考虑满足单笔、费用又相同有可能有多个支付可以,此时用户会使用流量占比高的支付通道。

【路由规则】

  1. 正常处理逻辑
  1. 异常情况:若是支付的金额 不满足 所有支付通道的银行限额,则默认选择此优先通道去进行支付。

  2. 优先通道也支付失败,则进行提示:本次支付失败,请联系客服。

image
上一篇下一篇

猜你喜欢

热点阅读