sofia-cloud / VERIFICATION_CHECKLIST.md
Gmagl
fix: correcciones críticas y refactorización de componentes
3eebcd0
|
Raw
History Blame Contribute Delete
4.67 kB
# ✅ Checklist de Verificación Pre-Producción
## 📋 Antes de Desplegar a Producción
Marca cada item conforme lo completess:
### 1️⃣ Base de Datos
- [ ] Ejecuté: `npx prisma migrate dev --name add_stripe_and_renewals`
- [ ] Verifiqué con: `npx prisma studio` (veo campos Stripe)
- [ ] BD migrada sin errores
### 2️⃣ Variables de Entorno
- [ ] `.env` tiene `STRIPE_SECRET_KEY` (sk_test_...)
- [ ] `.env` tiene `STRIPE_WEBHOOK_SECRET` (whsec_...)
- [ ] `.env` tiene `DATABASE_URL` válida
- [ ] Probé local: `npm run dev` inicia sin errors
### 3️⃣ Compilación
- [ ] Ejecuté: `npm run build`
- [ ] Resultado: "✓ Compiled successfully"
- [ ] Cero errores de TypeScript
### 4️⃣ Testing Local
- [ ] Instalé Stripe CLI: `stripe --version`
- [ ] Ejecuté: `stripe listen --forward-to localhost:3000/api/payments/webhook`
- [ ] Obtenía webhook signing secret (whsec_...)
- [ ] Inicié servidor: `npm run dev`
- [ ] Triggee evento: `stripe trigger checkout.session.completed`
- [ ] Vi en consola: "✓ [Webhook] Received checkout.session.completed"
### 5️⃣ Endpoints Funcionan
- [ ] `POST /api/influencers/subscription` - Crear suscripción ✅
- [ ] `GET /api/influencers/subscription?userId=X` - Listar ✅
- [ ] `POST /api/payments/checkout` - Generar session ✅
- [ ] `POST /api/payments/webhook` - Recibir webhooks ✅
- [ ] `POST /api/influencers/subscription/cancel` - Cancelar ✅
- [ ] `GET /api/influencers/report?influencerId=X` - Reportes ✅
### 6️⃣ Configuración Stripe Dashboard
- [ ] Fui a [dashboard.stripe.com/webhooks](https://dashboard.stripe.com/webhooks)
- [ ] Agregué endpoint: `https://<mi-dominio>/api/payments/webhook`
- [ ] Seleccioné eventos:
- [ ] checkout.session.completed
- [ ] customer.subscription.created
- [ ] customer.subscription.deleted
- [ ] customer.subscription.updated
- [ ] invoice.payment_succeeded
- [ ] invoice.payment_failed
- [ ] Copié Signing Secret → agregué a `.env.production`
### 7️⃣ Código Revisado
- [ ] `src/lib/stripe.ts` tiene todas las funciones helper ✅
- [ ] `src/app/api/payments/webhook/route.ts` valida firma Stripe ✅
- [ ] `src/app/api/influencers/subscription/route.ts` crea `nextRenewalDate` ✅
- [ ] `src/app/api/influencers/report/route.ts` agrupa por estatus ✅
- [ ] `prisma/schema.prisma` tiene campos nuevos ✅
### 8️⃣ Seguridad
- [ ] `STRIPE_SECRET_KEY` NO está en GitHub (en `.env`, no en `.env.example`)
- [ ] `STRIPE_WEBHOOK_SECRET` NO está en GitHub
- [ ] `.env` está en `.gitignore` ✅
- [ ] No hay keys hardcodeadas en `src/`
### 9️⃣ Documentación
- [ ] Leí: `MIGRATION_GUIDE.md` ✅
- [ ] Leí: `STRIPE_TESTING_GUIDE.md`
- [ ] Entiendo el flujo: Cliente → Checkout → Stripe → Webhook → BD
### 🔟 VPS/Producción
- [ ] URL de dominio lista: `https://<mi-dominio>`
- [ ] SSL/HTTPS configurado ✅
- [ ] PostgreSQL en producción (o SQLite respaldada) ✅
- [ ] `.env` en producción tiene:
- [ ] `STRIPE_SECRET_KEY=sk_live_XXX` (clave VIVA, no test)
- [ ] `STRIPE_WEBHOOK_SECRET=whsec_XXX` (del webhook en producción)
- [ ] `DATABASE_URL` apuntando a BD producción
- [ ] Ejecutaré en VPS: `npx prisma migrate deploy`
---
## 🚨 Errores Comunes
| Error | Causa | Solución |
|-------|-------|----------|
| "Invalid webhook signature" | `STRIPE_WEBHOOK_SECRET` incorrecto | Copia nuevamente de Stripe Dashboard |
| "Column 'stripeSubscriptionId' does not exist" | Migración no aplicada | `npx prisma migrate dev` |
| "Cannot find module 'stripe'" | No instaló Stripe | `npm install stripe` |
| "STRIPE_SECRET_KEY is undefined" | `.env` no tiene la key | Edita `.env` y agrega `STRIPE_SECRET_KEY` |
| Webhooks no se reciben | Endpoint no existe en Stripe Dashboard | Agrega endpoint en Webhooks settings |
---
## 📊 Flujo de Pago Esperado
```
1. Cliente: POST /api/payments/checkout
2. Server: Genera Stripe session
3. Cliente: Redirigen a checkout.stripe.com
4. Cliente: Completa pago en Stripe (tarjeta, etc)
5. Stripe: Envía webhook checkout.session.completed
6. Server: Webhook handler crea InfluencerSubscription + Earning
7. DB: Actualizado con suscripción activa
8. Cliente: Recibe email de Stripe + confirmación
```
---
## 📞 Soporte
Si algo falla:
1. **Revisa logs**: `npm run dev` (consola local)
2. **Stripe Dashboard**: [test/webhooks](https://dashboard.stripe.com/test/webhooks) → ver events
3. **Prisma Studio**: `npx prisma studio` → verificar datos en BD
4. **Este checklist**: Marca qué pasos ya hiciste
---
**¡Cuando todos los items estén marcados ✅, estás listo para producción!** 🚀