Documento técnico de design de pagamento: design de sistema de roteamento para sistemas de pagamento

prefácio

Eu escrevi alguns artigos sobre o sistema de pagamento para você. Se você gostar, você pode dar um like no Liuliu. O seguinte foi escrito antes.

Em termos de função, roteamento é o processo de obtenção de resultados desejados de acordo com uma série de regras. Para ser franco, é combinar de acordo com uma condição e, finalmente, combinar com o resultado alvo, que é exatamente o mesmo que o processo pelo qual costumamos fazer julgamentos e escolhas.

O roteador é o "oficial de seleção de canais" mais forte da história. Pode ser grande ou pequeno, fraco ou forte, pode ser opcional, e é tão casual e irrestrito para ele.

O que é roteamento de pagamento

Com base nos atributos e características do canal de pagamento e nos requisitos do sistema de negócios, selecione o canal ideal para a transação de pagamento que atenda aos requisitos de negócios; resumindo, o sistema de negócios precisa coletar dinheiro e seu roteador me ajudará escolha o melhor canal! Este é o papel do roteamento, tomando decisões para a seleção do canal.

Por exemplo, se você for de Guangzhou a Pequim, você pode dirigir, pegar um trem, pegar um trem de alta velocidade ou pegar um avião. Então, de acordo com diferentes condições, você pode selecionar o método que melhor lhe convier e nós chame isso de roteamento.

O papel do roteamento de pagamentos

Como eu disse há pouco, para escolher um canal ideal, o efeito é na verdade:

  • Reduzir custos: quanto mais barato melhor;
  • Melhore a experiência do usuário: quanto mais confortável o usuário pagar, melhor;
  • Verifique se há um canal disponível: você não pode alterar este, verifique se pode concluir o pagamento.
  • Ou em casos especiais, podemos especificar nosso canal específico

As rotas são classificadas por características de serviço

  • Roteamento consultivo: você pergunta pra ele, ele te diz um canal;
  • Roteamento baseado em serviço: você pergunta a ele, ele escolhe um canal para você, liga para o canal para concluir o pagamento e informa o resultado do pagamento.

Implementação de roteamento

Como filtrar canais

Geralmente, há três maneiras de rotear e filtrar canais:

  1. Roteamento manual: Este método é adequado para o caso em que há poucos canais e, à medida que o número de canais aumenta, esse método não é adequado;
  2. Roteamento de regras: Geralmente, você mesmo pode combinar os canais apropriados ao consultar o banco de dados por meio das condições coletadas e concluir a seleção de prós e contras. Esse é o método mais usado;
  3. Roteamento baseado em peso: Este método é mais complicado, e a configuração de pesos requer tentativas constantes, e pode haver vários conjuntos de esquemas de configuração de peso para diferentes cenários, o que não é simples de operar.

由于基于权重的路由实操起来很难,所以路由设计一般会将人工路由和规则路由一起使用,规则路由为主,人工路由为辅,进行人工干预,打破规则路由的规则。

筛选渠道的要素

规则路由筛选渠道的要素,可以分为以下三类:

  1. 商户侧:商户ID(根据商户的等级、商户行业、商户地域等信息为商户配置渠道之后,在调用路由模块时,只需要上传商户ID即可,如果有共用的渠道可以使用的话,则可能需要上传商户的更多信息);
  2. 业务侧:交易时间、交易金额(单笔、汇总、阶梯)、渠道类型、卡类型、交易银行;
  3. 渠道侧:费率(单笔、汇总、阶梯)、营销(优惠、折扣、补贴总金额、活动时间)、渠道等级(稳定性、TPS、掉单率、到账时效)、资金头寸(只在付款的交易中需要考虑)。

路由设计

后台服务型系统的设计一般都逃不过三个范围:业务流程、管理页面、接口。

  1. 业务流程是后台服务型系统模块的核心,它规定了该系统模块的业务处理逻辑;
  2. 管理页面是操作员进行系统模块的管理入口,通常用来进行必要的信息设置,以及查看该模块产生的日志信息;
  3. 接口是供其他系统模块请求本系统模块的入口,接收到请求之后,本系统模块即会按照既定的业务流程,进行业务处理,并返回处理结果。

