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

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.mzph.cn/pingmian/32776.shtml

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

相关文章

【React】ref

概述 使用 ref 引用值 – React 中文文档 希望组件“记住”某些信息,但又不想让这些信息更新时 触发新的渲染 时,可以使用 ref 。 也就是说 ref 对象 包裹的值 React 追踪不到的,他像是用来存储组件信息的秘密“口袋”。 与 state 相同的是…

基于uni-app和图鸟UI开发上门服务小程序

一、技术栈选择 uni-app:我们选择了uni-app作为开发框架,因为它基于Vue.js,允许我们编写一次代码,发布到多个平台,包括iOS、Android、Web以及各种小程序。uni-app的丰富组件库、高效的状态管理以及便捷的预览调试功能&…

【PL理论深化】(3) MI 归纳法:归纳假设 (IH) | 结构归纳法 | 归纳假设的证明

💬 写在前面:所有编程语言都是通过归纳法定义的。因此,虽然编程语言本身是有限的,但用该语言编写的程序数量是没有限制的,本章将学习编程语言研究中最基本的归纳法。本章我们继续讲解归纳法,介绍归纳假设和…

【论文阅读】场景生成及编辑3D定位论文阅读

<div id"content_views" class"htmledit_views" style"user-select: auto;"><div class"kdocs-document"> 前置知识 归纳偏置 关于归纳偏置的理解&#xff1a;首先推荐一篇解释归纳偏置非常好的博客&#xff1a;浅谈归纳…

STM32学习 修改系统主频

前面时钟树的学习说明单片机的主频是可以修改的&#xff0c;那么怎么更改系统的主频&#xff0c;这里做一个简单的介绍。首先要明白&#xff0c;单片机的程序是如何运行&#xff0c;这里简单说明一下。 对应的代码在startup_stm32....文件里面&#xff0c;这里是复位程序的汇编…

多分类情绪识别模型训练及基于ChatGLM4-9B的评论机器人拓展

你的下一个微博罗伯特何必是罗伯特 这是一篇我在使用开源数据集(Twitter Emotion Dataset (kaggle.com))进行情绪识别的分类模型训练及将模型文件介入对话模型进行应用的过程记录。当通过训练得到了可以输入新样本预测的模型文件后&#xff0c;想到了或许可以使用模型文件对新样…

JavaScript的学习之旅之初始JS

目录 一、认识三个常见的js代码 二、js写入的第二种方式 三、js里内外部文件 一、认识三个常见的js代码 <script>//写入js位置的第一个地方// 控制浏览器弹出一个警告框alert("这是一个警告");// 在计算机页面输入一个内容&#xff08;写入body中&#xff…

【计算机网络仿真实验-实验3.1、3.2】交换路由综合实验

实验3.1 交换路由综合实验——作业1 一、实验目的 运用实验二&#xff08;可前往博主首页计算机网络专栏下查看&#xff09;中学到的知识&#xff0c;将这个图中的PC机连接起来组网并分析&#xff0c;本篇涉及代码以截图展示&#xff0c;过于简单的代码及操作不再详细介绍&…

RPC通信原理以及项目的技术选型

目录 1.引言 2、RPC通信原理 3.图示解析 4.再举个例子 1.引言 根据上一篇博客《单机&#xff0c;集群和分布式》的举的例子。 我们最终合理地通过对大型软件的合理划分&#xff0c;划分成不同模块&#xff0c;按需求&#xff08;硬件需求&#xff0c;高并发需求&#xff09…

K8S - 理解ClusterIP - 集群内部service之间的反向代理和loadbalancer

在Micro Service的治理中。 有两个很重要的点&#xff0c; 集群外部的用户/service 如何访问集群内的 入口服务(例如UI service&#xff09;集群内的service A 如何 访问 集群内的service B 为什么有上面的问题 无非是&#xff1a; 集群内的service 都是多实例的每个servic…

【区块链】区块链架构设计:从原理到实践

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 区块链架构设计&#xff1a;从原理到实践引言一、区块链基础概念1.1 区块链定义…

