# Backend API - Documentação Técnica ## Status (pronto x faltando) **Pronto** - Conteúdo descrito neste documento. **Faltando** - Confirmar no código o estado real das funcionalidades e atualizar esta seção conforme necessário. --- ## Visão Geral API de alta performance em Go para o marketplace SaveInMed. Implementa Clean Architecture com foco em operações críticas de negócio. ## Arquitetura ``` cmd/api/ → Ponto de entrada internal/ ├── config/ → Configurações e env vars ├── domain/ → Entidades e regras de negócio ├── http/ │ ├── handler/ → HTTP handlers (controllers) │ └── middleware/→ Auth JWT, CORS, logging ├── payments/ → Gateways: Stripe, MercadoPago, Mock ├── repository/ → Camada de persistência (PostgreSQL) ├── server/ → Setup do servidor HTTP └── usecase/ → Casos de uso (serviços) ``` ## Taxa Invisível do Marketplace O sistema aplica uma taxa **invisível ao comprador** (6%) e uma comissão do vendedor (6%). O comprador vê apenas o valor final, sem linha separada de taxa: ``` Vendedor cadastra: R$ 10,00 Comprador vê: R$ 10,60 (+6% buyer fee invisível) Marketplace recebe: R$ 1,20 (6% buyer + 6% seller) Vendedor recebe: R$ 9,40 ``` **Configuração**: `BUYER_FEE_RATE=0.06` e `SELLER_FEE_RATE=0.06` ## Gateways de Pagamento | Gateway | Arquivo | Descrição | |---------|---------|-----------| | **Stripe** | `stripe.go` | Cartões internacionais | | **MercadoPago** | `mercadopago.go` | Pix, boleto, cartões | | **Mock** | `mock.go` | Testes (auto-aprova) | ## Endpoints Principais ### Autenticação - `POST /api/v1/auth/register` - Cadastro - `POST /api/v1/auth/login` - Login - `POST /api/v1/auth/refresh-token` - Renovar token ### Produtos - `GET /api/v1/products` - Listar (preço final com taxa invisível de 6% para compradores) - `GET /api/v1/products/search` - Busca avançada - `POST /api/v1/products` - Cadastrar ### Pedidos - `GET /api/v1/orders` - Listar - `POST /api/v1/orders` - Criar ## Variáveis de Ambiente ```bash DATABASE_URL=postgres://... JWT_SECRET=your-secret BUYER_FEE_RATE=0.06 SELLER_FEE_RATE=0.06 MARKETPLACE_COMMISSION=2.5 BACKEND_PORT=8080 ``` ## Executar ```bash cd backend go run ./cmd/api ``` ## Testes ```bash go test ./... -cover ``` > Para matriz completa (com/sem banco e Playwright), veja: [docs/TESTES.md](./TESTES.md)