支付路由也属于后台服务型的系统模块,它的业务流程一般分布在来自管理页面的配置和接口的调用当中,不存在自动化的业务处理。

其中,管理页面的功能范围,要有对应上述业务侧和渠道侧信息的渠道入驻管理(包括关停、启用)、以及商户和渠道之间建立关联关系的管理功能;

接口则是在被调用的时候,根据请求参数和筛选出的各渠道的成本排序,完成成本最低的最优渠道选择,并在接口被同一笔订单多次调用的时候,依次返回最优、次优渠道,直到可选渠道全部尝试完毕(如果系统本身进行了尝试渠道次数的限制;比如限制3次,则另当别论;另外对于付款交易,为了防止资金损失,一般不建议在调用一个渠道失败之后,调用另一个渠道)。

个人所见,以上就是路由模块的共性部分,具体到每个公司的方案实施,可能会有按照渠道成功率等信息进行渠道优劣分级的功能,可能会要求有阶梯费率的情况,可能会要求先调用指定渠道再调用渠道成本最低的渠道。

支付路由怎么设计的?

imagem.png

roteamento de canal.jpg

在设计之前,我们首先要了解下路由的基本流程,路由在筛选最优渠道时候主要包括五个部分: 命中+优先级排序+可用性判断+成本计算+权重分流

imagem.png

命中

首先我们搞清楚什么叫命中?以及命中维度? 所谓命中就是交易参数上送到路由系统,触发规则引擎,查找出哪些渠道可能会支持这笔交易,打个形象描述吧,这个步骤就是警察拿着目击证人对罪犯的描述信息(报文参数),从一群人中找出符合外貌描述的可疑人,并且这些可疑人天生就有罪犯长相,特别是光头,在后期审问时候头发越少越重点关注,先从发量少的的开始审问(规则优先级);还有的原来蹲过局子,有前科,就算你有一头乌黑亮发,也优于光头先审问,说不准就是惯犯作案呢(强制规则),有的是劳模榜样,国家好青年,则排除(排除规则),取得这些嫌疑人信息后,移交审讯组根据证据确定哪个是罪犯。 命中维度问题,也就是锁定嫌疑人范围问题:

imagem.png

如图:我们现在有这三个维度,支付渠道、交易类型、交易机构 接着上面比喻吧,(支付渠道-某街道 交易类型-某小区 交易机构-某单元)在锁定可疑人时,锁定的维度越小,前期警察叔叔做的摸排工作就越多,体现在系统方面就是运营人在后台做的配置就越多越细,对于系统来说也就越耗性能,此处我们命中维度为交易类型,另外两个维度,一个太泛,一个太细,泛即失去了此环节的意义,太细又加重了此环节运营人员的配置和应用处理。

优先级

优先级是什么? 继续上例:我们根据发量对嫌疑人进行分组(发量是嫌疑人自有属性,也就是命中的渠道有优先级属性),光头佬组,地中海组,乌黑油亮仔组,但是在进行排序审问前,了解到,其中有一个可疑人员有犯罪前科,那么我们就将其优先盘问,同时有一个刚获取到国家好青年表彰,那么我们从可疑人员中剔除,不在我们的排查范围。

注:很多人这里搞不清楚的一个问题,优先级和可用性问题,笔者公司就是将优先级放到可用性判断规则链里了,作为其中一个处理器,就这么一放,处理性能不知道降低了多少倍。 这么设计的问题:没有搞清接口作用,路由系统,主要目的是返回给调用方最优支付渠道,也就是一条渠道,(当然也会有的是返回多条根据优先级进行排序好的可用渠道列表,此处我们不做此讨论),规则链应该是抽取出来的不同校验处理项,根据不同业务线进行组装,但是不管是支付通道过滤也好,签约通道过滤也好优先级必过滤项,都是必过滤一项,所以优先级不应该放入规则链中。

放入规则链中的问题:优先级和其他校验项,比如支持卡类型、公私标识、黑白名单...他们不属于同一层次的东西,笔者公司就是将他们放入同一层次了,先校验了其他校验项目,比如总共有十个校验项优先级排第九项,命中了五个通道,都通过了前面八个校验项,到第九个再根据优先级分组,如果优先级排序最高层次的有一条,中层次有三条,低层次有一条,过了优先级处理器后,就只取最高层次的一条,那么其余四条白过了前八项校验!正确处理姿势,应该是先对命中规则先进行优先级排序,从最高到最低依次流入规则链,如果最高层次有满足的支付渠道,那么就可以退出直接返回了,而不是先判断完所有命中渠道再筛选优先级最高的那条!

支付路由系统作为支付系统里最耗人设计能力的模块,稍有不慎,性能就大打折扣,性能问题,在设计编码时候就应时刻考虑,而不是仅仅完成功能开发,后期系统响应慢,想改都难了。

可用性判断

可用性判断,也就是对命中的渠道进行进一步判断,就像排查可以人当天夜晚在哪里,在干嘛等等,对应支付路由就是校验此交易类型是否支持此交易的卡行、公私类型、限额、此时是否在此渠道的工作时间等等,大概算下来足有二十项左右。首先进入可用性判断的是有前科的嫌疑人,也就是命中的强制规则,经过多方面盘问,最终两种结果,1.自己确实犯事,2.自己清白,如果是自己确实犯事了,流程结束,退出流程,返回此渠道,不再盘问其余可疑人,如果是清白的则开始盘问其他可疑人。

Quando interrogamos outras pessoas suspeitas, de acordo com o agrupamento, começamos com o grupo careca, e os dois carecas são interrogados sucessivamente, ou seja, começando pelo grupo de maior prioridade. Se todos os canais dessa prioridade não tiverem ido através da cadeia de processamento de julgamento de disponibilidade, Em seguida, interrogue a pessoa suspeita no grupo Mediterrâneo. Se houver vários canais restantes após esse grupo passar pela cadeia de processamento de disponibilidade, ele fluirá para o próximo processo. Se houver apenas um canal, ele será retorne diretamente a este canal. Em seguida, saia do processo e nenhum canal estará disponível.

calculo de custo

Se houver mais de um canal disponível após a mesma prioridade ter sido avaliada quanto à disponibilidade, calcularemos o custo nesta etapa e calcularemos de acordo com a regra de custo do canal. Se houver três canais fluindo para esta etapa e os custos calculados forem: Alipay: 1 yuan, WeChat: 2 yuan, Yibao: 1 yuan, após esse processo, os canais restantes são: Alipay, Yibao, esses dois canais Então flui para a próxima etapa. Se os custos forem: Alipay: 1 yuan, WeChat: 2 yuans e Yibao: 3 yuans, retorne ao canal Alipay diretamente. Para reduzir a complexidade, não discutimos a taxa de sucesso do canal e tempo de resposta da interface aqui. Para métricas de tempo de execução como essa, discutimos apenas as métricas de configuração operacional no momento, e as métricas de tempo de execução serão discutidas posteriormente.

Pesos

Após o cálculo do custo na etapa anterior, ainda existem vários canais disponíveis com o mesmo custo de mesma prioridade, então essa etapa será ponderada para ver por qual canal essa transação passa. O peso e a prioridade são atributos próprios do canal hit. É um valor de modelagem ao configurar as regras: por exemplo, existem dois canais restantes no momento deste processo: Peso Alipay: 30 Peso Yibao: 70, ou seja, 30% de probabilidade dessa transação passar pelo Alipay , 70% de probabilidade de passar por Yibao, e isso é para diversão.

Terminar

Ok, deixe-me compartilhar com você o design de roteamento do sistema de pagamento. Este sistema não é um módulo necessário do sistema de pagamento, mas se o seu sistema de pagamento atingir uma certa escala, ele precisa ser projetado. Seis ou seis, três dias de pesca, dois dias de secagem de rede

Estou participando do recrutamento do programa de assinatura de criadores da Comunidade de Tecnologia Nuggets, clique no link para se cadastrar e enviar .

Guess you like

Origin juejin.im/post/7121192102125387789