支付系统的渠道路由架构设计

news2025/1/13 15:37:06

8ff408bdc476dd0db27f283a45c41e68.jpeg 

图解支付系统的渠道路由设计

  

渠道路由是引导流量路径的关键,其设计至关重要。本文详解渠道路由概念、必要性及形态,并分享一个高效实用的基于规则的渠道路由设计方案。

注:有些公司称渠道为通道,都是一个意思,为方便起见,本文统称为渠道。

1. 一些背景知识

支付公司常将支付方式、渠道咨询及路由混同处理,虽简便但扩展受限。为提高扩展性,我们将以最佳拆分方式深入解析,助力支付体系高效运作。

下面是三者之间的简单关系图:

bfd63bfe8ee9470253a9beff7c6b2409.jpeg

说明:

  1. 支付方式咨询:根据用户的请求,组装可用支付方式列表返回给用户。由收银域提供服务。
  2. 渠道咨询服务,快速响应用户需求,智能组装渠道列表及属性,收银域高效转换支付方式,为用户提供便捷支付选择。全程由渠道网关精准服务,确保流程顺畅无阻。
  3. 渠道路由:当有多个渠道可用时,选择出最优的一个渠道。由渠道网关提供服务。

03a9d4b2fe4e2419397cee7ac1329e18.jpeg

再详细一点,如下:

支付方式咨询,专业服务,为您解答支付难题。无论余额、招行借记卡,还是招行信用卡,我们都提供详尽指导。注意,虚拟商品不支持信用卡哦。选择适合的支付方式,轻松购物,无忧支付。

渠道咨询优化:当招行借记卡因维护无法使用,系统智能识别并设为不可用状态,收银界面的相关支付方式将自动置灰,确保支付流程顺畅无阻。

渠道路由,智能筛选最优支付路径。综合考量支付成功率、成本、用户体验及渠道状态,确保每笔交易都通过最佳渠道完成。

2. 渠道路由核心作用

6bfc5dee22372e582da3d62c8474d57a.jpeg

渠道路由核心在于优选渠道,当多渠道满足业务需求时,综合考虑支付成功率、成本、用户体验及渠道状态,确保选择最优解。

  1. 优化支付成功率至关重要:精准选择支付渠道,显著提升交易成功率,减少用户流失。不同渠道风险偏好各异,同一请求可能在A渠道失败,却在B渠道畅通无阻。
  2. 精算成本,智选渠道!合理规划支付路由,有效降低费用。利用阶梯收费政策,巧妙分流,确保整体成本最优化,为您的支付流程带来更大经济效益。
  3. 优化支付体验,确保快速稳定,能显著提升用户满意度与忠诚度。用户在A渠道支付习惯后,新请求继续选择A渠道,支付成功率显著增高。

举几个渠道路由应用的小场景:

  1. 招行信用卡支付时,平台对接网联与银联,均支持招行卡。为确保支付顺畅,系统将智能选择最优渠道进行交易处理。
  2. 做实名认证,平台对接了多个实名认证通道,通过渠道路由挑选一个认证渠道。

由上面可以看到,除了支付路由外,还可能有信息类渠道路由,比如实名认证类。

退款路径是否存在?当前显示无。银联支付需通过银联退款,特殊渠道如支付宝,因其闭环支付特性,无需额外路由,退款亦在支付宝内进行。

3. 渠道路由的设计原则

渠道路由作为支付系统的核心模块,需要满足以下几个设计原则:

  • 灵活性高:路由规则支持动态调整,既可满足成本优化的业务需求,又能轻松应对成功率优先的场景,全面适应多变的业务需求。
  • 扩展性强是系统设计的关键,需预留空间以应对未来新增支付渠道和决策因子,保持代码的灵活性,确保系统能轻松适应未来发展需求。
  • 高可用性路由系统,即便在高并发或故障情境下,也能稳定运行,即使内部发生错误,亦可迅速提供一条有效通道,确保服务不中断。
  • 性能:在保证准确性的前提下,路由决策需要快速,不能成为支付流程的瓶颈。

4. 业界常见的几种路由形态

