专栏名称: 凤凰牌老熊
互联网金融,软件架构,资深Java工程师
目录
相关文章推荐
芋道源码  ·  年后面试的兄弟们注意了。。。 ·  昨天  
芋道源码  ·  面试官问我:自己写String类,包名也是j ... ·  2 天前  
芋道源码  ·  老板爱瞎改权限怎么办:注解+AOP ... ·  2 天前  
芋道源码  ·  腾讯开源:零代码、全功能、强安全 ORM 库 ·  2 天前  
Java编程精选  ·  手把手教你Java文件断点下载 ·  3 天前  
51好读  ›  专栏  ›  凤凰牌老熊

20180330-电商支付路由

凤凰牌老熊  · 公众号  · Java  · 2018-08-02 07:00

正文

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

一、项目背景

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

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

二、系统边界

  • 支付系统:接收业务系统请求,调用路由系统选择支付通道,调用支付接口完成支付;

  • 网关系统:封装支付网关,调用支付机构接口;

  • 路由系统:通道,路由和规则配置,路由实现。

三、路由分类

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

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

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

四、引导路由分析

影响要素:

  • 业务系统

  • 支付方式

  • 支付通道

  • 支持银行

  • 支持卡类型

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

五、通道路由分析

影响要素:

  1. 通道限制:业务类型,支付方式,通道状态,支持银行,卡类型,银行限额,黑名单,白名单等;

  2. 权重计算:费用(手续费,鉴权费用),到账时效,结算周期,通道质量等。

六、系统功能

  1. 通道基本信息:通道名称,所属支付机构,支付方式,通道标识,通道状态, 支持银行,支持卡类型,支持账户类型。

  2. 通道特性信息:限额信息(单笔,单日,单月),手续费(卡类型,手续费类型[固定值,百分比,阶梯]),鉴权费用,到账时效性(实时,T+1,2小时内),结算周期(实时,T+1),通道质量,终端类型;

  3. 业务通道关系:业务系统,支付方式,支持银行,卡类型,账户类型,支持通道(主通道,备用通道)等;

  4. 路由条件管理: 如下图:

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

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

七、技术架构

7.1 核心域模型

7.2 路由服务核心组件

八、系统展望

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

  1. 粒度控制:根据账户类型,客户端类型,进行功能的进一步细化,支持更多场景。

  2. 性能优化:路由信息除动态的数据外,配置数据可以采用本地缓存+分布式缓存,提高系统性能。

  3. 通道画像:根据通道交易数据,对通道情况进行画像,从而自动判断通道的可用情况,自动给通道打分等。







请到「今天看啥」查看全文