# ⚡ Guia Rápido - Correção de Pagamento de Planos

## 🎯 O Que Foi Corrigido?

**Problema**: Sistema removia plano free ANTES de ativar plano pago, deixando usuário sem plano.

**Solução**: Agora o sistema ativa o plano pago PRIMEIRO, e só depois cancela o plano free.

## 📦 Arquivos Alterados

- ✅ `backend/app/Http/Controllers/Api/WebhookController.php`
- ✅ `backend/app/Http/Controllers/Api/PaymentController.php`

## 🚀 Deploy (Servidor de Produção)

### Opção 1: Deploy Manual

```bash
# 1. Conectar ao servidor
ssh usuario@seu-servidor.com

# 2. Ir para o diretório do projeto
cd /caminho/do/projeto

# 3. Fazer backup
cp backend/app/Http/Controllers/Api/WebhookController.php backend/app/Http/Controllers/Api/WebhookController.php.backup
cp backend/app/Http/Controllers/Api/PaymentController.php backend/app/Http/Controllers/Api/PaymentController.php.backup

# 4. Atualizar código (se usar Git)
git pull origin main

# 5. Limpar cache
php artisan config:clear
php artisan cache:clear
php artisan route:clear

# 6. Reiniciar serviços
sudo systemctl restart php-fpm
sudo systemctl restart nginx
```

### Opção 2: Deploy Automático

Se você tem script de deploy automatizado, apenas execute:

```bash
./deploy.sh
```

## 🧪 Teste Rápido (Após Deploy)

### 1. Teste Automatizado

```bash
# No diretório do projeto
cd d:/Trae/GestorStream
php test_payment_flow.php
```

**Resultado esperado:**
```
✓✓✓ TODOS OS TESTES PASSARAM! ✓✓✓
```

### 2. Teste Manual

1. **Criar usuário novo** (ou usar existente com plano free)
2. **Comprar um plano pago** via interface
3. **Pagar o PIX**
4. **Verificar resultado:**
   - ✅ Plano pago deve estar ativo
   - ✅ Plano free deve estar cancelado
   - ✅ Usuário NÃO deve ficar sem plano

### 3. Verificar Logs

```bash
# Em tempo real
tail -f backend/storage/logs/laravel.log | grep "Subscription"

# Últimas 50 linhas
tail -n 50 backend/storage/logs/laravel.log | grep "Subscription"
```

**Logs esperados:**
```
Subscription created and activated from webhook
Previous subscriptions cancelled after new plan activated
```

## 🔍 Verificar no Banco de Dados

```sql
-- Ver subscription ativa do usuário
SELECT 
    u.email,
    s.id as subscription_id,
    p.name as plan_name,
    s.status,
    s.active,
    s.starts_at,
    s.expires_at
FROM users u
JOIN subscriptions s ON s.user_id = u.id
JOIN plans p ON p.id = s.plan_id
WHERE u.email = 'email@usuario.com'
ORDER BY s.created_at DESC;
```

**Resultado esperado:**
- ✅ 1 subscription com status='active' e active=1 (plano pago)
- ✅ N subscriptions com status='cancelled' (planos antigos)

## ⚠️ Troubleshooting

### Problema: "Webhook não está sendo recebido"

```bash
# Verificar se o webhook está configurado no OpenPIX
# URL deve ser: https://seu-dominio.com/api/webhooks/openpix

# Testar webhook manualmente
curl -X POST https://seu-dominio.com/api/webhooks/openpix \
  -H "Content-Type: application/json" \
  -d '{"event":"OPENPIX:CHARGE_COMPLETED","charge":{"correlationID":"TEST123","status":"COMPLETED"}}'
```

### Problema: "Usuário ainda fica sem plano"

1. Verificar logs: `tail -f backend/storage/logs/laravel.log`
2. Procurar por erros com "Subscription" ou "Payment"
3. Verificar se transação DB está habilitada
4. Verificar se o código foi atualizado corretamente

### Problema: "Erro de rollback no banco"

```bash
# Limpar cache do banco
php artisan cache:clear
php artisan config:clear

# Verificar conexão com banco
php artisan db:show
```

## 🔄 Rollback (se necessário)

```bash
# Restaurar backup
cp backend/app/Http/Controllers/Api/WebhookController.php.backup backend/app/Http/Controllers/Api/WebhookController.php
cp backend/app/Http/Controllers/Api/PaymentController.php.backup backend/app/Http/Controllers/Api/PaymentController.php

# Limpar cache
php artisan config:clear
php artisan cache:clear
php artisan route:clear

# Reiniciar serviços
sudo systemctl restart php-fpm
sudo systemctl restart nginx
```

## 📊 Monitoramento (Primeiras 24h)

### Comandos úteis:

```bash
# Ver logs em tempo real
tail -f backend/storage/logs/laravel.log

# Ver apenas erros
tail -f backend/storage/logs/laravel.log | grep "ERROR"

# Ver processamento de pagamentos
tail -f backend/storage/logs/laravel.log | grep "Payment\|Subscription"

# Contar pagamentos aprovados hoje
php artisan tinker
>>> \App\Models\Payment::whereDate('paid_at', today())->where('status', 'approved')->count();
```

## ✅ Checklist Completo

### Antes do Deploy
- [ ] Código revisado
- [ ] Backup realizado
- [ ] Teste automatizado executado localmente

### Durante o Deploy
- [ ] Deploy realizado
- [ ] Cache limpo
- [ ] Serviços reiniciados

### Após o Deploy
- [ ] Teste automatizado executado
- [ ] Teste manual realizado
- [ ] Logs verificados (sem erros)
- [ ] Banco de dados verificado
- [ ] Webhook testado

### Monitoramento (24h)
- [ ] Logs monitorados
- [ ] Pagamentos verificados
- [ ] Subscriptions verificadas
- [ ] Nenhum usuário sem plano

## 📞 Em Caso de Dúvidas

1. Ler documentação completa: `CORRECAO_PAGAMENTO_PLANOS.md`
2. Ler resumo executivo: `RESUMO_CORRECAO_PAGAMENTO.md`
3. Executar teste: `php test_payment_flow.php`
4. Verificar logs: `tail -f backend/storage/logs/laravel.log`

## 🎉 Sucesso!

Se todos os testes passaram e os logs estão limpos, a correção foi aplicada com sucesso!

**O sistema agora garante que:**
- ✅ Plano pago é ativado ANTES de cancelar o free
- ✅ Usuário NUNCA fica sem plano
- ✅ Transações DB garantem atomicidade
- ✅ Logs detalhados facilitam debug
- ✅ Rollback automático em caso de erro

---

**Data**: 2026-01-12  
**Status**: ✅ Pronto para Deploy
