Skip to main content
Documentación interna para desarrolladores. Esta página cubre los patrones de integración de Stripe, el manejo de webhooks, los flujos de pago y la lógica de activación de planes. No está destinado a usuarios finales.

Mapa de ruta


Configuración del cliente Stripe

El cliente Stripe se inicializa en @zappway/lib/stripe (o similar). La clave API se carga desde la variable de entorno STRIPE_SECRET_KEY.

Flujo de pago


Controlador de webhook

El webhook es la fuente de verdad para el estado de suscripción. Todos los cambios de plan deben pasar por el webhook, no por la respuesta de la sesión de pago.
Eventos clave manejados:

Planificar puerta

Los planes controlan el acceso a funciones a través de los metadatos de suscripción de la sesión. El patrón utilizado en la aplicación:
Existen assertXxxPlan ayudantes similares para otras funciones premium. Leen desde req.session.organization.subscription (cargado desde la base de datos a través de devoluciones de llamada de NextAuth).

Vista previa del prorrateo

Antes de actualizar, la interfaz de usuario llama a la vista previa de prorrateo para mostrar al usuario el cargo exacto:

Créditos de uso

El terminal usage-credits administra créditos prepagos para facturación basada en el uso (por ejemplo, volumen de mensajes). Los créditos se almacenan en la base de datos y se reducen en cada evento facturable.

Validar degradación

Comprueba si el uso de recursos actual de la organización es compatible con un plan inferior:

Variables de entorno necesarias


Problemas conocidos / Problemas

  • Idempotencia del webhook: Stripe puede entregar el mismo evento varias veces. Todos los controladores de webhook deben ser idempotentes: utilice stripe_event_id como clave de desduplicación almacenada en la base de datos.
  • Caducidad de la sesión de pago: Las sesiones caducan después de 24 horas. Si el usuario abandona el pago y regresa más tarde, necesita una nueva sesión.
  • validate-downgrade debe marcar TODOS los tipos de recursos que tienen límites del plan (agentes, habilidades, almacenes de datos, miembros del equipo, etc.). Si un nuevo tipo de recurso obtiene un límite de plan, este punto final debe actualizarse.
  • La URL del portal del cliente caduca después de 5 minutos: generela a pedido, nunca la almacene en caché.