Migrar a Webhooks Unificados (intent.*)
Migrar a Webhooks Unificados (intent.*)
Recurrente unificó todos los eventos de pago en un solo formato: intent.*. En lugar de un evento distinto por método de pago (payment_intent.*, bank_transfer_intent.*, etc.), recibís un único evento intent.* con una estructura común, discriminada por el campo type. Escribís un handler en vez de uno por tipo.
No hay breaking changes. Recurrente envía ambos formatos: el clásico por tipo y el unificado. Tu integración actual sigue funcionando sin tocar nada; vos elegís a cuáles suscribir tu endpoint y migrás cuando quieras.
Eventos nuevos a configurar
Suscribí tu endpoint a estos eventos desde tu dashboard de Webhooks:
Cómo funciona
- Recurrente envía los dos formatos por cada pago: el legacy por tipo (
payment_intent.*, etc.) y el unificado (intent.*), como entregas separadas. - En tu dashboard de Webhooks suscribís tu endpoint a los
intent.*que te interesen. - Tu handler ramifica según el campo
typey procesa.
Si tu endpoint no filtra por tipo de evento, recibirá tanto los payment_intent.* como los intent.* para el mismo pago. Para no procesar el mismo cobro dos veces, suscribite a uno solo de los dos formatos (o chequeá el campo event_type en tu handler).
El payload unificado
El envelope y el núcleo común son idénticos para los cinco tipos; solo cambia type y el contenido de details. Ver la estructura completa en la documentación de Webhooks.
Mapeo: legacy → unificado
Los estados intermedios de tarjeta (requires_capture, requires_verification) se normalizan a pending. El estado concreto siempre está disponible en raw_status.
Pasos para migrar
- Revisá el payload nuevo. Mirá la estructura en la documentación de Webhooks, o consultá un pago real con
GET /api/intents/{id}(devuelve el mismo formato que el webhook). - Actualizá tu handler para consumir
intent.*y ramificar portype: - Suscribí tu endpoint a los
intent.*desde el dashboard de Webhooks. - (Opcional) Dá de baja los eventos por tipo. Cuando tu handler unificado funcione, desuscribite de los
payment_intent.*,bank_transfer_intent.*, etc., para dejar de recibir el formato duplicado.
Eventos que no cambian
subscription.*, refund.*, dispute.* y setup_intent.* siguen exactamente igual — no son parte del recurso Intent unificado.

