今天和大家分享的主题是《电商支付路由系统设计》。希望对大家有帮助。因水平有限(之前没有路由相关经验,基本是摸着石头走过来的),不足之处,多多指正。

一、项目背景

随着业务的发展,需要接入不同的支付供应商,比如快捷支付,接入银联,易宝,网银支付接入易宝,快钱等。

当每种支付方式有多个通道时,在进行支付时就需要进行通道的选择问题。是使用银联快捷还是易宝快捷。这样支付路由系统就应运而生了。

二、系统边界

2018-03-30 21:32:40

三、路由分类

一般路由可分为引导路由和通道路由两类(我们的分类)。

引导路由的结果是收银台,是指某业务支持哪些支付方式,哪些银行,哪些卡类型。 比如:某P2P业务,支持网银支付,快捷支付,某C2C业务,支持快捷支付,微信支付,支付宝支付,此时,可以通过引导路由,确定某业务支持的支付方式和卡类型信息。 一句话定义:返回业务支持的支付方式,银行和卡类型。

通道路由是指我们选择某支付方式后,支付方式有多条支付通道支持,此时需要根据规则选择某通道进行支付。 比如P2P业务选择快捷支付后,具体是走易宝还是银联,最终的结果按照路由的规则计算得到。 一句话定义:返回符合条件的最优通道列表。

四、引导路由分析

2018-03-30 21:35:38

影响要素:

基本的模型如上图,如果要实现更复杂的控制,可以基于以上模型扩展。比如控制某个时间段,某个通道可用/不可用,控制通道分流等。

五、通道路由分析

2018-03-30 21:37:26

影响要素:

  1. 通道限制:业务类型,支付方式,通道状态,支持银行,卡类型,银行限额,黑名单,白名单等;
  2. 权重计算:费用(手续费,鉴权费用),到账时效,结算周期,通道质量等。

六、系统功能

6.1 管理后台

  1. 通道基本信息:通道名称,所属支付机构,支付方式,通道标识,通道状态, 支持银行,支持卡类型,支持账户类型。
  2. 通道特性信息:限额信息(单笔,单日,单月),手续费(卡类型,手续费类型[固定值,百分比,阶梯]),鉴权费用,到账时效性(实时,T+1,2小时内),结算周期(实时,T+1),通道质量,终端类型;
  3. 业务通道关系:业务系统,支付方式,支持银行,卡类型,账户类型,支持通道(主通道,备用通道)等;
  4. 路由条件管理: 如下图:

2018-03-30 21:40:15

以费用的阶梯价格为例,配置后的示例,如下:

2018-03-30 21:41:13

  1. 路由权重管理:业务系统,支付方式,路由条件,权重值。 配置后的示例,如下图:

2018-03-30 21:42:41

七、技术架构

7.1 核心域模型

2018-03-30 21:44:44

7.2 路由服务核心组件

2018-03-30 21:46:56

八、系统展望

目前的系统已满足所需场景,还可以在以下方面进行优化:

  1. 粒度控制:根据账户类型,客户端类型,进行功能的进一步细化,支持更多场景。 性能优化:路由信息除动态的数据外,配置数据可以采用本地缓存+分布式缓存,提高系统性能。
  2. 通道画像:根据通道交易数据,对通道情况进行画像,从而自动判断通道的可用情况,自动给通道打分等。

Q&A

Q: 是以后如果接网联基本用不上理由了, 存量通道要切换,新接通道只能接网联
A: 如果是商户还是需要路由的,网联只放支付公司。 A: 虽然线上支付公司都接网联,但各支付公司在都接网联的情况下同一业务成本和支持银行能力还是有差异,所以对商户而言,我觉得还是有路由的需要

Q: 路由策略是实时请求运算的 还是预生成的?
A: 实时计算的,也可以加缓存。 加缓存效率会更高,目前生产不加缓存的情况下30——50毫秒返回结果 ,缓存后可以提升到5——10毫秒

Q: 咨询下,你在定义引导路由是说:返回业务支持的支付方式,银行和卡类型。 返回支付方式我明白,返回银行和卡类型是什么意思?能举个例子么?
A: 他是根据业务类型返回的一些支持要素, 这些要素在去进一步做通道路由,我是这么理解的
Q:这些要素在调用支付通道的接口时会作为参数使用么?
A:支付要素是指影响路由结果的参数。 路由是选择支付通道,分享的账户类型是指对公或对私。支付要素,作为接口参数。
Q:我做成静态表了,没你做的那么复杂,就几条通道
A: 我们的多,每个业务线需要不同的规则。


本文档来自支付产品技术交流群的聊天记录整理,由志愿者整理并发布到本网站。如需要及时收到来自支付产品技术交流群的最新消息,请扫码关注“凤凰牌老熊”的微信公众号。 本群面向支付行业的有经验(2年以上)的产品经理、软件工程师、架构师等,提供交流平台。如想加入本群,请在本文评论中留言(不公开),说明所在的公司、负责的工作、入群分享的主题和时间。