Skip to content

Instantly share code, notes, and snippets.

@squarizi
Last active November 22, 2022 13:32
Show Gist options
  • Save squarizi/ec86300c5bb9dd6c49cc4c9f06d6a3bd to your computer and use it in GitHub Desktop.
Save squarizi/ec86300c5bb9dd6c49cc4c9f06d6a3bd to your computer and use it in GitHub Desktop.
Precificação Split - Recurrent X Cobrador

Regra de Cobrança para utilização do Split

1 Ativando a Funcionalidade

Para ativar a funcionalidade do SPLIT, atualmente utilizamos a ativação via toggle, fez sentido para controlarmos os fluxos de funcionamento iniciais e também prevenção contra erros graves, porém agora precisamos disponibilizar a ativação da funcionalidade de forma visivel para a quipe Vindi e ao Merchant. Pensando nisso, a proposta de ativação da funcionalidade ficou a cargo de utilizarmos Extensões e Integrações.

image

A proposta é inserir uma integração para ativação da funcionalidade do Split e verificar se o merchant possui algum Gateway Vindi Pagamentos (Yapay) ativo para instalar.

image

  • Quando o merchant não possuir nenhum gateway Vindi Pagamentos ativo, devemos impedir a instalação da extensão image

  • Quando o merchant possui um Gateway Vindi pagamentos ativo ele poderá seguir com a instalação image

  • Quando Merchant consegue ativar a funcionalidade e pode edita-la image

Obs: Os textos precisam de revisão pelo time de design e produto.

2 Conversão de verificação de toggle SPLIT para Extensão com split ativo

Atualmente, utilizamos a verificação de toggle ativo para as validação do Split. Precisamos modificar estas validações para que olhem para a ativação da integração de SPLIT do merchant.

OBS: Antes de subir esta tarefa, precisamos instalar as integrações para os merchants presentes atualmente no toggle.

3 Adição de produto na assinatura do Merchant

Para que o projeto do Cobrador consiga efetuar a geração correta da fatura do Cliente da Vindi, precisaremos:

  • Criar um produto no Merchant Vindi que refira-se a precificação do SPLIT
  • Ao ativar a flag de split em qualquer gateway na Plataforma, precisaremos adicionar o produto do SPLIT na assinatura do Merchant.
  • O produto nunca deverá ser removido da assinatura.

3.1 Criação de produto para precificar SPLIT

Em produção, no Merchant Vindi, precisamos criar um produto referente a utilização do SPLIT, similar ao que criamos para o Renova Cartões por exemplo: image

Precisamos nos atentar e documentar o valor que inserimos no campo Calculo, pois utilizaremos este valor na regra do Cobrador e na inserção do produto na assinatura do merchant. image

3.2 Adição de produto Split na Assinatura do Merchant

Precisamos adicionar o produto criado para SPLIT na assinatura do merchant com a Vindi. Para isso podemos utilizar o serviço Subscribable

PR de exemplo: https://github.com/vindi/recurrent/pull/5963

4 Consulta a transações que utilizaram SPLIT

4.1 Recurrent

No recurrent precisaremos criar uma maneira de conseguirmos requerir via API apenas as transações que utilizaram-se de uso da funcionalidade SPLIT de acordo com seu tipo, merchant e período de tempo. Atualmente o cobrador utiliza-se do relatório de transações, portanto precisaremos inserir um novo parâmetro de pesquisa na geração do relatório de transações.

  • Atualmente o cobrador utiliza o endpoint de esportações v1/exports, este endpoint utiliza-se dos filtros ja presentes no relatório de transações para aproveitar-se do resurso da gem ransack para efetuar consultas de forma segura e facilitada. Atualmente o fluxo consiste em:
        def collection
          @collection =  if query['with_split'] == true
                           super.joins(:transaction_affiliates)
                         else
                           super
                         end
        end

4.2 Cobrador

Precisaremos inserir a regra de contagem de utilização, iremos fazer algo parecido com o que fizemos na precificação do renova cartões, que aconteceu aqui:

De acordo com o código do produto, iremos ao relatório de Transações, conforme fazemos aqui, algumas vezes.

        when 'codigo_do_produto_criado_para_precificar_split_no_merchant_vindi_em_producao'
          client = Cobrador::RecurrentClient.new
          response = client.create_export(
            {
              report: 'TransactionsReport',
              query: {
                created_at_date_gteq: period_start_on,
                created_at_date_lteq: period_end_on,
                gateway_acquirer_eq: 'yapay',
                with_split: true, # Nova flag de busca que adicionaremos
                transaction_type_not_in: [3, 6, 7] # Capture, Void, Renew
              },
              entities: [
                'transaction.customer',
                'transaction.payment_method',
                'transaction.gateway'
              ]
            },
            { headers: { 'Vindi-Merchant-Id' => code } }
          )['export']

          export_id = response['id']
          usage_size = response['number_of_records']
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment