Spaces:
Build error
Build error
File size: 6,932 Bytes
3eebcd0 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 | # 🗂️ Guía de Migración de Base de Datos - Stripe Integration
## 📋 Descripción General
Este proyecto ha sido actualizado con:
- **Integración Stripe**: Pagos, checkout, webhooks
- **Renovación Automática**: Suscripciones recurrentes mensuales
- **Contabilidad Exacta**: Modelo `Earning` para cada pago
- **Cancelación Cliente**: Cancelar suscripciones cuando quieran
Para esto, necesitas ejecutar una **migración de BD** que agregue campos nuevos a las tablas.
---
## ⚙️ Pre-requisitos
✅ Tienes PostgreSQL o SQLite instalado y funcionando
✅ Tu `.env` tiene `DATABASE_URL` configurado
✅ Ejecutaste `npm install stripe` (ya hecho)
✅ Node.js 18+ instalado
---
## 🚀 Paso 1: Ejecutar la Migración
Abre la terminal en la raíz del proyecto:
```bash
cd c:\Users\gemag\sofia-cloud
npx prisma migrate dev --name add_stripe_and_renewals
```
**¿Qué pasa?**
1. Prisma detecta cambios en `prisma/schema.prisma` (campos Stripe nuevos)
2. Genera un archivo de migración en `prisma/migrations/`
3. **Aplica automáticamente** la migración a tu BD local
4. Regenera el cliente Prisma
**Salida esperada:**
```
✓ Created new migration: ./prisma/migrations/202501xx_add_stripe_and_renewals/migration.sql
✓ Database has been updated
✓ Generated Prisma Client
```
**Si hay error:**
```bash
# Revertir si algo sale mal:
npx prisma migrate resolve --rolled-back <nombre-migracion>
```
---
## ✅ Paso 2: Verificar la Migración
Confirma que los campos nuevos existen en la BD:
```bash
# Ver estado de migraciones
npx prisma migrate status
# Ver el contenido de la BD
npx prisma studio
```
En Prisma Studio deberías ver en la tabla `InfluencerSubscription`:
- ✅ `stripeSubscriptionId` (string, opcional)
- ✅ `stripeCustomerId` (string, opcional)
- ✅ `nextRenewalDate` (DateTime)
- ✅ `autoRenew` (boolean, default: true)
Y en tabla `Earning`:
- ✅ `subscriptionId` (foreign key)
- ✅ `stripePaymentIntentId` (string, opcional)
- ✅ `isRecurring` (boolean, default: false)
- ✅ `paymentStatus` (enum: pending, completed, failed)
- ✅ `paymentMethod` (string, opcional)
---
## 🔑 Paso 3: Configurar Variables de Entorno
Edita tu `.env` (o `.env.local`) y agrega:
```env
# ====== STRIPE KEYS ======
# Obtén estos de: https://dashboard.stripe.com/apikeys
STRIPE_SECRET_KEY="sk_test_XXXXX..." # Para testing
# En producción: sk_live_XXXXX...
STRIPE_WEBHOOK_SECRET="whsec_XXXXX..." # De https://dashboard.stripe.com/webhooks
```
### 📌 Cómo obtener las keys:
1. **STRIPE_SECRET_KEY**
- Ve a [dashboard.stripe.com/apikeys](https://dashboard.stripe.com/apikeys)
- Mira en la sección "Secret Key"
- Copia la que empiece con `sk_test_` (para desarrollo)
2. **STRIPE_WEBHOOK_SECRET**
- Ve a [dashboard.stripe.com/webhooks](https://dashboard.stripe.com/webhooks)
- Haz click en "+ Add endpoint"
- **Endpoint URL**: `http://localhost:3000/api/payments/webhook` (local)
- **Eventos**: Selecciona estos:
- `checkout.session.completed`
- `customer.subscription.created`
- `customer.subscription.deleted`
- `customer.subscription.updated`
- `invoice.payment_succeeded`
- `invoice.payment_failed`
- Click "Add endpoint"
- Verás el "Signing secret" (empieza con `whsec_`)
- Cópialo y agrégalo a `.env`
---
## 🧪 Paso 4: Verificar la Instalación (Local)
Inicia el servidor:
```bash
npm run dev
```
Prueba que los endpoints nuevos funcionan:
```bash
# 1. Ver si puedes llegar al checkout
curl http://localhost:3000/api/payments/checkout
# 2. Ver si el webhook está listo
curl http://localhost:3000/api/payments/webhook
# Resultado esperado: 405 Method Not Allowed (porque es POST, no GET)
# ✅ Eso significa que el endpoint existe
```
---
## 📤 Paso 5: Para Producción (VPS/Hosting)
Cuando subes a un VPS o servidor:
```bash
# 1. Subir código (git push)
git add .
git commit -m "Add Stripe integration and auto-renewal"
git push origin main
# 2. En el servidor VPS:
cd /ruta/del/proyecto
npm install stripe # Instala Stripe
npx prisma migrate deploy # Aplica migraciones sin preguntar
# 3. Actualizar .env en producción:
# - STRIPE_SECRET_KEY: sk_live_XXXXX... (clave VIVA, no test)
# - STRIPE_WEBHOOK_SECRET: del webhook en producción
# - DATABASE_URL: URL de BD producción
npm run build
npm start
```
---
## 📊 Campos Nuevos en la BD
### InfluencerSubscription
| Campo | Tipo | Descripción |
|-------|------|------------|
| `stripeSubscriptionId` | string | ID de suscripción en Stripe (ej: sub_12345) |
| `stripeCustomerId` | string | ID de cliente en Stripe (ej: cus_XXXXX) |
| `nextRenewalDate` | DateTime | Fecha próxima renovación (calculada cada pago) |
| `autoRenew` | boolean | Si es true, se renueva automáticamente |
### Earning
| Campo | Tipo | Descripción |
|-------|------|------------|
| `subscriptionId` | string | FK a InfluencerSubscription |
| `stripePaymentIntentId` | string | ID de pago en Stripe |
| `isRecurring` | boolean | true si viene de renovación automática |
| `paymentStatus` | enum | "pending" \| "completed" \| "failed" |
| `paymentMethod` | string | "stripe" \| "manual" \| etc |
---
## 🔍 Verificación Post-Migración
Ejecuta esto para confirmar todo está bien:
```bash
# 1. Ver migrations aplicadas
npx prisma migrate status
# 2. Ver esquema generado
npx prisma generate
# 3. Compilar proyecto
npm run build
# Si los 3 pasos pasan sin ERROR ✅, estás listo
```
---
## ⚠️ Si Algo Sale Mal
### Error: "Column does not exist"
```bash
# La migración se aplicó solo parcialmente
# Revertir y intentar de novo:
npx prisma migrate resolve --rolled-back add_stripe_and_renewals
npx prisma migrate dev --name add_stripe_and_renewals
```
### Error: "STRIPE_SECRET_KEY not set"
```bash
# Olvidaste agregar la key a .env
# Agrega: STRIPE_SECRET_KEY="sk_test_XXXXX"
# Reinicia el servidor: npm run dev
```
### Error: "Cannot find module 'stripe'"
```bash
# Stripe no está instalado
npm install stripe
npx prisma generate
npm run dev
```
---
## 📞 Resumen de Pasos (Quick Reference)
| # | Paso | Comando | Resultado |
|---|------|---------|-----------|
| 1 | Migrar BD | `npx prisma migrate dev --name add_stripe_and_renewals` | ✅ Campos nuevos en tablas |
| 2 | Verificar | `npx prisma studio` | ✅ Ver nuevos campos |
| 3 | Config env | Editar `.env` | ✅ Keys Stripe agregadas |
| 4 | Webhook Stripe | Agregar endpoint en dashboard | ✅ Webhooks conectados |
| 5 | Compilar | `npm run build` | ✅ Sin errores |
| 6 | Testear | `npm run dev` + curl | ✅ Endpoints funcionan |
---
## ✨ ¡Listo! Ahora puedes:
✅ Crear suscripciones en Stripe
✅ Procesar pagos automáticos mensuales
✅ Rastrear earnings por pago exacto
✅ Cancelar suscripciones cuando el cliente quiera
✅ Ver reportes con contabilidad exacta
**¿Preguntas? Ejecuta los pasos en orden y reporta cualquier error.**
|