# MongoDB Plans Seed Script

## ⚠️ IMPORTANTE - LEIA ANTES DE EXECUTAR

Este script cria **2 planos** no MongoDB:
1. **Premium Mensal** - Cobrança recorrente mensal
2. **Premium Anual** - Cobrança anual com 20% de desconto

**VOCÊ PRECISA ATUALIZAR OS STRIPE PRICE IDs** antes de executar em produção!

## 📋 Pré-requisitos

### 1. Criar Produto no Stripe

1. Acesse [Stripe Dashboard](https://dashboard.stripe.com/products)
2. Crie um produto "QR Rapido Premium"
3. Anote o Product ID (ex: `prod_SnfQTxwE3i8r5L`)

### 2. Criar Price IDs no Stripe

Para **CADA PAÍS** (BR, PY, US), crie **2 preços** (mensal e anual):

#### Brasil (BRL):
- **Mensal**: R$ 9,90/mês
  - No Stripe: "Premium Mensal - Brasil"
  - Copie o Price ID: `price_xxxxx_monthly_br`
- **Anual**: R$ 95,04/ano (economia de 20%)
  - No Stripe: "Premium Anual - Brasil"
  - Copie o Price ID: `price_xxxxx_yearly_br`

#### Paraguai (PYG):
- **Mensal**: 35.000 Gs/mês
  - No Stripe: "Premium Mensal - Paraguay"
  - Copie o Price ID: `price_xxxxx_monthly_py`
- **Anual**: 336.000 Gs/ano (economia de 20%)
  - No Stripe: "Premium Anual - Paraguay"
  - Copie o Price ID: `price_xxxxx_yearly_py`

#### EUA/Internacional (USD):
- **Mensal**: $1,99/mês
  - No Stripe: "Premium Monthly - USA"
  - Copie o Price ID: `price_xxxxx_monthly_us`
- **Anual**: $19,10/ano (economia de 20%)
  - No Stripe: "Premium Yearly - USA"
  - Copie o Price ID: `price_xxxxx_yearly_us`

### 3. Atualizar appsettings.json

**Edite `appsettings.json`** (para desenvolvimento/teste):
```json
"Stripe": {
  "Plans": {
    "Monthly": {
      "BR": "price_xxxxx_monthly_br",  // ← Cole seu Price ID aqui
      "PY": "price_xxxxx_monthly_py",  // ← Cole seu Price ID aqui
      "US": "price_xxxxx_monthly_us"   // ← Cole seu Price ID aqui
    },
    "Yearly": {
      "BR": "price_xxxxx_yearly_br",   // ← Cole seu Price ID aqui
      "PY": "price_xxxxx_yearly_py",   // ← Cole seu Price ID aqui
      "US": "price_xxxxx_yearly_us"    // ← Cole seu Price ID aqui
    }
  }
}
```

**Edite `appsettings.Production.json`** (para produção) com os Price IDs **de produção** (mode live)

## 🚀 Como Executar

### Ambiente Local (Development)

```bash
# Se MongoDB estiver rodando localmente
mongosh "mongodb://localhost:27017/QrRapido" Scripts/seed-mongodb-plans.js
```

### Ambiente de Produção

```bash
# Conectar ao MongoDB de produção e executar o script
mongosh "mongodb://admin:c4rn31r0@129.146.116.218:27017,141.148.162.114:27017/QrRapido?replicaSet=rs0&authSource=admin" Scripts/seed-mongodb-plans.js
```

**OU via SSH no servidor:**

```bash
# Conectar ao servidor
ssh ubuntu@141.148.162.114

# Copiar o script para o servidor
# (você pode usar scp ou copiar o conteúdo manualmente)

# Executar o script
mongosh "mongodb://admin:c4rn31r0@localhost:27017/QrRapido?authSource=admin" seed-mongodb-plans.js
```

## ✅ Verificar se Funcionou

```bash
# Conectar ao MongoDB
mongosh "mongodb://admin:c4rn31r0@129.146.116.218:27017,141.148.162.114:27017/QrRapido?replicaSet=rs0&authSource=admin"

# Verificar os planos inseridos
use QrRapido
db.Plans.find().pretty()
```

Você deve ver um documento com:
- `name`: Nomes em pt-BR, es-PY, en
- `stripePriceId`: O Price ID padrão do Stripe
- `pricesByCountry`: Preços por país (BR, PY, US)
- `isActive`: true

## 🔧 Troubleshooting

### Erro: "Authentication failed"
- Verifique se a senha do MongoDB está correta no connection string
- Verifique se o usuário `admin` tem permissões no banco `QrRapido`

### Erro: "MongoServerError: E11000 duplicate key error"
- Já existe um plano com o mesmo ID
- Execute `db.Plans.deleteMany({})` primeiro para limpar (CUIDADO em produção!)

### Stripe retorna erro "No such price"
- Você não atualizou os `stripePriceId` no script
- Os Price IDs no script não existem no seu Stripe Dashboard
- Verifique se está usando as chaves corretas (test vs live mode)

## 📝 Próximos Passos

Após executar este script:

1. ✅ Verificar no MongoDB que o plano foi criado: `db.Plans.find()`
2. ✅ Testar o fluxo de assinatura em `/Pagamento/SelecaoPlano`
3. ✅ Confirmar que o Stripe recebe o checkout com o Price ID correto
4. ✅ Testar o webhook após pagamento bem-sucedido

## 🔗 Links Úteis

- [Stripe Dashboard - Products](https://dashboard.stripe.com/products)
- [Stripe Dashboard - Prices](https://dashboard.stripe.com/prices)
- [Stripe Webhooks](https://dashboard.stripe.com/webhooks)
