Skip to content

rhuambarbosa/withdraw-server

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Processadora

O sistema simula o saque de um cartão na visão do emissor. Realiza validações para autorizar ou não da transação. Possui uma API que disponibiliza algumas funções, verificação de saldo do cartão, cartões disponíveis entre outras descritas abaixo.

O cartão esta cadastrado em um banco psi, e o sistema não faz acesso direto a base para verificar o saldo do cartão. Então é necessario descobrir a conta associada ao cartão para realizar a transação.

O sistema esta disponibilizado em uma porta (socket TCP) recebe e retorna o json com status da transação pela mesma.

O sistema permite conexão telnet através da porta 9876 (cadastrada) e multiplos clientes esta definido um limite de 50 clientes concorrentes.

Features

Simular uma resposta a um solicitação de saque.

  • Receber um Json com a solicitação e responder um json com a resposta.
  • API para consulta de saldo

Tecnologias/Frameworks usados

Construido com:

Iniciando

Clone o repositório

git clone https://github.com/rhuambarbosa/withdraw-server.git

Subindo o Rabbitmq

docker run -d --restart=always --name rabbitmq -p 5672:5762 -p 5671:5671 -p 15672:15672 rabbitmq:3-management

Subindo o banco de dados

docker run -d --restart=always --name processadoradb -e POSTGRES_PASSWORD=processadoradb%#r2 -p 5433:5432 postgres:9.3

Building

Local

mvn clean package

Docker

mvn clean package docker:build --batch-mode release:update-versions 

Gera uma imagem docker rhuambarbosa/withdraw-server:[tag]

Deploying

Local: Dentro da pasta raiz do projeto onde exite o maven

mvn spring-boot:run -Dspring.profiles.active=prod

Docker:

docker run -d --restart=always -e "SPRING_PROFILES_ACTIVE=prod" --name withdraw-server -p 9876:9876 -p 8080:8080 rhuambarbosa/withdraw-server:<tag>

Tests

Subir o sistema de modo local ou em docker

prompt(digite):telnet localhost 9876
Informe o json com a solicitação da transação de saque.
ex: 
{"action": "withdraw","cardnumber":"1234567890123456","amount": "1,10"}

Será experado um json de resposta:
ex:
{

"action": "withdraw",

"code":"00",

"authorization_code": "123456"

}  

Funcionalidades API

| Verbo| Funcionalidade                              | Descrição                                                                
| -----|---------------------------------------------|---------------------------------------
| Get  | http://localhost:8080/balances/{cardnumber} | Extrato com as 10 ultimas transações 
| Get  | localhost:8080/psi/accounts                 | Retorna a conta de um cartão, recebe como parametro o cardNumber e se esta ativo
| Get  | localhost:8080/psi/creditCard               | Retorna o Id dos cartões, recebe como parametro o page e o size da paigna desejada
| Get  | http://localhost:8080/actuator/health       | Verifica se a aplicação esta disponivel

Na pasta resources/static existe o arquivo a ser importado no postman com cada uma das funcionalidades.

Cartões iniciais

| Cartão           | Saldo       |
| -----------------|-------------|
| 1234567890123456 | R$ 1.000,00 |
| 1234567774523456 | R$ 1.000,00 |
| 1234567899865034 | R$ 2.000,00 |
| 7450317890123456 | R$ 500,00   |

Os demais cartões podem ser consultadas através de funcionalidades da API

Observações

Algumas maquina não reconhece o rabbit no localhost então é necessário informar o ip do rabbit no properties Verificar o ip do container

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' rabbitmq

About

Simulação de resposta a uma requisição de saque

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages