Este projeto é uma API para criar pagamentos PIX, construída utilizando os princípios da Clean Architecture. A arquitetura separa claramente as responsabilidades em Domínio, Aplicação, Infraestrutura e Apresentação, permitindo uma manutenção e evolução facilitadas.
- Visão Geral
- Estrutura do Projeto
- Rotas da API
- Pré-requisitos
- Instalação
- Execução
- Docker
- Testes
- Contribuições
- Licença
A API cria pagamentos integrando com o MercadoPago e persiste os dados utilizando Prisma.
A separação de camadas é feita da seguinte forma:
- Domínio: Entidades e regras de negócio (ex.: Payment).
- Aplicação: Casos de uso, DTOs, interfaces e tratamento de erros.
- Infraestrutura: Implementação de repositórios (Prisma), integração com serviços externos (MercadoPago) e composição do servidor Fastify.
- Apresentação: Controllers e middlewares para a interface HTTP.
/api-payment
├── domain
│ └── payment
│ ├── entities
│ │ └── payment.entity.ts
│ ├── gateway
│ │ └── payment.gateway.ts
│ └── repositories
│ └── payment.repository.ts
├── application
│ ├── usecases
│ │ └── payment
│ │ ├── create-payment.usecase.ts
│ │ └── update-payment.usecase.ts
│ ├── errors
│ │ ├── service.error.ts
│ │ ├── notfound.error.ts
│ │ └── validation.error.ts
│ └── dtos
│ ├── mercadopago
│ │ ├── get-mercadopago.dto.ts
│ │ └── create-mercadopago.dto.ts
│ └── payment
│ └── create-payment.dto.ts
├── infrastructure
│ ├── http
│ │ └── server.ts
│ ├── database
│ │ └── prisma.ts
│ ├── gateway
│ │ └── payment.gateway.mercadopago.ts
│ └── repositories
│ └── payment.repository.prisma.ts
├── presentation
│ ├── controllers
│ │ ├── create-payment.controller.ts
│ │ └── update-payment.controller.ts
│ └── middlewares
│ └── error.middleware.ts
├── prisma
│ └── schema.prisma
└── .env
- URL:
/api/v1/payment - Método:
POST - Descrição: Cria um novo pagamento.
- Parâmetros:
- Body:
{ "price": 100.0, "owner": "ID da conta.", "email": "Email da conta.", "document": "CPF da conta." }
- Body:
- Resposta de Sucesso:
- Status:
201 Created - Body:
{ "id": "uuid", "qr_code": "pix copia e cola.", "qr_code_base64": "base64..." }
- Status:
-
URL:
/api/v1/payment/update -
Método:
POST -
Descrição: Atualiza um pagamento existente.
-
Parâmetros:
-
Body:
{ "action": "payment.update", "data": { "id": "uuid" } }
-
-
Resposta de Sucesso:
- Status:
200 OK - Body:
{ "success": true }
- Status:
- Docker e Docker Compose instalados
- Clone o repositório:
git clone <URL-do-repositório>- Configure o arquivo
.envcom as variáveis necessárias (credenciais do MercadoPago, URL do banco de dados, porta do servidor etc.).
MERCADOPAGO_ACCESS_TOKEN: Token de acesso do MercadoPago.DATABASE_URL: URL de conexão com o banco de dados.SERVER_PORT: Porta em que o servidor será executado.
Para iniciar a API utilizando Docker:
- Execute o Docker Compose para iniciar os serviços:
docker-compose upA API ficará disponível na porta configurada no arquivo .env.
Para executar a bateria de testes:
docker-compose exec app npm testContribuições são bem-vindas! Abra uma issue ou envie um pull request com melhorias.
Este projeto está licenciado sob a MIT License.