224 lines
5.3 KiB
Markdown
224 lines
5.3 KiB
Markdown
# 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` |
|