关于路由系统,我的理解是根据业务需求选择最优的支付通道,或者最符合业务要求的通道。
支付路由中渠道的计算因子:
消费金融公司主要使用代扣功能,在还款日针对用户的代扣卡进行扣款。这种业务的要求首先是渠道稳定性、回盘效率、其次才是费率。因为代扣的稳定对于公司来讲尤为重要,1️⃣ 回盘效率不高:在上班前无法正常回盘,那么将影响催收工作无法确保把用户的正常还款,从而造成合同逾期。2️⃣ 不稳定,经常掉单:造成业务系统无法入账造成重复代扣或者入账错误造成资损。
一 、模块组成
通道管理:管理通道的信息:通道类型(正常、资金通道),渠道编码、是否生效 等
通道银行管理:配置每个通道的银行信息作为路由的计算因子:银行编码、渠道、失败次数、单日限额、单次限额、卡类型、业务类型、处理类型等。
商户渠道规则:支付系统商户管理、商户与通道关系配置、
规则管理:规则创建及规则配置管理:单日限额规则、单次限额规则、失败次数规则等、规则与通道权限管理。
资金方规则:资金方信息管理:资金方编码、类型。资金方与通道权限规则配置管理。
渠道商户号规则:第三方支付通道商户号与支付系统商户的关系。
二 、业务划分
支持业务: 单笔代扣、批量代扣、单笔代付、批量代付、快捷支付、鉴权
每家通道的单笔、批量的限额、失败次数、手续费都不同的、适配所有业务类型在一个配置基础的计算因子。
三、 详细设计
渠道路由
具体程序实现,逻辑处理过程
1 根据bankCode、业务类型(代扣、代付、快捷值)、处理类型(单笔、批量)查询渠道银行表获取所有的支持渠道。 银行渠道表:银行在渠道的业务信息:限额、失败测试、卡类型等
2 根据每个渠道银行的业务信息和交易单信息进行比较过滤不符合条件的渠道。 业务信息:交易金额、在渠道失败次数
3 最终获取支持的渠道列表,把渠道列表传递下一个路由处理器。
资金方路由
资金方路由是一个比较特殊的模块,消费金融公司资金来源多个资金方:银行、p2p公司、证券等,对于支付的通道有特殊的要求。
详细
1、流程比较简单就根据配置好的规则获取得结果。
2、针对不同的资金方,有些资金方要求的通道无法满足业务,我们需要开率交易的特殊性,尽可能的保证用户的还款。自动选择我们自有通道,然后再由结算层面做后续的资金的结算处理。
举个栗子:资金方要求我们必须调用他们的接口,我们要再路由层面对资金方的通道打上标签保证其他也正常进行。随着国家监管的加强,为了合规性的考虑资金方的要求会更加特殊、我们都需要这个做针对性处理。
商户路由
商户路由主要是根据商户的特殊要求进行设置支付系统商户允许使用的代扣、代付渠道有哪些。
目的
允许商户指定支付渠道,最大可能满足所有支付商户支付需求。同时支持商户指定银行和渠道优先级路由。
详细
1 根据订单商户号获取当该商户支持的渠道。
2 根据上一个处理结果求合集或者返回上一个处理器结果。该商户路由不作为必需执行的路由规则。
3 我们的商户一般是我们不同的业务线,因为业务的不同可能公司的主体不同,要保证商户使用特殊指定渠道。有些通道会检查交易的来源,交易的公司主体和合同不符可能会造成通道关闭或者罚款。
其他
我们在路由中还添加了渠道商户号和平台商户、资金方的关系表,用于渠道发送交易是使用接口获取商户号。因为我们一家通道可能开几个到几十个商户号。这些都有一定的规则去使用。
流程图:
在最后一步,添加一个规则引擎可以执行脚本,一般是特殊的规则。例如:打款有些卡号必须使用银企直联、有些业务必须使用特别的渠道等。
四、 总结
我们支付路由看起来处理流程比较简单,但是内部有很多处理细节,不便多说。路由系统可大可小,一定要针对公司的业务场景、不能好高骛远,小步快跑逐步迭代。邓爷爷告诉我我们,"黑猫白猫抓住耗子就是好猫”。