Este é o microsserviço da API Gateway desenvolvido em Go.
O Gateway de Pagamento é um sistema distribuído composto por:
- Frontend em Next.js
- API Gateway em Go (este repositório) com Apache Kafka para comunicação assíncrona
- Sistema de Antifraude em Nest.js
-
Frontend (Next.js)
- Interface do usuário para gerenciamento de contas e processamento de pagamentos
- Desenvolvido com Next.js para garantir performance e boa experiência do usuário
-
Gateway (Go)
- Sistema principal de processamento de pagamentos
- Gerencia contas, transações e coordena o fluxo de pagamentos
- Publica eventos de transação no Kafka para análise de fraude
-
Apache Kafka
- Responsável pela comunicação assíncrona entre API Gateway e Antifraude
- Garante confiabilidade na troca de mensagens entre os serviços
- Tópicos específicos para transações e resultados de análise
-
Antifraude (Nest.js)
- Consome eventos de transação do Kafka
- Realiza análise em tempo real para identificar possíveis fraudes
- Publica resultados da análise de volta no Kafka
- Frontend realiza requisições para a API Gateway via REST
- Gateway processa as requisições e publica eventos de transação no Kafka
- Serviço Antifraude consome os eventos e realiza análise em tempo real
- Resultados das análises são publicados de volta no Kafka
- Gateway consome os resultados e finaliza o processamento da transação
Para executar o projeto completo, os serviços devem ser iniciados na seguinte ordem:
- API Gateway (Go) - Deve ser executado primeiro pois configura a rede Docker
- Serviço Antifraude (Nest.js) - Depende do Kafka configurado pelo Gateway
- Frontend (Next.js) - Interface de usuário que se comunica com a API Gateway
Cada componente do sistema possui instruções específicas de instalação e configuração em seus repectivos repositórios:
- Serviço Antifraude: Consulte o README na pasta do projeto (clique aqui).
- Frontend: Consulte o README na pasta do projeto (clique aqui).
Importante: É fundamental seguir a ordem de execução mencionada acima, pois cada serviço depende dos anteriores para funcionar corretamente.
Visualize a arquitetura completa aqui
- Go 1.24 ou superior
- Docker
- Para Windows: WSL2 é necessário
- golang-migrate
- Instalação:
go install -tags 'postgres' github.com/golang-migrate/migrate/v4/cmd/migrate@latest
- Instalação:
- Extensão REST Client (opcional, para testes)
- Clone o repositório:
git clone https://github.com/patrick-cuppi/Gateway-Payment-Golang
- Configure as variáveis de ambiente:
cp .env.example .env
- Inicie o banco de dados:
docker compose up -d
- Execute as migrations:
migrate -path db/migrations -database "postgresql://postgres:postgres@localhost:5432/gateway?sslmode=disable" up
- Execute a aplicação:
go run cmd/app/main.go
POST /accounts
Content-Type: application/json
{
"name": "John Doe",
"email": "john@doe.com"
}
Retorna os dados da conta criada, incluindo o API Key para autenticação.
GET /accounts
X-API-Key: {api_key}
Retorna os dados da conta associada ao API Key.
POST /invoice
Content-Type: application/json
X-API-Key: {api_key}
{
"amount": 100.50,
"description": "Compra de produto",
"payment_type": "credit_card",
"card_number": "4111111111111111",
"cvv": "123",
"expiry_month": 12,
"expiry_year": 2025,
"cardholder_name": "John Doe"
}
Cria uma nova fatura e processa o pagamento. Faturas acima de R$ 10.000 ficam pendentes para análise manual.
GET /invoice/{id}
X-API-Key: {api_key}
Retorna os dados de uma fatura específica.
GET /invoice
X-API-Key: {api_key}
Lista todas as faturas da conta.
O projeto inclui um arquivo test.http
que pode ser usado com a extensão REST Client do VS Code. Este arquivo contém:
- Variáveis globais pré-configuradas
- Exemplos de todas as requisições
- Captura automática do API Key após criação da conta
Para usar:
- Instale a extensão REST Client no VS Code
- Abra o arquivo
test.http
- Clique em "Send Request" acima de cada requisição