Realizei o Desafio PicPay como um exercício de aprendizado, pois sou apaixonado por linguagens de alto nível, como Java, por exemplo. Por isso fui logo fazendo quando vi o repositório.
Criei uma rota para transferências no endpoint http://localhost:8080/transfer
, que verifica a disponibilidade do serviço antes de processar a requisição. As rotas utilizadas para simulação são:
- Autorização: https://util.devi.tools/api/v2/authorize (verbo
GET
). - Notificação: No recebimento de pagamento, o usuário ou lojista recebe uma notificação (por e-mail ou SMS) enviada por um serviço de terceiros. Esse serviço pode estar indisponível ou instável. Utilize o mock https://util.devi.tools/api/v1/notify (verbo
POST
).
- A operação de transferência deve ser uma transação atômica. Em caso de inconsistência, a transferência será revertida, e o dinheiro retornará para a carteira do usuário que fez o envio.
As respostas da API podem ser:
Para executar este projeto, você precisará dos seguintes pré-requisitos:
Para iniciar o projeto, siga as etapas abaixo:
- Executar Docker Compose: Certifique-se de que todos os serviços necessários estejam em execução. Execute o seguinte comando:
docker compose up
Isso iniciará os contêineres necessários para a aplicação.
- Limpar e Instalar Dependências: Execute o comando a seguir para limpar e instalar todas as dependências do projeto:
mvn clean install
- Executar a Aplicação: Para iniciar a aplicação Spring Boot, utilize o comando:
./mvnw spring-boot:run
- Executar Migrações do Flyway: Para aplicar as migrações do Flyway, utilize o seguinte comando, garantindo que o arquivo de configuração esteja no caminho correto:
mvn -Dflyway.configFiles=src/main/resources/flyway.conf flyway:migrate
- Migrar Fresh e Semear: Para realizar uma migração fresh e semear o banco de dados, execute:
./mvnw spring-boot:run -Dspring-boot.run.arguments="migrate-fresh-and-seed"