支付系统 — 支付路由
创始人
2024-02-18 01:43:45
0

本文主要介绍下支付中路由系统的主要流程。

支付路由的作用

降低成本:越便宜越好;
提高用户体验:用户支付的越爽越好;越快越好;成功率越高越好。
确保有可用通道:多个选择,确保能完成支付。

初期

在自由微信或者支付宝支付渠道的情况下,我们可以直接在暴露出一些接口给使用方调用即可。这种方式的优势是简单快速,本地调用更加直接高效稳定。与此同时也会存在一些诟病:

  • 业务系统与支付系统位于同一个系统,系统任何一次变更都会影响整个系统。
  • 扩展性问题。接入新支付渠道,需要新暴露一个支付服务接口。业务系统需要改动代码。也就是说,业务系统承担路由系统的功能。
  • 复用性。新支付渠道,其实除了与支付渠道交互相关代码之外,其他代码可以复用。

简易版支付

中期

由于各种支付限制和业务的发展,需要接入更多的渠道。
实际上支付系统一般需要对接多个支付渠道,一是为了保证系统的可靠性,不能因为单一渠道的问题影响整个支付系统。二是为了提高支付能力,不同渠道提供支付能力不同。三是为了降低支付成本。
当系统中接入了多个渠道的时候,为了可以正确选择支付渠道支付,因此就需要设计渠道路由系统。
支付路由
从上图可以看到路由系统功能其实很简单,根据一定的规则分发支付请求到正确的渠道。

交易类型与支付渠道

支付方式与支付渠道的关系:
系统如果接入了多个渠道,那么对于一笔交易来说,将会有多个支付渠道可以扣款。
假设如下场景:在平台A下单购买一双鞋子200元,然后结算时在收银台中使用招行借记卡进行支付【已签约】。然后此请求最终提交到了支付系统扣款,对于路由系统来说,1⃣️首先需要获取到支持招行借记卡并且已经签约过的渠道列表,2⃣️然后从支持招行借记卡的渠道中挑选出来费率最低、成功率最高、限额范围内、并发量范围内的渠道,3⃣️最终如果还有多个渠道可以选择,就可以选择一个最近最近未使用过的,至此路由就完成了。最后向最终确定的渠道发起请求执行扣款。以上过程为简略版,省略了许多细节,不代表实际中就是这么简单。
通过上述的过程应该已经大概了解了路由的大致流程了吧。

路由层架构图

支付路由架构图

渠道

什么是渠道?

渠道是指可以进行账户操作的一些支付机构,包括但不限于银行,例如 银联、招行直连、快钱等等。

渠道的属性

编码:gh-kj-001
名称:工行协议支付
类型:协议,网银,打款
状态: 开启,关闭
所属银行: 工商银行
卡种:借记卡
其他

渠道属性的作用

渠道属性的一个关键用途就是路由选择的依据,路由的规则配置其实就是根据渠道属性去配置的,什么属性的渠道能用,什么类型的渠道属性不能用。

路由规则

路由规则就是支付请求来了筛选渠道的条件;比如那个银行的,什么卡等。路由最核心的是规则以及筛选模型。
路由规则主要分两类:

1. 分组规则

为了提升筛选效率,我们先对通道按照组合规则进行分组,分组规则需要的标识用户身份信息参数是上游请求方必填的,而关于卡片信息的一些参数是路由内部解析出来的。比如按照以下属性进行分组:

  • 交易类型:支付、打款、签约
  • 账户类型:对私、对公
  • 卡种:借记卡、贷记卡
  • 银行:工商银行、招商银行、北京银行等
2. 筛选规则

经过通道的分组筛选,最后确定了一个列表,然后再通过筛选规则筛选出需要的渠道道,比如以下筛选规则:

  • 已签约渠道:选择已经签约过的
  • 状态:开启
  • 成本最低优先:选择成本最低的
  • 成功率最高优先:选择最近成功率最高的
  • 响应时间最小优先:选择最近响应最快速的
  • 高权重优先:权重
  • 优先级
  • ……
路由分组规则

通过上述的分组规则和筛选规则,就可以得出筛选的规则树如下图:
渠道分组树
例如支付请求为:支付-对私-借记卡-工行,那么就可以快速定位到一个渠道组了:[银联,工行直连,快钱]。

路由筛选规则

在这里插入图片描述
经过一系列筛选规则后筛选出一个渠道。
如果在筛选过程中发现自由一个渠道可选择,那么就直接使用当前渠道。

例如:用户签约了快钱和工行直连渠道。支付请求上送了 支付-对私-借记卡-工行,1000元。那么就可以根据路由分组规则定位到[银联,工行直连,快钱]渠道,,根据状态路由过滤出[工行直连],然后根据签约表过滤出[银联,工行直连],根据成本路由过滤出[工行直连],此时自由一个通道可用,就直接短路使用工行直连渠道发起支付请求。反之,如果在筛选过程中发现快钱和工行直连渠道的状态都是不可用时,就需要返回对应的code码,引导用户重新签约其它支付渠道。

至此简略版已描述完毕。
以上就是个人对于支付路由的一些理解和描述,其中大部分都非常粗略,但是整体的流程就是这个样子。企业中会对其做各种更加深入的细化和调整,不尽相同,还需适时调整。
如果有错误或不足的地方,请多多留言指正。

上一篇:五、Nacos

下一篇:Linux-yum

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...