Closed tbizze closed 2 months ago
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
TransactionManagerService
, para gerenciar as requisições às APIs dos bancos.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 | ...fetchTransactions
, responsável por submeter requisições a API para obter as transações.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.fetchTransactions
retorna as transações já formatadas ao TransactionManagerService
, que retornará essas transações ao TransactionImportController
.TransactionImportController
tendo as transações, decide o que fazer com elas: exibir numa view ou armazenar no BD.
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
API Integration: Serão criadas classes de serviço específicas para cada banco, responsáveis por fazer requisições às respectivas APIs. Cada classe de serviço converterá a resposta do banco no formato esperado pela aplicação.
Service Layer: A camada de serviços será criada para orquestrar a integração com diferentes bancos. Essa camada irá tratar as respostas das APIs, padronizando os dados antes de salvá-los no banco de dados.
Armazenamento das Transações: Independentemente de qual banco fornecer os dados, todas as transações serão salvas na tabela transactions. Será adicionado um campo bank para diferenciar a origem das transações (Santander ou PagBank).
Autenticação e Configuração de APIs: Será necessária a implementação de autenticação para as APIs dos bancos, armazenando tokens ou credenciais na configuração do Laravel.
Agendamento de Tarefas: Para que as transações sejam buscadas periodicamente, um Job será criado e programado para rodar em intervalos regulares via o scheduler do Laravel.
Conclusão
Com esta implementação: