Pasarelas de Pago (Stripe y PayPal)
FeedbackPulse SaaS admite Stripe y PayPal para la facturación por suscripción. Puedes habilitar uno o ambos.
💰 Cómo Funciona la Facturación
- Creas planes de suscripción en
Admin → Planes(ej., Starter $9.99/mes, Pro $29.99/mes) - Cada plan tiene un ID de Precio de Stripe y/o ID de Plan de PayPal
- Cuando un inquilino se suscribe, es redirigido a Stripe Checkout o PayPal
- Después del pago, FeedbackPulse activa su suscripción
- Los webhooks mantienen todo sincronizado (renovaciones, cancelaciones, fallos)
💳 Configuración de Stripe
Paso 1: Crear una Cuenta de Stripe
- Regístrate en stripe.com
- Completa la verificación de identidad
- Obtén tus claves API desde Developers → API Keys
Paso 2: Obtener tus Claves API
| Clave | Dónde Encontrarla | Variable .env |
|---|---|---|
| Clave Publicable | Panel de Control → Developers → API Keys | STRIPE_PUBLISHABLE_KEY |
| Clave Secreta | Panel de Control → Developers → API Keys | STRIPE_SECRET_KEY |
STRIPE_PUBLISHABLE_KEY=pk_live_xxxxxxxxxxxxxxxx
STRIPE_SECRET_KEY=sk_live_xxxxxxxxxxxxxxxx
🧪 Pruebas: Usa claves
pk_test_ysk_test_para el modo sandbox.
Paso 3: Crear Productos y Precios en Stripe
Para cada plan de suscripción, crea un precio recurrente en Stripe:
- Ve a Products → Add Product
- Nombre: "FeedbackPulse Starter" (o el nombre de tu plan)
- Agrega un precio recurrente: $9.99 / mes
- Opcionalmente agrega un precio anual: $99.99 / año
- Copia el Price ID (comienza con
price_)
Paso 4: Vincular Precios a los Planes
En FeedbackPulse, ve a Admin → Planes → Editar:
| Campo del Plan | Valor de Stripe |
|---|---|
| ID de Precio Mensual de Stripe | price_xxxxxxxxx (ID de precio mensual) |
| ID de Precio Anual de Stripe | price_xxxxxxxxx (ID de precio anual) |
Paso 5: Configurar Webhooks de Stripe
Esto es crítico — los webhooks mantienen las suscripciones sincronizadas.
- Ve a Stripe Dashboard → Developers → Webhooks
- Haz clic en Add endpoint
- URL del Endpoint:
https://yourdomain.com/webhooks/stripe - Eventos a escuchar:
checkout.session.completedcustomer.subscription.createdcustomer.subscription.updatedcustomer.subscription.deletedinvoice.payment_failed
- Copia el Signing Secret (comienza con
whsec_)
STRIPE_WEBHOOK_SECRET=whsec_xxxxxxxxxxxxxxxx
Paso 6: Habilitar en el Panel de Administración
Ve a Admin → Configuración → Pagos:
- Activa Stripe
- Pega tus claves publicable y secreta
- Guarda
💰 Configuración de PayPal
Paso 1: Crear una Cuenta de PayPal Business
- Regístrate en paypal.com/business
- Ve a developer.paypal.com
Paso 2: Crear una App de API REST
- Ve a Dashboard → Apps & Credentials
- Haz clic en Create App
- Nombre: "FeedbackPulse"
- Copia el Client ID y el Secret
PAYPAL_CLIENT_ID=your_client_id
PAYPAL_CLIENT_SECRET=your_client_secret
PAYPAL_MODE=live
🧪 Pruebas: Usa
PAYPAL_MODE=sandboxy credenciales de sandbox.
Paso 3: Crear Planes de Suscripción en PayPal
- Ve a PayPal Developer Dashboard → Subscriptions → Plans
- Crea primero un producto, luego crea los planes para él
- Copia cada Plan ID (comienza con
P-)
Paso 4: Vincular Planes en FeedbackPulse
En Admin → Planes → Editar:
| Campo del Plan | Valor de PayPal |
|---|---|
| ID de Plan Mensual de PayPal | P-xxxxxxxxx (plan mensual) |
| ID de Plan Anual de PayPal | P-xxxxxxxxx (plan anual) |
Paso 5: Configurar Webhooks de PayPal
- En PayPal Developer Dashboard → Webhooks
- Agrega URL del webhook:
https://yourdomain.com/webhooks/paypal - Selecciona eventos:
BILLING.SUBSCRIPTION.CREATEDBILLING.SUBSCRIPTION.ACTIVATEDBILLING.SUBSCRIPTION.UPDATEDBILLING.SUBSCRIPTION.CANCELLEDBILLING.SUBSCRIPTION.SUSPENDEDPAYMENT.SALE.COMPLETED
- Copia el Webhook ID
PAYPAL_WEBHOOK_ID=your_webhook_id
Paso 6: Habilitar en el Panel de Administración
Ve a Admin → Configuración → Pagos:
- Activa PayPal
- Pega tu Client ID y Secret
- Guarda
🧪 Prueba de Pagos
Modo de Prueba de Stripe
Usa números de tarjeta de prueba:
- Éxito:
4242 4242 4242 4242 - Rechazo:
4000 0000 0000 0002 - 3D Secure:
4000 0025 0000 3155
Vencimiento: cualquier fecha futura. CVC: cualquier 3 dígitos.
Sandbox de PayPal
- Ve a developer.paypal.com → Sandbox → Accounts
- Usa la cuenta de comprador sandbox generada para probar pagos
Soporte Multi-Moneda
Los planes pueden tener diferentes monedas (ej., USD, EUR, GBP). Configura la lista de monedas admitidas en Admin > Configuración > Pagos bajo el campo Monedas Admitidas.
- Stripe: Las sesiones de checkout pasan automáticamente la moneda del plan, por lo que los clientes son cobrados en la moneda correcta.
- PayPal: Las solicitudes de suscripción incluyen metadatos de moneda que coinciden con la moneda configurada del plan.
- La moneda se almacena en cada factura para un registro preciso.
Para más detalles sobre la configuración de monedas admitidas, consulta Configuración de la Plataforma.
🔒 Notas de Seguridad
- Las claves API se almacenan cifradas en la tabla
platform_settings - Las firmas de webhook se verifican (HMAC de Stripe, validación de firma de PayPal)
- Los eventos de pago se registran en la tabla
payment_events(Admin → Pagos) - La deduplicación de eventos previene el doble procesamiento de webhooks