Saltar al contenido principal
Utilice la integración de Stripe cuando desee Stripe Checkout alojado, Stripe Products y Prices, Stripe Subscriptions y el Billing Portal alojado. InsForge almacena claves secretas de Stripe en el lado del servidor, crea sesiones de Checkout y Billing Portal desde su aplicación, administra automáticamente el punto final del webhook de Stripe cuando su backend es accesible, refleja el estado de Stripe en el esquema payments y registra eventos de webhook verificados.

Modelo de Stripe

Concepto de StripeTabla o API de InsForge
Productpayments.stripe_products
Pricepayments.stripe_prices
Checkout SessionPOST /api/payments/stripe/{environment}/checkout-sessions y payments.stripe_checkout_sessions
Billing Portal SessionPOST /api/payments/stripe/{environment}/customer-portal-sessions y payments.stripe_customer_portal_sessions
Subscriptionpayments.stripe_subscriptions y payments.stripe_subscription_items
Customer mappingpayments.customer_mappings con provider = 'stripe'
Webhook eventpayments.webhook_events con provider = 'stripe'
Dashboard transaction rowpayments.transactions con provider = 'stripe'

Configuración

Configure las claves secretas de Stripe test y live en Dashboard -> Payments -> Settings, CLI o API de administrador.
Después de conectar una clave, InsForge valida la cuenta, almacena la clave en el almacén de secretos, intenta crear el punto final del webhook de Stripe administrado y ejecuta la sincronización para Productos, Precios, Clientes y Suscripciones.

Checkout

Cree sesiones de checkout desde código frontend con el token de usuario actual de InsForge.
Para Checkout de suscripción, pase un sujeto de facturación. El sujeto es el propietario de facturación propio de su aplicación, como un usuario, equipo, espacio de trabajo, organización, inquilino o grupo.
Checkout inserta una fila en payments.stripe_checkout_sessions usando el token de InsForge del llamador. Agregue políticas de RLS para que los usuarios solo puedan crear sesiones para sujetos a los que se les permite facturar. PostgreSQL aplica políticas SELECT a las filas devueltas por INSERT ... RETURNING y búsquedas idempotentes, por lo que los reintentos también necesitan una política SELECT coincidente para el mismo sujeto e clave de idempotencia.

Portal de facturación

Utilice el Billing Portal alojado para una asignación de cliente de Stripe existente.
La creación del portal requiere un usuario autenticado y una fila payments.customer_mappings existente para el sujeto. Proteja la creación del portal con RLS o una verificación de pertenencia del lado del servidor para que los usuarios no puedan abrir la configuración de facturación para un equipo u organización que no administran.

Webhooks y cumplimiento

Los webhooks de Stripe se administran automáticamente cuando el backend tiene una URL pública. InsForge escucha los eventos necesarios para mantener actualizados los intentos de checkout, clientes, suscripciones, reembolsos y proyecciones de transacciones. Stripe también recomienda cumplir con los pedidos de Checkout desde webhooks en lugar de desde la URL de éxito. En InsForge, adjunte activadores de cumplimiento a payments.webhook_events.

Pedido de eventos

Los eventos webhook se verifican y procesan de forma independiente. InsForge confirma cada fila derivada de un evento antes de marcar ese evento como processed, pero Stripe no da garantía de ordenamiento entre eventos: invoice.paid puede procesarse antes de checkout.session.completed, por lo que las filas creadas por otro evento (como payments.customer_mappings) pueden no existir cuando se dispare su activador. Para eventos de suscripción, primero resuelva el sujeto de facturación de la carga útil del evento — InsForge marca insforge_subject_type e insforge_subject_id en metadatos de suscripción en el checkout, y Stripe lo captura en facturas generadas por suscripción como parent.subscription_details.metadata. Verifique invoice.metadata a continuación, luego recurra a payments.customer_mappings (el mismo orden que InsForge usa internamente):
Nunca permita que el cumplimiento se salte silenciosamente — registre o envíe eventos que no pueda resolver para que puedan reproducirse.

Sincronizar y estado del panel

La sincronización de Stripe refleja Productos, Precios, Clientes y Suscripciones. Los webhooks mantienen el estado de sesión, suscripción, cliente, reembolso y transacción a medida que Stripe emite eventos. payments.transactions es una proyección de informe para el panel. Le proporciona ID de referencia del proveedor como intención de pago, cargo, factura, sesión de checkout e ID de reembolso para que pueda buscar detalles en el Panel de Stripe. Mantenga el estado de orden, crédito o derecho visible para el usuario en sus propias tablas.

Referencias