根据业务的需要,通常有以下几种路由形态:

  1. 项目初期,为迅速推进并确保支付流程顺畅,我们采用硬编码方式,直接在代码中设定选取首个选项,以适应初期渠道有限的情况。
  2. 基于规则的路由。通过预定义的规则提高灵活性和可扩展性。
  3. 智能路由。利用机器学习和大数据分析,根据历史数据和实时状态,智能地选择最佳渠道。

5. 一种典型的基于规则的渠道路由设计

渠道路由设计常基于规则,即条件匹配则执行相应分流逻辑。例如,支付平台对接网联与银联,招行信用卡全走网联,工行信用卡小额走网联,大额则转至银联,实现精准路由。

5.1. 核心流程设计

a45cd2af07f58cfa8def2fe51307424b.jpeg

说明:

  1. 先进行唯一渠道判断,如果只有一条渠道,直接返回。
  2. 判断规则,如果规则没有命中,那就从可用渠道中随机挑选一条。
  3. 如果命中规则,再根据规则中的分流逻辑进行分流。
  4. 最后返回唯一的一条渠道。

5.2. 分流算法设计

如果一个请求既可以走银联,也可以走网联,还可以走直连,有以下几种情况:

  1. 没有命中任何一条规则,随机选择一条渠道。
  2. 有多条规则可以命中,选择优先级最高的。
  3. 路由规则中,银联、网联各占40%,直连占20%,实现智能分流。若银联服务中断,其流量将按比例自动分配至网联与直连,确保系统稳定。

分流算法通常将各渠道比例转换为0-100的数值并排序,然后根据用户ID、请求单号取模或生成的随机数,确定数值所属区间,从而选定相应的渠道。这种方法能精准匹配渠道,提升营销效率。

8a0fb6d0446e90b18c805d39e6de239f.jpeg

伪代码如下:

根据您的需求,优化后的文案如下:
通过对用户ID、请求单号进行取模运算,或者直接生成一个随机数,我们可以得到一个初始值random。随后,我们遍历分流集合,通过递减random并与集合中每个元素的值进行比较。一旦random减至小于或等于零,即确定命中的分流渠道。这一算法确保了流量分配的公正性和效率。

5.3. 路由规则配置模型

fdb4e75135ab3967122c5c173f25decd.jpeg

说明:

  1. 路由规则决定规则引擎运算是否匹配,核心要素为:ID、类型、表达式、优先级。公司可根据内部需求灵活添加字段。
    1. 规则ID:用于分流配置做关联;
    2. 规则类型:用于区分支付、实名认证等。
    3. 规则表达式:用于规则引擎运算;
    4. 优先级:用于排序,如果有多个规则都符合,以优先级最高的为准;
  2. 分流配置用于规则命中后,如何进行分流。核心字段包括:规则ID、渠道名、分流比例。
    1. 规则ID:用于与路由规则进行关联。
    2. 渠道名:表示要分流去的渠道。
    3. 分流比例:说明有多少流量要分过去。
  3. 决策因子定义用于决策的条件。比如卡BIN,卡品牌,金额等。

5.4. 规则引擎选择

业务规则引擎多样,如Drools等知名工具,亦支持自研。企业可根据技术生态灵活选择,实现高效业务管理。

强烈推荐QlExpress,其路由规则简洁实用,无需复杂运算和繁重规则引擎,轻松应对各类需求,高效又便捷。

关于QlExpress的资料,可参考官网介绍。

后面会有QlExpress的规则示例。

5.5. 决策子选择

决策因子就是路由规则匹配的条件,一般有以下几种:

  1. 金额:比如小于某个金额,或大于某个金额。
  2. 卡品牌:VISA、MASTER、UPAY等。
  3. 发卡行:CMB、ICBC等。
  4. 卡类型:借记卡、信用卡等。
  5. 卡BIN:某个号段的卡。
  6. 业务场景字段:各公司自定,比如线下场景,线上场景等。

5.6. 路由规则示例

假设:支付平台对接了网联和银联,要求:

1)招行信用卡全部走网联。

2)工行信用卡500块以内(不包含)的40%走网联,60%走银联。

3)工行信用卡500块以上的走银联。

一些基本的变量定义

银行名称:bankName

支付方式:paymentMethod

卡类型:cardType

金额变量:amount

网联:NUCC

银联:UPAY

招行:CMB

工行:ICBC

定义规则

  1. 使用信用卡支付时,若指定支付方式为“card”,信用卡类型为“credit”,且银行名称为“CMB”,则满足支付规则。

分流:NUCC:100

  1. 规则优化:当支付方式选择信用卡(paymentMethod='card'),且卡类型为信用卡(cardType='credit'),银行名为工商银行(bankName='ICBC')时,交易金额需小于500元。

分流:NUCC:40,UPAY:60

  1. 优化后文案:支付规则简化版:当选择信用卡作为支付方式,且信用卡类型为贷记卡、所属银行为工商银行,并且支付金额达到或超过500元时,满足支付条件。

分流:UPAY:100

5.7. 界面配置示例

aec255ca507b35483b5b835b5972546b.jpeg

说明:

  1. 后台保存规则精简明确:当支付方式为信用卡(card)、卡类型为贷记卡(credit)、银行名为工商银行(ICBC),且金额小于500元时,自动分流处理。具体分流比例为NUCC占40%,UPAY占60%,确保交易高效安全。
  2. 决策所需的元数据需预先设定,明确各字段运算规则,如开户行字段不适用大于或等于等运算,以确保决策精准无误。

5.8. 一些调优思路

  1. 优先选用用户近期支付成功的渠道,如银联或网联,可提升支付成功率。若用户五天内通过银联成功支付,建议再次选择银联,因为根据渠道风控原则,先前成功的支付渠道更有可能再次成功,除非用户余额不足。这种策略有助于提升用户体验和交易效率。
  2. 采用用户ID进行伪随机分流,而非订单号或纯随机。此举确保同一用户更可能进入同一渠道,显著提升成功率和用户体验。
  3. 适当使用缓存,以提高运算速度。

6. 加入自动化开关的渠道路由

外部渠道服务常现不稳,我们采用自动化开关模块,实时监控支付结果,动态评估渠道状态。一旦渠道异常,系统将自动关闭问题渠道,并即时通知渠道路由,确保支付流程顺畅无阻。

f81abde2934a14af9226e42a7e230820.jpeg

说明:

  1. 自动化开关模块实时监控支付结果,每秒评估渠道状态,一旦异常则自动关闭,并即时通知渠道路由处理结果,确保支付流程顺畅无阻。
  2. 渠道关闭后,再发起探测服务,探测成功后,灰度打开渠道。

下图为渠道自动化开关示意图。其基于滑动时间窗口算法,利用多种技术手段实现。具体执行可采用时序数据库,或通过redis自主实现。简洁高效,轻松掌控渠道自动化。

3fc3084543cc0880dff71abb399e4d16.jpeg

说明:

  1. 初始是完成打开。
  2. 指定时间内全部失败或指定时间内成功率低于阀值,关闭渠道。
  3. 指定时间后,发起查询,如果查询渠道失败,持续关闭。
  4. 如果查询成功,就灰度打开,如果灰度打开后的成功率不满足要求,就继续关闭。
  5. 如果灰度打开后的成功率满足要求,就持续加大灰度,直到完成打开。

后面会单独起一篇文章来讲自动化渠道开关的设计与实现。

7. 高阶的智能路由

顶尖企业运用先进算法和机器学习技术,实现智能路由优化。这种智能路由不仅基于传统路由规则,更融入实时请求参数、渠道数据,综合考虑成功率、成本、用户习惯及地域等多维度,精准计算出最优渠道,确保高效传输。

这个方案有几个难题不好解决。

首先是公司实力足够强。有人才来做算法,且这些算法同学需要懂一点业务;

智能路由调参难题待解:业务场景多变,或追求成功率,或侧重成本控制。如何实现智能路由参数调整,以满足不同业务需求?

