# Payment Gateways para Marketplace - 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

SaveInMed suporta 4 gateways de pagamento para operações de marketplace com split automático de comissões.

## Gateways Suportados

| Gateway | País | Split | Pix | Cartão | Boleto |
|---------|------|-------|-----|--------|--------|
| **Mercado Pago** | Brasil | ✅ | ✅ | ✅ | ✅ |
| **Stripe** | Global | ✅ | ❌ | ✅ | ❌ |
| **Asaas** | Brasil | ✅ | ✅ | ✅ | ✅ |
| **Mock** | Dev | ✅ | ✅ | ✅ | ✅ |

---

## Arquitetura

```
                     ┌─────────────────┐
                     │  PaymentGateway │ (interface)
                     │    Interface    │
                     └────────┬────────┘
          ┌──────────────┬────┴─────┬──────────────┐
          ▼              ▼          ▼              ▼
    ┌───────────┐  ┌───────────┐ ┌───────────┐ ┌───────────┐
    │ MercadoPago│  │   Stripe  │ │   Asaas   │ │    Mock   │
    └───────────┘  └───────────┘ └───────────┘ └───────────┘
```

---

## 1. Mercado Pago

### Credenciais Necessárias
```env
MERCADOPAGO_ACCESS_TOKEN=APP_USR-xxxx
MERCADOPAGO_PUBLIC_KEY=APP_USR-xxxx
MERCADOPAGO_CLIENT_ID=xxxx
MERCADOPAGO_CLIENT_SECRET=xxxx
MERCADOPAGO_WEBHOOK_SECRET=xxxx
```

### Split de Pagamento
- **Modelo**: Marketplace com Application Fee
- **Comissão**: Configurável (default 12%)
- **Liberação**: Após confirmação de entrega

### Fluxo
1. Comprador inicia checkout
2. Backend cria preferência com `marketplace_fee`
3. Mercado Pago processa pagamento
4. Webhook confirma status
5. Split automático: Seller (88%) / Marketplace (12%)

---

## 2. Stripe

### Credenciais Necessárias
```env
STRIPE_SECRET_KEY=sk_live_xxxx
STRIPE_PUBLISHABLE_KEY=pk_live_xxxx
STRIPE_WEBHOOK_SECRET=whsec_xxxx
STRIPE_CONNECT_CLIENT_ID=ca_xxxx
```

### Stripe Connect (Split)
- **Modelo**: Standard Connect ou Express
- **Comissão**: Application Fee
- **Onboarding**: OAuth ou Hosted Onboarding

### Fluxo Seller Onboarding
1. Seller inicia cadastro
2. Redirect para Stripe Connect
3. Seller completa KYC
4. Webhook `account.updated`
5. Seller habilitado para receber

---

## 3. Asaas

### Credenciais Necessárias
```env
ASAAS_API_KEY=aact_xxxx
ASAAS_WALLET_ID=xxxx
ASAAS_WEBHOOK_TOKEN=xxxx
ASAAS_ENVIRONMENT=production|sandbox
```

### Split de Pagamento
- **Modelo**: Subcontas ou Split por cobrança
- **Comissão**: Percentual fixo
- **Métodos**: Pix, Boleto, Cartão

### Vantagens
- Gateway 100% brasileiro
- Pix instantâneo
- Boleto com baixo custo
- Split nativo

---

## 4. Mock Gateway

### Uso
- Ambiente de desenvolvimento
- Testes automatizados
- CI/CD pipelines

### Comportamento
- Auto-aprovação de pagamentos
- Simulação de refunds
- Sem chamadas externas

---

## Rotas de Configuração

### Admin (SaaS Interno)

```
GET    /api/v1/admin/payment-gateways
       → Lista gateways configurados

PUT    /api/v1/admin/payment-gateways/:provider
       → Atualiza credenciais (encriptadas)

POST   /api/v1/admin/payment-gateways/:provider/test
       → Testa conectividade

DELETE /api/v1/admin/payment-gateways/:provider
       → Desativa gateway
```

### Seller (Configuração Individual)

```
GET    /api/v1/sellers/:id/payment-config
       → Configuração atual do seller

PUT    /api/v1/sellers/:id/payment-config
       → Atualiza conta (Stripe Connect ID, etc)

POST   /api/v1/sellers/:id/onboarding
       → Inicia onboarding no gateway
```

---

## Comparativo para Decisão

| Critério | Mercado Pago | Stripe | Asaas |
|----------|--------------|--------|-------|
| **Taxa Pix** | 0.99% | ❌ N/A | 0.49% |
| **Taxa Cartão** | 4.99% | 3.99% + 0.50 | 2.99% |
| **Taxa Boleto** | R$ 3,99 | ❌ N/A | R$ 1,99 |
| **Split** | Nativo | Connect | Nativo |
| **KYC Seller** | Simples | Detalhado | Simples |
| **Webhook** | ✅ | ✅ | ✅ |
| **Sandbox** | ✅ | ✅ | ✅ |
| **Suporte BR** | ✅ | Limitado | ✅ |

### Recomendação

| Cenário | Gateway Recomendado |
|---------|---------------------|
| **Foco em Pix** | Asaas |
| **Internacional** | Stripe |
| **Maior conversão BR** | Mercado Pago |
| **Menor taxa** | Asaas |
| **Melhor experiência** | Stripe |

---

## Variáveis de Ambiente

```env
# Gateway Ativo
ACTIVE_PAYMENT_GATEWAY=mercadopago|stripe|asaas|mock

# Taxa invisível do marketplace
BUYER_FEE_RATE=0.12

# Mercado Pago
MERCADOPAGO_ACCESS_TOKEN=
MERCADOPAGO_PUBLIC_KEY=
MERCADOPAGO_WEBHOOK_SECRET=

# Stripe
STRIPE_SECRET_KEY=
STRIPE_PUBLISHABLE_KEY=
STRIPE_WEBHOOK_SECRET=
STRIPE_CONNECT_CLIENT_ID=

# Asaas
ASAAS_API_KEY=
ASAAS_WALLET_ID=
ASAAS_WEBHOOK_TOKEN=
ASAAS_ENVIRONMENT=sandbox
```

---

## Webhook Endpoints

| Gateway | Endpoint |
|---------|----------|
| Mercado Pago | `POST /webhooks/mercadopago` |
| Stripe | `POST /webhooks/stripe` |
| Asaas | `POST /webhooks/asaas` |
