Skip to main content

Descripción General

Esta guía te muestra cómo integrar el flujo de verificación KYC de Gu1 en tus aplicaciones móviles (Android, iOS, React Native, Flutter) y aplicaciones web (React, Vue, vanilla JS). La verificación se ejecuta en un WebView/iframe que apunta a una URL segura generada por tu backend.
Esta guía asume que ya has configurado la integración de tu backend con la API de Gu1. Si no es así, comienza con la Descripción General de la API KYC.

Descripción General de la Arquitectura

Puntos Clave:
  • Tu backend genera la URL de verificación (nunca expongas claves de API en el cliente)
  • Tu frontend abre la URL en WebView/iframe
  • Gu1 envía webhooks a tu backend cuando la verificación se completa
  • Tu frontend hace polling a tu backend para detectar la finalización

Mejores Prácticas de Seguridad

CRÍTICO: Nunca expongas las credenciales de la API de Gu1 o los IDs de workflow en tu código del lado del cliente. Siempre genera las URLs de verificación desde tu backend seguro.

✅ HACER

Genera URLs de verificación que expiren rápidamente (15-30 minutos). Si el usuario no inicia dentro de ese tiempo, genera una nueva.
Al recibir webhooks de Gu1:
  1. Extraer solo los datos necesarios
  2. Actualizar el estado del usuario en tu BD
  3. No almacenar datos sensibles de verificación a largo plazo
Siempre verifica que los webhooks provienen de Gu1 usando firmas HMAC.Aprende sobre seguridad de webhooks →

❌ NO HACER

Por qué es peligroso:
  • Las claves de API expuestas en bundles de app pueden ser extraídas
  • Cualquiera puede crear validaciones en tu nombre
  • Imposible rotar claves comprometidas sin actualizar la app
En su lugar: Siempre solicita una URL nueva desde tu backend cuando sea necesario.
En su lugar: Solo confía en webhooks recibidos por tu backend.

Integración Móvil

Android (Kotlin)

Permisos (AndroidManifest.xml):

iOS (Swift)

Permisos (Info.plist):

Kotlin Multiplatform (KMP)

Perfecto para compartir lógica entre Android e iOS:

React Native

Permisos:
  • Agrega permisos de cámara a AndroidManifest.xml e Info.plist
  • Instalar: npm install react-native-webview

Flutter

Dependencias (pubspec.yaml):
Permisos:
  • Android: Agrega permiso de cámara a AndroidManifest.xml
  • iOS: Agrega descripción de uso de cámara a Info.plist

Integración Web

React


Vue 3


Plain HTML/JavaScript (Vanilla)


Detección de Finalización del Flujo

El WebView/iframe no puede notificar directamente a tu app cuando la verificación se completa. La UI de verificación de Gu1 se ejecuta en aislamiento por razones de seguridad.

Patrón Recomendado: Polling al Backend

Tu frontend hace polling a tu backend, que recibe webhooks de Gu1: Ejemplo de endpoint del backend:
Polling del frontend (todas las plataformas):

Alternativa: WebSockets (Avanzado)

Para mejor UX, usa WebSockets para enviar actualizaciones en lugar de polling:

Manejo de Webhooks

Tu backend recibe webhooks de Gu1 cuando la verificación se completa.

Guía de Integración de Webhooks

Ver guía completa de integración de webhooks con ejemplos de código, seguridad y estructuras de payload

Eventos Clave de Webhook

Manejador mínimo de webhook:

Ejemplo de Flujo Completo

Veamos un ejemplo completo de extremo a extremo:

1. Backend: Generar URL

2. Frontend: Abrir Verificación

3. Backend: Recibir Webhook

4. Frontend: Detectar Finalización


Pruebas

Entorno Sandbox

Usa el modo sandbox para pruebas:
En modo sandbox:
  • No se requieren documentos reales
  • Puedes simular diferentes resultados
  • Los webhooks se disparan normalmente

Probando Diferentes Resultados

Para probar escenarios de rechazo/expiración, usa diferentes datos de prueba en modo sandbox.

Solución de Problemas

Posibles causas:
  • URL expirada (generar una nueva)
  • JavaScript deshabilitado en WebView
  • Problemas de conectividad de red
Soluciones:
  • Habilitar JavaScript: settings.javaScriptEnabled = true
  • Verificar que la URL es válida y no ha expirado
  • Probar URL en navegador normal primero
Posibles causas:
  • Faltan permisos de cámara
  • La reproducción de medios requiere gesto del usuario
Soluciones:Android:
iOS:
Web:
Posibles causas:
  • Webhook no recibido por el backend
  • Verificación de firma de webhook fallando
  • Base de datos no se está actualizando
Soluciones:
  • Verificar logs de webhook en el dashboard de Gu1
  • Verificar implementación de firma de webhook
  • Agregar logging al manejador de webhook
  • Probar endpoint de webhook manualmente
Posibles causas:
  • Iluminación deficiente para fotos de documentos
  • Tipo de documento no soportado
  • Problemas técnicos
Soluciones:
  • Proporcionar instrucciones claras antes de comenzar
  • Mostrar ejemplos de fotos buenas vs malas
  • Implementar timeout (15-20 minutos)
  • Permitir al usuario salir y reintentar

Resumen de Mejores Prácticas

Seguridad Primero

  • Nunca exponer claves de API en el cliente
  • Siempre generar URLs desde el backend
  • Verificar firmas de webhook
  • Usar HTTPS en todas partes

Experiencia de Usuario

  • Mostrar estados de carga
  • Proporcionar instrucciones claras
  • Manejar errores con gracia
  • Permitir reintentos en caso de fallo

Confiabilidad

  • Implementar polling con intervalos razonables
  • Manejar fallos de red
  • Establecer timeouts apropiados
  • Probar todas las plataformas exhaustivamente

Cumplimiento

  • No almacenar datos sensibles de verificación
  • Usar patrón Process-and-Purge
  • Respetar políticas de retención de datos
  • Documentar tu integración

Próximos Pasos

Descripción General de la API KYC

Aprende sobre la API KYC y la integración del backend

Integración de Webhooks

Configura webhooks para recibir resultados de verificación

Guía de Flujo Completo

Ver el flujo completo de verificación KYC

Guía de Seguridad

Implementa seguridad de webhooks y verificación HMAC