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.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: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 terminalusage-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_idcomo 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-downgradedebe 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é.

