【支付系统学习笔记】-二支付系统设计(支付路由设计)
前言: 本文属于学习笔记,首先感谢原作者:凤凰牌老熊,博客链接:http://blog.lixf.cn/
作者上来回顾了支付流程,
一 设计目标
支付路由在支付系统中的核心作用,除了本职工作路由外,还承担如下职责:
- 省钱,省钱,省钱,这是支付路由选择支付通道的最主要的规则。 哪个通道省钱,基本会优先考虑这个通道。
- 提升支付产品的QOS。这体现在系统的可靠性、稳定性、性能和可用性上。通过屏蔽掉无法连接、不稳定、性能低的通道来提升这些指标。
- 支持营销。通过优先选择有优惠活动的通道,可以帮助业务提升付费客户量。
- 降低运营成本。一个设计良好的支付路由,可以大大降低运营投入。
二 软件架构
![](/assets/blank.gif)
三 计算因子
路由规则是支付路由的核心。在规则设置上,需要和公司的业务、支付服务的scope来综合考虑。 这里讲述的是通用的规则设计,供具体实现时参考。
产品类型 当然,路由时首选需要考虑渠道可以支持的支付产品。
费率 费率是路由最重要的一个指标。一般银行是按照额度来收费,部分是按照交易笔数来收费,复杂点的是阶梯收费,比如10万一个费率档次,100万一个费率档次。
优惠活动 银行、第三方支付为了延揽客户,经常也会提供一些补贴给对接的商户,对于使用该渠道的交易进行补贴。而优惠的策略也是多种多样。
交易限额 不同通道会限制每次交易的金额上限,以及针对每个账户每天的额度限制。超过这个额度,需要变换通道。
卡类型 通道支持的信用卡或者借记卡。
通道的QOS 掉单率、网络延迟以及接口能支持的TPS,是路由的一个重要衡量因素。
资金头寸 电商公司在银行或者第三方平台的资金头寸。如果资金头寸不足,则不能使用这个通道来执行。
(术语补充下解释:头寸指投资者拥有或借用的资金数量。 “头寸”一词来源于中国,银行里用于日常支付的“袁大头”,十个袁大头摞起来刚好是一寸,因此叫“头寸”。中国旧时指银行钱庄等所拥有的款项,收多付少叫多头寸,收少付多叫缺头寸,结算收付差额叫轧头寸,借款弥补差额叫拆头寸。头寸就是资金,指的是银行当前所有可以运用的资金的总和。主要包括在央行的超额准备金、存放同业清算款项净额、银行存款以及现金等部分。头寸管理的目标就是在保证流动性的前提下尽可能的降低头寸占用,避免资金闲置浪费。)
到账时效 对于转账,资金什么时候到目标账户上,也是影响路由选择的一个因素。
商户类型 不同类型的商户可以选择不同的通道。 比如高性能、费率高的通道,预留给高级商户。
四 模块设计
支付路由从架构上来说,一般是作为支付网关的一部分。采用微服务架构时,路由模块作为一个独立的服务来部署,为支付网关所调用。所涉及的模块如上所示:
支付通道管理 提供通道支持的产品类型、费率等信息。
支付通道QOS监控 收集通道使用过程中的错误信息,接口延迟,超时情况等信息,用于统计QOS。
资金头寸管理 用于监控公司在各个支付通道上的头寸,并提供头寸的信息。
优惠活动
银行、第三方支付为了延揽客户,经常也会提供一些补贴给对接的商户,对于使用该渠道的交易进行补贴。而优惠的策略也是多种多样:
- 支付策略;针对使用该通道的所有支付进行补贴;仅针对首次使用该通道的用户进行补贴;仅针对绑卡的用户进行补贴。
- 补贴时,按照支付金额来设置优惠额度,或者按比例打折。
- 一般活动都会设置补贴总额度。该额度用完了就停止补贴。
当然,活动也都会设置开始和截止时间。
五 路由计算
人工路由
大部分支付系统在接入渠道不多时,人工路由也是一个不错的选择。运营人员指定支付渠道和产品之间的映射关系。出问题时人工切换即可。这种路由的优势是性能高,路由结果可控,出问题时易于排查问题。当接入通道数量增加,营销活动频繁时,人工路由会是一个巨大的投入。
基于规则的路由
这是相对比较简单的自动路由设计。 按照业务要求设置各种路由规则,比如:
if(支付方式==招商借记卡 && 额度<100) then 目标通道==银联token支付
if(支付方式==招商借记卡 && 额度>100) then 目标通道==招商快捷支付
技术上,规则可以使用drools来描述。
基于权重的路由
规则路由的难点各种规则的制定。在路由因子增多的情况下,规则的维护会是一个噩梦。基于权重的路由则可以缓解这个问题。这种计算方式,简单说,就是对各个通道打分,分数最高的就命中。难点在于制定打分的标准以及计算公式。 比如可以从费率、优惠额度、QOS和使用率角度来评分,给优惠额度高一点的比重,这会导致高优惠额度的通道被优先命中。注意每个维度上的计算公式也不是一成不变的,比如使用率和QOS都是动态打分计算。权重的调整是一个挑战,需要在运行过程中不断的调试。必要时,可以使用旁路测试来比较两种算法的优劣。
路由是支付的核心模块,稳定性是第一要素,其次是性能,最后才是怎么省钱。路由系统的设计,需要和公司业务发展保持一致,并适度超前。简单的if-else实现可以满足大多数场景下的需求。避免在系统建设初期引入过于复杂的路由。
【支付系统学习笔记】-二支付系统设计(支付路由设计)相关推荐
- 【支付系统学习笔记】-二支付系统设计(支付网关设计)
前言: 本文属于学习笔记,首先感谢原作者:凤凰牌老熊,博客链接:http://blog.lixf.cn/ 一 概述 在支付系统中,支付网关和支付渠道的对接是最核心的功能.其中支付网关是对外提供服务的接 ...
- 【支付系统学习笔记】-二支付系统设计(支付产品设计)
本文属于学习笔记,首先感谢原作者:凤凰牌老熊,博客链接:http://blog.lixf.cn/ 支付产品模块是按照支付场景来为业务方提供支付服务.这个模块一般位于支付网关之后,支付渠道之前. 它根据 ...
- 【支付系统学习笔记】-二支付设计(银行卡支付)
前言: 本文属于学习笔记,首先感谢原作者:凤凰牌老熊,博客链接:http://blog.lixf.cn/ 一 支付与交易 作者先明确了概念: 交易是生成订单:支付是对订单进行付款. 支付行为有多种 ...
- Linux系统学习笔记二
参考课程: 基于VSCode和CMake实现C/C++开发 | Linux篇_哔哩哔哩_bilibili 1.文件编辑器 vim:是所有Unix和Linux系统下标准的文件编辑器 gedit:Linu ...
- 支付+电商双系统项目笔记(七)支付系统:支付宝支付开发
目录 一.支付系统介绍 二.代码解析 1.支付宝支付参数配置 2.controller类 3.service类 4.dao类 三.支付演示 一.支付系统介绍 该支付系统实现了支付宝的网站支付功能(微信 ...
- java实现微信支付宝等多个支付平台合一的二维码支付(SSM框架)
点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐] ♪ 点击上方绿标 收听java实现微信支付宝等多个支付平台合一的二维码支付(SSM框架) 整体思路: 实现微信支付宝等支付平台合多为一的二 ...
- 开源支付系统,助你快速开发支付功能
项目介绍 Jeepay是一套适合互联网企业使用的开源支付系统,支持多渠道服务商和普通商户模式.已对接微信支付,支付宝,云闪付官方接口,支持聚合码支付. Jeepay使用Spring Boot和Ant ...
- 嵌入式系统设计师学习笔记二十八:嵌入式程序设计③——高级程序设计语言
嵌入式系统设计师学习笔记二十八:嵌入式程序设计③--高级程序设计语言 解释程序和编译程序 编译器的工作阶段示意图 语法错误:非法字符,关键字或标识符拼写错误 语法错误:语法结构出错,if--endif ...
- 一个强大的开源的基于Spring Boot开发的Web支付系统项目,支持聚合码支付
一个强大的开源的基于Spring Boot开发的Web支付系统项目,支持聚合码支付.
最新文章
- 《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一3.7.5 使用StAX写出XML文档
- HDOJ1035 ( Robot Motion ) 【递归】
- Github新建分支以处理原仓库提交时detached HEAD的问题
- 好系统重装助手教您如何设置宽带并连接无线上网
- IntelliJ IDEA2017 修改缓存文件的路径
- (一)MySQL优化之索引优化
- iOS下数据存储的方式
- 9.3 寻找magic index
- java 算数运算符
- delphi代码在linux编译运行,[教程] Delphi 10.2 Linux 程序开发环境部署的基本步骤
- 易辅客栈第一套从零学辅助系列教程
- 俄亥俄州立大学计算机专业排名,俄亥俄州立大学计算机工程专业大学排名
- 贝叶斯判别分析,Python代码分类讲解
- android 自动打开第三方应用商店,Android应用自动跳转到应用市场详情页面的方法...
- DSP28335 ecap使用
- FPGA学习日记(八)SDRAM的读写测试
- Android开发之高仿QQ消息侧拉删除
- springboot如何解析邮箱
- win10电脑用蓝牙实现文件传输,安卓手机通过蓝牙将文件传送到电脑
- 关于wifi打印服务器方案和USB共享打印机模块工作原理