El ciclo de vida de una suscripción
- El usuario elige un plan en la página de precios (los planes vienen de las tablas
productsyprices, sincronizadas desde Stripe) - Shipabase crea una sesión de Stripe Checkout y redirige al usuario
- Al completar el pago, Stripe dispara los webhooks (
checkout.session.completed,customer.subscription.created…) - El handler de
/api/webhooksactualiza las tablas de Supabase requireAccess()ya deja pasar al usuario a las páginas premium
Todo el estado vive en Stripe; Supabase es una réplica de lectura que tus páginas consultan sin latencia.
Portal de cliente
Los usuarios gestionan su suscripción (cambiar plan, actualizar tarjeta, cancelar) desde el Stripe Customer Portal, sin que tengas que construir esa UI. El botón de la página de facturación crea la sesión del portal y redirige.
Períodos de prueba
Los trials se configuran por precio en el Stripe Dashboard (al crear el producto). El checkout aplica el trial automáticamente y el estado trialing cuenta como acceso activo.
Personalizar el comportamiento
Edita utils/stripe/server.ts para ajustar:
- Parámetros de la sesión de checkout (métodos de pago, impuestos, códigos promocionales…)
- Cálculo de períodos de prueba
- URLs de éxito y cancelación
- Configuración del portal de cliente
// utils/stripe/server.ts — ejemplo: permitir códigos promocionales
const session = await stripe.checkout.sessions.create({
// ...parámetros existentes
allow_promotion_codes: true
});
Probar pagos en desarrollo
Con npm run stripe:listen corriendo, usa las tarjetas de prueba de Stripe:
| Tarjeta | Resultado |
|---|---|
4242 4242 4242 4242 |
Pago exitoso |
4000 0000 0000 0002 |
Pago rechazado |
4000 0000 0000 3220 |
Requiere 3D Secure |
Cualquier fecha futura y CVC de 3 dígitos funcionan.
Siguiente paso
Publica contenido con el módulo de contenido y SEO.