我强烈推荐【规则路由+离线数据分析】方案。离线数据分析平台通过算法精准分析影响因子,辅助决策,优化路由规则,助力业务成功。

1b8ff684bada6f326253d12ff3f6b733.jpeg

说明:

  1. 通过分析数据,找到影响成功率成本的因子。
  2. 更新路由规则。
  3. 重复第1步。

8. 结束语

渠道路由是现代支付系统的核心,高效灵活的设计能显著提升支付成功率,降低成本,并优化用户体验。本文旨在为实际项目中的渠道路由设计与实现提供宝贵参考,助力支付系统性能飞跃。


-对此,您有什么看法见解?-

-欢迎在评论区留言探讨和分享。-

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1854032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(南京观海微电子)——DC-DC和LDO的原理及应用区别

LDO: 低压差线性稳压器,故名思意为线性的稳压器,仅能使用在降压应用中,也就是输出电压必需小于输入电压。 优点:稳定性好,负载响应快,输出纹波小。 缺点: 效率低,输入输出的电压…

Spring响应式编程之Reactor介绍

Reactor介绍 1、异步执行技术2、实现方式 响应式编程(Reactive Programming)是一种面向数据流和变化传播的编程范式。Java中的Reactor是一个用于响应式编程的库,它建立在Reactive Streams规范之上,旨在帮助开发者构建非阻塞的、高…

vue登陆密码加密,java后端解密

前端 安装crypto-js npm install crypto-js加密 //引入crypto-js import CryptoJS from crypto-js;/** ---密码加密 start--- */ const SECRET_KEY CryptoJS.enc.Utf8.parse("a15q8f6s5s1a2v3s"); const SECRET_IV CryptoJS.enc.Utf8.parse("a3c6g5h4v9sss…

项目-博客驿站测试报告

测试用例设计 功能测试 该部分主要围绕对于博客系统的增删改查, 文章通过性审核, 关注功能等进行测试, 还进行了其它一些探索性的测试. 以上是作者设计的全部用例. BUG发现: 问题1: 当多端同时操作同一篇文章BUG 环境: Windows11, Edge和Chrome浏览器 复现步骤: 1.先使用Edg…

《三国:谋定天下》成为了SLG游戏现象级的成功案例

原标题:《三国:谋定天下》引领SLG游戏新潮流,B站股价五个飙升了30% 易采游戏网6月23日:B站作为年轻人喜爱的文化社区和视频平台,再次用一款新的游戏证明了其在游戏发行领域的独到眼光与强大实力。最近大火的策略角色扮…

VBA学习(17):使用条件格式制作Excel聚光灯

今天给大家分享的表格小技巧是制作聚光灯。 先说一下啥是聚光灯。所谓聚光灯,可以简单理解为对工作表的行列填充颜色,突出显示被选中的单元格,仿佛该单元格被聚光灯照亮似的。聚光灯有助于肉眼识别所选中的单元格或区域,提高数据…

Repair LED lights

Repair LED lights 修理LED灯,现在基本用灯带,就是小型LED灯串联一起的 1)拆旧灯条,这个旧的是用螺丝拧的产品 电闸关掉。 2)五金店买一个,这种是磁铁吸附的产品 现在好多都是铝线啊。。。 小部件&#x…

2024最新最全的车载测试教程__各模块测试用例

二、设计用例方法 1.测试用例设计前: a.仔细认真研读prd、理解prd b.质疑prd、有困惑或者想法的点做好记录,可以一次性和产品沟通 2.设计中: 成282 a.根据结构化思维,设计xmind i全链路正向功能点、子链路功能点 ⅱ.考虑业…

15.树形虚拟列表实现(支持10000+以上的数据)el-tree(1万+数据页面卡死)

1.问题使用el-tree渲染的树形结构&#xff0c;当数据超过一万条以上的时候页面卡死 2.解决方法&#xff1a; 使用vue-easy-tree来实现树形虚拟列表&#xff0c;注意&#xff1a;vue-easy-tree需要设置高度 3.代码如下 <template><div class"ve-tree" st…

大模型参数高效微调学习笔记