[系统运维|Xshell]宿主机无法连接上NAT网络下的虚拟机进行维护?主机ping不通NAT网络下的虚拟机,虚拟机ping的通主机!解决办法

遇到的问题&#xff1a;主机ping不通NAT网络下的虚拟机&#xff0c;虚拟机ping的通主机 服务器&#xff1a;Linux&#xff08;虚拟机&#xff09; 主机PC&#xff1a;Windows 虚拟机&#xff1a;vb&#xff0c;vm测试过没问题&#xff0c;vnc没测试不清楚 虚拟机网络&#xff1…

基础算法---滑动窗口

文章目录 什么是滑动窗口1.长度最小的子数组2.无重复字符的最长子串3.最大连续1的个数4.将x减到0的最小操作数5.最小覆盖子串总结 什么是滑动窗口 滑动窗口&#xff08;Sliding Window&#xff09;是一种在计算机科学中用于解决各种子数组或子字符串问题的技术。滑动窗口技术通…

【SQL每日一练】HackerRan-Basic Join-Challenges练习

文章目录 题目题析题解1.sqlserver 题目 编写一个查询来打印 hacker _ id、 name 和每个学生创建的挑战的总数。按照挑战的总数按降序对结果进行排序。如果不止一个学生创建了相同数量的挑战&#xff0c;那么按 hacker _ id 对结果进行排序。如果不止一个学生创建了相同数量的…

北京BJ90升级新款迈巴赫大连屏四座头等舱行政四座马鞍

北京BJ90升级奔驰迈巴赫头等舱行政四座大联屏的内饰效果会非常出色&#xff0c;将为车辆带来更豪华、高端的内饰氛围。以下是升级后可能的效果&#xff1a; • 科技感提升&#xff1a;奔驰的中控系统一直以来都以其先进的科技和用户友好的界面而闻名。升级后&#xff0c;北京B…

Windows Api如何创建一个快捷方式并且在开始菜单搜索到自己的应用

原文链接&#xff1a;http://cshelloworld.com/home/detail/1804473083243925504 当我们点击win10系统搜索框的时候&#xff0c;输入名称 &#xff0c;win10会帮助我们匹配到对应的应用。这里搜索框实际上就是windows系统的开始菜单。 接下来我们随便找一个应用&#xff0c;右…

湖北民族大学2024年成人高等继续教育招生简章

湖北民族大学&#xff0c;这所承载着深厚文化底蕴和卓越教育理念的学府&#xff0c;在崭新的2024年再次敞开怀抱&#xff0c;热烈欢迎有志于深化学习、提升自我的成人学员们。今年的成人高等继续教育招生&#xff0c;不仅是学校对于终身教育理念的具体实践&#xff0c;更是为广…

每日签到页面模板组件,简单好用,用了会上瘾的那种

uni-app 是一个使用 Vue.js 开发所有前端应用的框架&#xff0c;开发者编写一套代码&#xff0c;可发布到iOS、Android、Web&#xff08;响应式&#xff09;、以及各种小程序&#xff08;微信/支付宝/百度/头条/飞书/QQ/快手/钉钉/淘宝&#xff09;、快应用等多个平台。 今日给…

机器学习算法(二):1 逻辑回归的从零实现(普通实现+多项式特征实现非线性分类+正则化实现三个版本)

文章目录 前言一、普通实现1 数据集准备2 逻辑回归模型3 损失函数4 计算损失函数的梯度5 梯度下降算法6 训练模型二、多项式特征实现非线性分类1 数据准备与多项式特征构造2 逻辑回归模型三、逻辑回归 --- 正则化实现1 数据准备2 逻辑回归模型3 正则化损失函数4 计算损失函数的…

前端下载文件流,axios设置responseType: arraybuffer/blob无效

项目中调用后端下载文件接口&#xff0c;设置responseType: arraybuffer,实际拿到的数据data是字符串 axios({method: post,url: /api/v1/records/recording-file/play,// 如果有需要发送的数据&#xff0c;可以放在这里data: { uuid: 06e7075d-4ce0-476f-88cb-87fb0a1b4844 }…