Implementação de uma API de pagamentos inspirada no desafio técnico da PicPay, com foco em arquitetura limpa, validações de negócio e integração com serviços externos.
Criar um sistema de transferências financeiras que respeite regras de negócio complexas: verificar saldo antes de debitar, chamar um serviço externo de autorização, e notificar o recebedor — tudo de forma confiável e bem estruturada.
API RESTful em TypeScript + Node.js + Express com separação clara entre controllers, services e repositórios (Prisma/PostgreSQL).
Decisões de design:
AuthorizationService que encapsula a chamada ao endpoint externo — facilita troca de provedor e melhora testabilidade.// Serviço de autorização desacoplado da lógica de transferência
class AuthorizationService {
async isAuthorized(): Promise<boolean> {
const response = await axios.get(AUTH_API_URL);
return response.data.message === "Autorizado";
}
}
O que faria diferente: Adicionar testes de integração para cobrir os fluxos de transferência completos e implementar idempotência nas transações para evitar duplicatas em caso de retry.