Skip to content

About

API de Pagamentos visando compreender como fucionam os sistemas bancários

Resources

Stars

0 stars

Watchers

1 watching

Forks

Latest commit

 

History

10 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Payment API

API REST em Spring Boot para cadastro de usuários e autenticação JWT. A implementação atual é uma base segura para fluxos financeiros; ela ainda não processa transferências, pagamentos ou saldos reais.

Segurança

  • JWT assinado com HMAC-SHA-256, emissor validado e validade de 15 minutos.
  • POST /user e POST /auth/login são públicos; todas as outras rotas exigem Bearer token.
  • Senhas usam BCrypt com custo 12 e nunca aparecem em respostas.
  • E-mail é normalizado, validado e protegido por constraint única no banco.
  • Flyway controla o schema; Hibernate somente valida o modelo.
  • Cadastro e login têm limite local de tentativas. Em produção, mantenha também rate limiting no gateway/ingress, pois o limite em memória não é compartilhado entre réplicas.

Endpoints

Método Rota Autenticação Descrição
POST /user Não Cria um usuário. Retorna 201 sem senha.
POST /auth/login Não Recebe e-mail e senha; retorna accessToken.
GET /user/me Bearer JWT Retorna o usuário autenticado.

Executar localmente

  1. Copie apidepagamentos/payment-system/.env.example para um arquivo .env fora do Git e substitua todos os valores de exemplo. Gere JWT_SECRET com openssl rand -base64 32.
  2. Inicie o MySQL de desenvolvimento com Docker Compose, se desejar:
cd apidepagamentos/payment-system
docker compose --env-file .env up -d
  1. Exporte as variáveis para o processo Java e execute o perfil de desenvolvimento:
cd apidepagamentos/payment-system
set -a; source .env; set +a
SPRING_PROFILES_ACTIVE=dev ./mvnw spring-boot:run

O banco deve aceitar conexões TLS conforme a URL DB_URL. Não use as configurações de desenvolvimento para produção: forneça DB_URL, DB_USERNAME, DB_PASSWORD e JWT_SECRET pelo gerenciador de segredos da plataforma.

Exemplos

curl -X POST http://localhost:8080/user \
  -H 'Content-Type: application/json' \
  -d '{"name":"Ana Silva","email":"ana@example.com","password":"very-secure-password"}'

curl -X POST http://localhost:8080/auth/login \
  -H 'Content-Type: application/json' \
  -d '{"email":"ana@example.com","password":"very-secure-password"}'

Use o accessToken devolvido no cabeçalho Authorization: Bearer <token> para chamar /user/me.

Testes

cd apidepagamentos/payment-system
./mvnw clean test

Os testes unitários cobrem o serviço de usuário e o JWT. Os testes de integração usam H2, Flyway e MockMvc para validar cadastro, login, autorização, token inválido e validações de entrada.

About

API de Pagamentos visando compreender como fucionam os sistemas bancários

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages