---
# System prepended metadata

title: Fluxo de ativação

---

# Fluxo de ativação

### Fluxo de aquisição de um terminal

1) Merchant compra um terminal, o sistema de pagamento é pelo pagseguro (growth) .
2) Pagseguro confirma o pagamento, é criado uma nova Company na collection companies do mongodb (growth).
3) O parceiro logístico faz o setup e cadastramento desse terminal no nosso hashboard, é criado um novo CaptureHardware na collection capturehardwares do mongo (growth).
4) O terminal é enviado para o Merchant (growth).
5) Ao receber o terminal, o Merchant vai fazer o processo de ativação (pinfra).

### Quais informações precisamos ter em nossos sistemas para que o processo de ativação ocorra?

- Cadastro de ISO (Company primária no mongodb).
- Cadastro de Merchant (Company no mongodb).
- Cadastro de Terminal (CaptureHardware no mongodb).

### Solução proposta

Após o parceiro logístico enviar o terminal para o Merchant, vamos ter no mongodb:

- Cadastro dessa Company (Merchant), incluindo a que Company primária que ele pertence (ISO) e sua Affiliation.
- Cadastro do CaptureHardware (Terminal), incluindo qual é o modelo e serial_number.

A proposta é importar essas informações do mongodb para os bancos do term-api/cardprocessor nas seguintes condições:

- Importar uma Company (e seu ISO se for necessário) sempre que existir uma Affiliation {"internal_provider": "hash", "provider": "hash"} para a mesma.
- Importar um CaptureHardware se ele for cadastrado com {"provider": "hash", "software_provider": "hash"}.

Será criado um serviço chamado mongosync que vai cuidar do processo de sincronização:

- Quando Company/CaptureHardware for inserida/atualizada, publicar uma mensagem de notificação em um tópico do Google PubSub.
- Essa notificação será consumida e os dados importados para os bancos do term-api/cardprocessor caso eles passem nas condições descritas anteriormente.

### Mudanças que serão feitas no IG

- Alterar o código para criação de Affiliations com {"internal_provider": "hash"}.
- Alterar o código para criação de CaptureHardware com {"software_provider": "hash"}.
- Alterar o código para lidar com o envio de informações para uma Affiliation com {"internal_provider": "hash"}
    - https://github.com/hashlab/infinity-gauntlet/blob/a8da9ec702a8e06a2366786834bef32e85e1a1f2/src/application/core/services/affiliation.js#L475
    - https://github.com/hashlab/infinity-gauntlet/blob/a8da9ec702a8e06a2366786834bef32e85e1a1f2/src/application/core/services/affiliation.js#L503
