Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

šŸ‘Øā€šŸ’» Projeto com o desafio de resolver o case back end do PicPay de forma abrangente e eficaz! šŸš€šŸ”

Notifications You must be signed in to change notification settings

Fioshi/java-picpay-simp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

65 Commits

Repository files navigation

šŸš€ Plataforma de Pagamentos - Desafio Back End

Este repositório contém a solução para o desafio back end de uma plataforma de pagamentos. O projeto foi desenvolvido utilizando Spring Boot, Spring Data JPA, Docker, Docker Compose e MySQL. Também foram criados diagramas de arquitetura para melhor compreensão da solução.

šŸ› ļø Tecnologias Utilizadas

  • Spring Boot: šŸš€ Framework principal para desenvolvimento do aplicativo.
  • Spring Data JPA: šŸ“Š Utilizado para persistĆŖncia de dados.
  • Docker: 🐳 Ferramenta de containerização para empacotar a aplicação.
  • Docker Compose: šŸ“¦ Utilizado para orquestrar containers Docker.
  • MySQL: šŸ—„ļø Banco de dados relacional

šŸ” Documentação da API com Swagger

A API possui documentação interativa gerada pelo Swagger, que facilita a visualização e teste dos endpoints.

Acesso à Documentação Após iniciar a aplicação, acesse http://localhost:8080/swagger-ui.html para visualizar a documentação da API.

āš™ļø Funcionalidades Implementadas

  • āœ… Validação na criação de contas: Implementação de regras de negócio para garantir que todas as contas criadas sejam vĆ”lidas.
  • šŸ’ø Pagamentos: Sistema robusto para realizar pagamentos entre usuĆ”rios, incluindo verificação e confirmação.
  • šŸ“§ Envio de e-mail pós-pagamento: NotificaƧƵes por e-mail enviadas automaticamente após a realização de pagamentos.
  • šŸ”’ Sistema autorizador externo de pagamentos: Integração com um sistema externo para autorização de pagamentos, garantindo seguranƧa e confiabilidade.

āš™ļø Configuração do Projeto

PrƩ-requisitos

  • Docker instalado
  • Docker Compose instalado
  • Java 11 ou superior
  • Maven instalado

InstruƧƵes para Executar o Projeto

  1. Clone este repositório:

    git clone https://github.com/Fioshi/picpay-simp.git
  2. Configure o arquivo application.properties com as informações necessÔrias para conexão com o banco de dados.

  3. Compile o projeto:

    mvn clean install
  4. Execute a aplicação utilizando Docker Compose:

    docker-compose up --build
  5. A aplicação estarÔ disponível em http://localhost:8080.

šŸ“Š Diagrama de Arquitetura

Diagrama de Contexto

graph TD;
 User[UsuƔrio do PicPay];
 BackendAPI["Simple PicPay System [Software]"];
 EmailSystem["Sistema de envio de notificação externo [Software]"];
 AuthSystem["Sistema autorizador externo [Software]"];
 User -->|RealizarĆ” pagamentos via| BackendAPI;
 BackendAPI -->|Envia notificação por| EmailSystem;
 BackendAPI -->|Confirma ou não o pagamento| AuthSystem;
 EmailSystem -->|Envia notificação para| User;
Loading

Diagrama de Container

graph TD;
 User[UsuƔrio do projeto];
 BackendAPI["API de Backend (Java + Springboot)"];
 Database["Banco de Dados (MySQL)"];
 EmailSystem["Sistema de envio de notificação por e-mail"];
 AuthSystem["Sistema de autenticação"];
 User -->|Requisição HTTP| BackendAPI;
 BackendAPI -->|šŸ“§ Envia notificação usando| EmailSystem;
 BackendAPI -->|šŸ” Verifica pagamento usando| AuthSystem;
 Database -.->|šŸ“‚ Persiste e retorna dados| BackendAPI;
Loading

Diagrama de Component

graph TD
 User[UsuƔrio do PicPay] -->|SolicitaƧƵes HTTP| AccountController
 User -->|SolicitaƧƵes HTTP| UserController
 User -->|SolicitaƧƵes HTTP| PaymentController
 AccountController[Account Controller] -->|Chama para processar dados| AccountService
 UserController[User Controller] -->|Chama para processar dados| UserService
 PaymentController[Payment Controller] -->|Chama para processar dados| PaymentService
 AccountService[Account Service] -->|Chama para persistir e recuperar dados| AccountRepository
 UserService[User Service] -->|Chama para persistir e recuperar dados| UserRepository
 PaymentService[Payment Service] -->|Chama para persistir e recuperar dados| PaymentRepository
 PaymentService -->|Envia pedido de autorização| ExternalAuthorizationSystem
 PaymentService -->|Envia pedido de notificação| ExternalNotificationSystem
 AccountRepository[Account Repository] -->|PersistĆŖncia| Database[MySQL Database]
 UserRepository[User Repository] -->|PersistĆŖncia| Database[MySQL Database]
 PaymentRepository[Payment Repository] -->|PersistĆŖncia| Database[MySQL Database]
 PaymentService --> PaymentValidators[Payment Validators]
 ExternalNotificationSystem[Sistema de Envio de Notificação Externo]
 ExternalAuthorizationSystem[Sistema Autorizador Externo]
 subgraph API Backend [Java e Spring Boot]
 AccountController
 UserController
 PaymentController
 AccountService
 UserService
 PaymentService
 AccountRepository
 UserRepository
 PaymentRepository
 end
 subgraph DatabaseSystem [Sistema de Banco de Dados]
 Database
 end
 subgraph ExternalSystems [Sistemas Externos]
 ExternalNotificationSystem
 ExternalAuthorizationSystem
 end
Loading

šŸ”— Endpoints

A aplicação possui os seguintes endpoints disponíveis:

  • POST /user: Criação de um novo usuĆ”rio e conta.
  • POST /pagamentos: Realização de um pagamento.
  • GET /pagamentos/{payee}: Obtenção de informaƧƵes de um pelo recebedor do dinhero.
  • GET /pagamentos/{payer}: Obtenção de informaƧƵes de um pagamento pelo pagador.

About

šŸ‘Øā€šŸ’» Projeto com o desafio de resolver o case back end do PicPay de forma abrangente e eficaz! šŸš€šŸ”

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle ć«ć‚ˆć£ć¦å¤‰ę›ć•ć‚ŒćŸćƒšćƒ¼ć‚ø (->ć‚ŖćƒŖć‚øćƒŠćƒ«) /