Skip to content

Instantly share code, notes, and snippets.

@squarizi
Created November 11, 2022 12:20
Show Gist options
  • Save squarizi/2d3194e1b92e249ef108e0ab9e2ba7ca to your computer and use it in GitHub Desktop.
Save squarizi/2d3194e1b92e249ef108e0ab9e2ba7ca to your computer and use it in GitHub Desktop.
Split na Recorrência

Split na Recorrência

API

Setup inicial

Como o split é um produto novo, precisamos fazer um setup inicial para garantir que o cliente que irá praticar o split é elegível para utiliza-lo;

A conta deve ter as seguintes configurações:

  • Gateway Vindi Pagamentos;
  • O id de sua conta deve ser adicionado no toggle split_payment;

Participante

Para utilizar o split na recorrência precisamos cadastrar um Participante, este que receberá uma parte de um pagamento que for configurado com split e que for adicionado como participante da assinatura/fatura;

Para criar e gerenciar um participante utilize a API de participantes da plataforma;

Na api é necessário passar o seguinte dado:

  • login => e-mail do participante (deve ser cadastrado na Vindi Pagamentos);

Importante: Para cadastrar um participante é necessário que seja informado seu e-mail, este e-email deve necessáriamente ser o mesmo e-mail da conta deste participante na vindi pagamentos; Um participante só sera ativo se tiver uma conta ativa e verificada no vindi pagamentos;

Verificação de conta na Vindi Pagamentos

Para que seja possível adicionarmos um participante em uma transação é obrigatório que este participante tenha uma conta verificada (nivel 5) na vertical de pagamentos. Para garantirmos que consigamos transacionar nós fazemos uma verificação no momento que um participante é cadastrado.

Cada participante tem um status do cadastro, este status reflete em seu estado na vertical de pagamentos, podemos assim garantir que só vamos transacionar se este participante tem conta na Vindi Pagamentos. Importante: A verificação é realizada a partir do e-mail informado no ato do cadastro do participante

Ao cadastrar um participante o sistema de recorrência seu status fica como Aprovação Pendente (pending_approval), assim o sistema automáticamente vai verificar se este email tem uma conta cadastrada e verificada na vertical de pagamentos (estima-se que a verificação pode demorar por volta de 5 minutos). Se esta conta existir e for verificeada na vertical de pagamentos, seu status será atualizado para Ativa (active), e este participante estará pronto para ser incluido em assinaturas e faturas. Se esta conta não existir na vertical de pagamentos, seu status será atualizado para Bloqueado (blocked), assim não sendo possível transacionar.


API de solicitação de verificação de um participante

Existe uma nova API onde é possível verificar se um participante tem uma conta ativa na vertical de pagamentos após ele já ter sido cadastrado e estar bloqueado.

Pensando no seguinte cenário:

  • Foi cadastrado um participante;
  • Quando a Vertical de Recorrência foi verificar este participante em pagamentos foi constatado que ele não tinha uma conta, ou a sua conta não estava verificada (nivel 5);
  • Então, naturalmente, o status do participante foi alterado para Bloqueado (blocked);
  • Tendo esta informação, o participante regularizou a situação de sua conta na vertical de pagamentos;
  • Mesmo ele tendo atualizado sua conta, na vertical de Recorrência sua conta continua bloqueada;

Foi pensando neste cenário que foi desenvolvido o endpoint onde é possível re-verificar esta conta.

O endpoint é o PUT /api/v1/affiliates/<id>/verify.

Ao enviar uma requisição para este endpoint, vamos novamente verificar na vertical de pagamentos a conta deste participante, atualizando novamente seu status para Aprovação Pendente (pending_approval), e depois de verificado, para Ativa (active) se estiver ativa e verificada, ou voltar para Bloquado (blocked) se esta conta continuar não verificada.

Validações da API de verificação de participante
  • Só é possível abrir uma nova verificação para contas que estão BLOQUEADAS;
  • Contas já ativas ou com aprovação pendente vão retornar um erro e não vão realizar nenhum processamento;
  • A aprovação é verificada de forma ASSINCRONA, ou seja, o sistema irá realizar a verificação após dar a resposta para a chamada, sendo necessário verificar o participante após a chamada da verificação (que estima-se que pode demorar por volta de 5 minutos);

Fatura avulsa

Para adicionar participantes em uma fatura avulsa podemos adicionar as seguintes informações na chamada da API de sua criação:

  • affiliate_id => ID do participante préviamente cadastrado;
  • amount_type => Aqui vamos dizer se o valor que este participante vai receber vai ser uma porcentagem do valor total da fatura, ou será um valor absoluto idependente do valor da fatura, os valores que podemos passar aqui são:
    • percentage: Valor definido será uma porcentagem;
    • amount: Valor definido será um valor absoluto;
  • amount: Valor que será repassado para o participante, esse valor é um número, que representa o valor absoluto ou a porcentagem do repasse, dependendo do parâmetro passado no amount_type;

Esses parâmetros devem ser passados em uma nova chave no corpo da API, exemplo:

{
  "customer_id": 1234,
  "payment_method_code": "credit_card",
  "bill_items": [
    {
      "product_id": 4321,
      "amount": 100
    }
  ],
  "bill_affiliates": [
    {
      "affiliate_id": 1,
      "amount": 10,
      "amount_type": "percentage"
    }
  ]
}

Neste exemplo estamos repassando um valor de 10% da fatura para o participante de id 1;

A chave de bill_affiliates recebe uma lista de participantes, podendo ser definidos mais de um participante para uma fatura;


Assinatura

Para adicionar participantes em uma assinatura podemos adicionar as seguintes informações na chamada da API de sua criação:

  • affiliate_id => ID do participante préviamente cadastrado;
  • amount_type => Aqui vamos dizer se o valor que este participante vai receber vai ser uma porcentagem do valor total da assinatura, ou será um valor absoluto idependente do valor da assinatura, os valores que podemos passar aqui são:
    • percentage: Valor definido será uma porcentagem;
    • amount: Valor definido será um valor absoluto;
  • amount: Valor que será repassado para o participante, esse valor é um número, que representa o valor absoluto ou a porcentagem do repasse, dependendo do parâmetro passado no amount_type;

Esses parâmetros devem ser passados em uma nova chave no corpo da API, exemplo:

{
  "plan_id": 1234,
  "customer_id": 321,
  "payment_method_code": "credit_card",
  "product_items": [
    {
      "product_id": 1
    }
  ],
  "subscription_affiliates": [
    {
      "affiliate_id": 1,
      "amount_type": "amount",
      "amount": 10
    }
  ]
}

Neste exemplo estamos repassando um valor de R$ 10,00 de cada ciclo da assinatura para o participante de id 1;

A chave de subscription_affiliates recebe uma lista de participantes, podendo ser definidos mais de um participante para uma assinatura;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment