Loading repository data…
Loading repository data…
natanbs-dev / repository
Desafio Técnico: Backend para o PicPay Simplificado com Spring Framework. Solução robusta para cadastro, transferências e notificações, seguindo princípios SOLID e utilizando H2 para persistência.
O PicPay Simplificado é uma plataforma de pagamentos simplificada. Nela é possível depositar e realizar transferências de dinheiro entre usuários. Temos 2 tipos de usuários, os comuns e lojistas, ambos têm carteira com dinheiro e realizam transferências entre eles.
A seguir estão algumas regras de negócio que são importantes para o funcionamento do PicPay Simplificado:
Para ambos tipos de usuário, precisamos do firstName,lastName document,password e e-mail. O document e email devem ser
únicos no sistema. Sendo assim, seu sistema deve permitir apenas um cadastro com o mesmo CPF ou endereço de e-mail;
Usuários podem enviar dinheiro (efetuar transferência) para lojistas e entre usuários;
Lojistas só recebem transferências, não enviam dinheiro para ninguém;
Validar se o usuário tem saldo antes da transferência;
Antes de finalizar a transferência, deve-se consultar um serviço autorizador externo, use este mock
https://util.devi.tools/api/v2/authorize para simular o serviço
utilizando o verbo GET;
A operação de transferência deve ser uma transação (ou seja, revertida em qualquer caso de inconsistência) e o dinheiro deve voltar para a carteira do usuário que envia;
No recebimento de pagamento, o usuário ou lojista precisa receber notificação (envio de email, sms) enviada por um
serviço de terceiro e eventualmente este serviço pode estar indisponível/instável. Use este mock
https://util.devi.tools/api/v1/notify)) para simular o envio da notificação
utilizando o verbo POST;
Este serviço deve ser RESTFul.
Tente ser o mais aderente possível ao que foi pedido, mas não se preocupe se não conseguir atender a todos os requisitos. Durante a entrevista vamos conversar sobre o que você conseguiu fazer e o que não conseguiu.
Você pode implementar o que achar conveniente, porém vamos nos atentar somente ao fluxo de transferência entre dois usuários. A implementação deve seguir o contrato abaixo.
POST /transfer
Content-Type: application/json
{
"value": 100.0,
"payer": 4,
"payee": 15
}
Apresente sua solução utilizando o framework que você desejar, justificando a escolha. Atente-se a cumprir a maioria dos requisitos, pois você pode cumprir-los parcialmente e durante a avaliação vamos bater um papo a respeito do que faltou.
Habilidades básicas de criação de projetos backend:
Conhecimentos intermediários de construção de projetos manuteníveis:
Aptidões para criar e manter aplicações de alta qualidade: