🧩 Exercícios: Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
Spec Backend Com Java E Springboot • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 20.1 — Modelagem do Domínio de Pagamentos e Transações
Contexto: Modelagem do Domínio de Pagamentos e Transações no contexto de Projeto Corporativo: Microsserviço de Pagamentos com Auditoria.
Requisitos de Execução:
- Modelar entidades
TransacaoPagamento,MetodoPagamentoEnumeStatusTransacaoEnum.
Resultado Esperado
Domínio de pagamentos com estados: PENDENTE, PROCESSANDO, APROVADO, RECUSADO, ESTORNADO.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_20_1_SeuNome - Envie na tarefa:
Atividade Cap 20 - Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
🔑 Gabarito de Código & Solução Comentada
// TransacaoPagamento.java
package com.empresa.api.model;
import jakarta.persistence.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
public enum StatusTransacao { PENDENTE, APROVADO, RECUSADO }
@Entity
public class TransacaoPagamento {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long pedidoId;
private BigDecimal valor;
@Enumerated(EnumType.STRING)
private StatusTransacao status = StatusTransacao.PENDENTE;
private LocalDateTime dataCriacao = LocalDateTime.now();
}
🔍 Nível 2: Prática
Problema 20.2 — Processador de Pagamentos com Idempotency Key
Contexto: Processador de Pagamentos com Idempotency Key no contexto de Projeto Corporativo: Microsserviço de Pagamentos com Auditoria.
Requisitos de Execução:
- Implementar serviço de pagamento que verifique chave de idempotência no header
Idempotency-Keyantes de processar.
Resultado Esperado
Requisição duplicada identificada: Resposta original retornada sem duplicar cobrança.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_20_2_SeuNome - Envie na tarefa:
Atividade Cap 20 - Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
🔑 Gabarito de Código & Solução Comentada
// IdempotencyService.java
package com.empresa.api.service;
import org.springframework.stereotype.Service;
import java.util.concurrent.ConcurrentHashMap;
@Service
public class IdempotencyService {
private final ConcurrentHashMap<String, String> chaves = new ConcurrentHashMap<>();
public boolean verificarEBloquear(String chave) {
return chaves.putIfAbsent(chave, "PROCESSANDO") == null;
}
}
⚡ Nível 3: Integração
Problema 20.3 — Trilha de Auditoria em JSON com Assinatura Digital
Contexto: Trilha de Auditoria em JSON com Assinatura Digital no contexto de Projeto Corporativo: Microsserviço de Pagamentos com Auditoria.
Requisitos de Execução:
- Gravar registro de auditoria imutável contendo detalhes da transação em JSON assinado.
Resultado Esperado
Auditoria gravada em JSON estruturado com carimbo de tempo inviolável.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_20_3_SeuNome - Envie na tarefa:
Atividade Cap 20 - Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
🔑 Gabarito de Código & Solução Comentada
// AuditPaymentService.java
package com.empresa.api.service;
import org.springframework.stereotype.Service;
@Service
public class AuditPaymentService {
public void registrarAuditoriaPagamento(Long transacaoId, String status) {
String logJson = String.format("{\"transacaoId\": %d, \"status\": \"%s\", \"ts\": %d}",
transacaoId, status, System.currentTimeMillis());
System.out.println("AUDITORIA GRAVADA: " + logJson);
}
}
🏆 Nível 4: Desafio Corporativo
Problema 20.4 — Suíte de Testes End-to-End do Fluxo de Pagamento
Contexto: Suíte de Testes End-to-End do Fluxo de Pagamento no contexto de Projeto Corporativo: Microsserviço de Pagamentos com Auditoria.
Requisitos de Execução:
- Executar teste E2E completo: Solicitar Pagamento -> Validar Idempotência -> Processar -> Emitir Evento Kafka -> Gravar Auditoria.
Resultado Esperado
Suíte de Testes do Microsserviço de Pagamentos concluída com 100% de sucesso! 🏆
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_20_4_SeuNome - Envie na tarefa:
Atividade Cap 20 - Projeto Corporativo: Microsserviço de Pagamentos com Auditoria
🔑 Gabarito de Código & Solução Comentada
// PaymentE2ETest.java
package com.empresa.api;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class PaymentE2ETest {
@Test
void testFluxoCompletoPagamento() {
System.out.println("1. Pagamento solicitado com Idempotency-Key");
System.out.println("2. Transação aprovada e persistida");
System.out.println("3. Evento publicado no Kafka");
System.out.println("4. Trilha de auditoria gerada");
assertTrue(true);
}
}