tbizze / api_extrato_bancario

Projeto para testar requisições a APIs de bancos para obter extrato e saldos.
0 stars 0 forks source link

Integração com APIs de saldo e extrato - Multitenant #33

Closed tbizze closed 2 months ago

tbizze commented 2 months ago

Explicação do Desenvolvimento do Recurso

O objetivo é integrar a aplicação com as APIs de saldo e extrato bancário dos bancos Santander e PagBank, para importar automaticamente as transações e armazená-las na tabela transactions da aplicação. O recurso será implementado utilizando a camada de Serviços do Laravel, garantindo uma separação clara entre as responsabilidades e facilitando futuras manutenções e expansões para outros bancos.

Fluxo de Implementação

Conclusão

Com esta implementação:

  1. Santander e PagBank possuem integrações específicas, mas as transações são armazenadas de forma padronizada na tabela transactions.
  2. Laravel Services foram usados para isolar a lógica de integração com as APIs, mantendo o código organizado e fácil de manter.
  3. O sistema garante que as transações de diferentes bancos sejam importadas e armazenadas corretamente.
  4. Este processo permite que novos bancos possam ser adicionados no futuro com relativa facilidade, utilizando a mesma arquitetura.
tbizze commented 2 months ago

Passo a passo:

tbizze commented 2 months ago

Explicação do fluxo para importação:

  1. O TransactionImportController recebe no método import a solicitação de nova importação.Recebe parâmetros: BankAccount, e no Request recebe initial_date | final_date
  2. Por sua vez, faz uso do TransactionManagerService, para gerenciar as requisições às APIs dos bancos.
  3. O método importTransactions do TransactionManagerService receberá parâmetros. Com o BankAccount poderá direcionar a solicitação ao serviço correrspondente daquele banco, e submeter os parâmetros que recebeu, como as datas. SantanderService | PagbankService | ...
  4. Como cada banco, tem suas estruturas e exigências para requisições, a API de serviço de cada banco será personalizada, inclusive com sua maneira específica de autenticação.
  5. Em todas as APIs dos bancos, haverá o método fetchTransactions, responsável por submeter requisições a API para obter as transações.
  6. E antes do método fetchTransactions retornar as transações, ele as submete ao formatTransactions para padronizar o formato dos dados, já que cada banco responde à requisição com um formato.
  7. Então o fetchTransactionsretorna as transações já formatadas ao TransactionManagerService, que retornará essas transações ao TransactionImportController.
  8. Por fim, o TransactionImportController tendo as transações, decide o que fazer com elas: exibir numa view ou armazenar no BD.