QrRapido/Scripts/README-MONGODB-SEED.md

4.4 KiB

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
  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):

"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)

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

Ambiente de Produção

# 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:

# 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

# 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