Resumen
Los webhooks te permiten recibir notificaciones en tiempo real when a KYC verification status changes. gu1 enviará automáticamente solicitudes HTTP POST a tu endpoint webhook configurado cuando se actualice el estado de una validación.¿Por Qué Usar Webhooks?
Actualizaciones en Tiempo Real
Recibe notificaciones instantáneas cuando cambia el estado de verificación
Eficiente
No necesitas consultar la API repetidamente
Flujos Automáticos
Actualiza automáticamente cuentas de usuario según los resultados de verificación
Mejor UX
Notifica a los clientes inmediatamente después de la verificación
Eventos de Webhook
gu1 envía webhooks para los siguientes eventos de validación KYC:| Tipo de Evento | Descripción | Cuándo se Dispara |
|---|---|---|
kyc.validation_created | Sesión de validación creada | Cuando creas una nueva validación KYC |
kyc.validation_in_progress | Cliente inició verificación | Cliente comienza el proceso de verificación |
kyc.validation_approved | Verificación aprobada | Identidad verificada exitosamente |
kyc.validation_rejected | Verificación rechazada | Verificación de identidad falló |
kyc.validation_abandoned | Cliente abandonó el proceso | Cliente abandonó sin completar |
kyc.validation_expired | Sesión de validación expiró | Sesión expiró (típicamente después de 7 días) |
Configurar Webhooks
Step 1: Configurar URL del Webhook
Configura la URL de tu webhook en el panel de gu1:- Ve a Settings → Webhooks
- Agrega un nuevo endpoint webhook (e.g.,
https://yourapp.com/webhooks/kyc) - Suscríbete a eventos KYC (
kyc.*) - Guarda y activa el webhook
webhookUrl al crear validaciones individuales.
Step 2: Crear un Endpoint Webhook
Crea un endpoint en tu aplicación para recibir solicitudes POST webhook:Step 3: Hacer tu Endpoint Públicamente Accesible
Tu endpoint webhook debe ser:- Públicamente accesible vía HTTPS
- Capaz de recibir solicitudes POST
- Devolver un código de estado 200 para confirmar recepción
Para desarrollo local, usa herramientas como ngrok para crear una URL pública que se conecte a tu servidor local.
Estructura del Payload del Webhook
Todos los webhooks siguen esta estructura estándar:Campos Comunes del Payload
Identificador único para este evento webhook
El tipo de evento (e.g.,
kyc.validation_approved)Marca de tiempo ISO 8601 cuando ocurrió el evento
Datos específicos del evento (ver abajo para cada tipo de evento)
El ID de validación KYC en gu1
El ID de la entidad (persona) siendo verificada
Información de la entidad incluyendo tu
externalId para búsqueda fácilEstado de validación actual:
pending, in_progress, approved, rejected, abandoned, expiredPayloads Específicos por Evento
kyc.validation_created
Enviado cuando se crea una nueva validación KYC.kyc.validation_in_progress
Enviado cuando un cliente inicia el proceso de verificación.kyc.validation_approved
Enviado cuando la verificación se completa exitosamente.verifiedAt: Marca de tiempo cuando la verificación fue aprobadaextractedData: Información personal extraída del documentoverifiedFields: Arreglo de campos que fueron verificados exitosamentewarnings: Arreglo de advertencias detectadas durante la verificacióndecision: Resultados de verificación (imágenes/URLs removidas por seguridad)
kyc.validation_rejected
Enviado cuando la verificación falla.kyc.validation_abandoned
Enviado cuando un cliente inicia pero no completa la verificación.kyc.validation_expired
Enviado cuando una sesión de validación expira sin completarse.Mejores Prácticas
Devolver 200 Rápidamente
Devolver 200 Rápidamente
Siempre devuelve un código 200 lo más rápido posible para confirmar recepción. Procesa el webhook asincrónicamente si es necesario.
Manejar Idempotencia
Manejar Idempotencia
Podrías recibir el mismo webhook múltiples veces. Usa el
id campo para asegurar que procesas cada evento solo una vez.Use entity.externalId para Búsqueda
Use entity.externalId para Búsqueda
El webhook incluye
entity.externalId que es el ID que proporcionaste al crear la entidad. Usa esto para buscar el cliente en tu base de datos.Almacenar IDs de Validación
Almacenar IDs de Validación
Almacena el
validationId de gu1 en tu base de datos. Esto te permite consultar detalles de validación después si es necesario.Manejar Errores Graciosamente
Manejar Errores Graciosamente
Si el procesamiento falla, registra el error pero aún devuelve 200 para prevenir reintentos. Almacena webhooks fallidos para revisión manual.
Verificar Autenticidad del Webhook (Próximamente)
Verificar Autenticidad del Webhook (Próximamente)
Versiones futuras incluirán firmas de webhook. Por ahora, asegura que tu URL webhook sea privada y use HTTPS.
Probando Webhooks
Desarrollo Local
Usa ngrok para exponer tu servidor local:Flujo de Pruebas
- Crea una validación KYC de prueba
- Tu endpoint webhook recibe
kyc.validation_created - Cliente completa verificación
- Tu endpoint webhook recibe
kyc.validation_approvedorkyc.validation_rejected
Solución de Problemas
No Recibiendo Webhooks
No Recibiendo Webhooks
Verifica estos elementos:
- URL webhook es públicamente accesible vía HTTPS
- Firewall permite solicitudes POST entrantes
- Endpoint devuelve código 200
- Webhook está configurado y activo en el panel de gu1
- Verifica logs del servidor por solicitudes entrantes
Recibiendo Webhooks Duplicados
Recibiendo Webhooks Duplicados
Esto es normal. Implementa verificaciones de idempotencia usando el
id campo para manejar duplicados.Endpoint Webhook Expirando
Endpoint Webhook Expirando
Procesa webhooks asincrónicamente. Devuelve 200 inmediatamente y maneja lógica de negocio en trabajos en segundo plano.
Falta extractedData
Falta extractedData
extractedData and verifiedFields solo se incluyen en kyc.validation_approved and kyc.validation_rejected eventos.