大模型参数高效微调学习笔记 github地址 billbill链接 1.分类 图中有五个大类&#xff1a; selective&#xff08;选择性微调&#xff09;&#xff1a;BitFit&#xff0c;Attention Tuningsoft prompts&#xff08;提示微调&#xff09;&#xff1a;Prompt-tuning&#xff0c…

实战指南:部署Elasticsearch 8.4.1与Kibana 8.4.1并集成IK分词器

首先拉取elasticsearch和kibana镜像 docker pull elasticsearch:8.4.1 docker pull kibana:8.4.1如果遇到镜像拉去不下来&#xff0c;遇到如下问题&#xff1a; [ERROR] error pulling image configuration: Get " https://production.cloudflare.docker.com/registry-v…

[Spring Boot]Netty-UDP客户端

文章目录 简述Netty-UDP集成pom引入ClientHandler调用 消息发送与接收在线UDP服务系统调用 简述 最近在一些场景中需要使用UDP客户端进行&#xff0c;所以开始集成新的东西。本文集成了一个基于netty的SpringBoot的简单的应用场景。 Netty-UDP集成 pom引入 <!-- netty --…

Adaboost集成学习 | Adaboost集成学习特征重要性分析(Python)

目录 效果一览基本介绍模型设计程序设计参考资料效果一览 基本介绍 Adaboost集成学习特征重要性分析(Python)Adaboost(自适应增强)是一种常用的集成学习方法,用于提高机器学习算法的准确性。它通过组合多个弱分类器来构建一个强分类器。在Adaboost中,每个弱分类器都被赋予…

电子电气架构——由NRC优先级引起的反思

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

【论文精读】分类扩散模型:重振密度比估计(Revitalizing Density Ratio Estimation)

文章目录 一、文章概览&#xff08;一&#xff09;问题的提出&#xff08;二&#xff09;文章工作 二、理论背景&#xff08;一&#xff09;密度比估计DRE&#xff08;二&#xff09;去噪扩散模型 三、方法&#xff08;一&#xff09;推导分类和去噪之间的关系&#xff08;二&a…

shell的正则表达式

一、正则表达式&#xff1a;匹配的是文本内容&#xff08;文本三剑客&#xff1a;grep&#xff1a;过滤文本内容 sed&#xff1a;针对文本内容进行增删改查 awk&#xff1a;按行取列&#xff09; 二、grep&#xff1a;过滤 1.grep&#xff1a;过滤文本内容&…

基于协方差信息的Massive MIMO信道估计算法性能研究

1. 引言 随着移动互联网不断发展&#xff0c;人们对通信的速率和可靠性的要求越来越高[1]。目前第四代移动通信系统已经逐渐商用&#xff0c;研究人员开始着手研究下一代移动通信系统相关技术[2][3]。在下一代移动通信系统中要求下行速率达到10Gbps&#xff0c;这就要求我们使…

秋招突击——第八弹——Redis是怎么运作的

文章目录 引言正文Redis在内存中是怎么存储的面试重点 Redis是单线程还是多线程面试重点 内存满了怎么办&#xff1f;面试重点 持久化介绍面试重点 RDB持久化面试重点 AOF日志面试重点 总结 引言 差不多花了两天把redis给过了&#xff0c;早上也只背了一半&#xff0c;完成回去…

【database1】mysql:DDL/DML/DQL,外键约束/多表/子查询,事务/连接池

文章目录 1.mysql安装&#xff1a;存储&#xff1a;集合&#xff08;内存&#xff1a;临时&#xff09;&#xff0c;IO流&#xff08;硬盘&#xff1a;持久化&#xff09;1.1 服务端&#xff1a;双击mysql-installer-community-5.6.22.0.msi1.2 客户端&#xff1a;命令行输入my…

<router-view />标签的理解

< router-view />标签的理解 < router-view />用来承载当前级别下的子集路由的一个视图标签。显示当前路由级别下一级的页面。 App.vue是根组件&#xff0c;在它的标签里使用&#xff0c;而且配置好路由的情况下&#xff0c;就能在浏览器上显示子组件的效果。 如…