Funciones
- API sencilla: patrón singleton con métodos fáciles de usar
- Integración flexible: usa directamente la URL de UniLink o crea sesiones desde el backend
- Adaptable: funciona en navegadores de escritorio y móviles
- Personalizable: opciones de configuración para el estilo y el comportamiento
- Varios formatos: builds ESM, CommonJS y UMD
- Compatibilidad con TypeScript: incluye definiciones de tipos completas
- Modos modal e integrado: elige entre una superposición modal o la inserción integrada en la página
- Callbacks de eventos: eventos en tiempo real sobre el progreso de la verificación (iniciada, paso completado, finalizada)
- Gestión del estado: observa el estado del SDK para crear una interfaz personalizada
Instalación
NPM/Yarn
CDN (UMD)
La última versión publicada en npm es
0.5.1.
0.5.0 añadió DiditSdk.shared.submitEvent() (consulta Enviar eventos), y 0.5.1 permite que el flujo alojado solicite el ID del usuario a una wallet de identidad digital dentro del SDK y mantiene un lanzamiento fallido en el estado error con su errorMessage.
0.4.0 añadió las opciones de cámara que ya ofrecen los SDK nativos, incluida defaultLivenessCamera, que abre la captura facial con la cámara trasera (consulta Opciones de cámara).Comprobar la versión instalada
Tu gestor de paquetes sigue siendo la fuente de referencia para la versión instalada:0.3.1, esta exportación se genera a partir de la versión del paquete en todos los formatos de JavaScript (ESM, CommonJS, UMD, UMD minificado) y en la declaración de TypeScript, por lo que siempre coincide con la versión instalada.
0.3.0 y las versiones anteriores indican 0.2.1 en esta exportación, sea cual sea la versión instalada. En esas versiones, usa npm list o tu archivo de bloqueo (lockfile).
JavaScript puro
Módulos ES / TypeScript
Etiqueta de script (UMD)
Ejemplos por framework
Ejemplos del SDK web
React, Angular, Svelte, Next.js, Nuxt, Vue y más, con ejemplos y documentación para cada framework.
Métodos de integración
Hay dos formas de integrar el SDK:Método 1: URL de UniLink (la más sencilla)
Usa directamente la URL de UniLink de tu flujo de verificación (workflow) desde Didit Console. No necesitas backend.Método 2: sesión desde el backend (recomendado para producción)
Tu backend crea una sesión mediante la API de Didit y devuelve la URL de la página de verificación alojada. Así controlasvendor_data, el callback por sesión y metadata, y puedes crear sesiones antes de que el usuario llegue al frontend.
Más información en la referencia de la API Create Session.
Backend (Node.js / Express)
El campo de la respuesta de creación de sesión se llama
url (consulta el esquema OpenAPI de Create Session). Pásalo directamente a startVerification({ url }).Configuración
Opciones de cámara
Las opciones de cámara requieren
@didit-protocol/sdk-web 0.4.0 o posterior.defaultLivenessCamera: 'back' para abrir la captura facial con la cámara trasera, por ejemplo en un quiosco o cuando un operador sostiene el dispositivo y lo apunta hacia la persona que se está verificando.
- Los valores de lente aceptados son
'front'y'back'. Cualquier otro valor se ignora, al igual que un indicador del selector que no sea booleano. - Un dispositivo que no tiene la cámara solicitada mantiene la que tiene: un portátil al que se le pide
'back'sigue usando su webcam. El selector se oculta en los dispositivos con una sola cámara, independientemente de lo que indiquen los indicadores. - Las opciones de la prueba de vida se aplican a la comprobación de prueba de vida pasiva. La prueba de vida activa no se ve afectada.
- El SDK reenvía las opciones a la página de verificación como parámetros de consulta de la URL de verificación:
document_camera,liveness_camera,document_camera_switchyliveness_camera_switch. Si abres la URL de verificación directamente en lugar de hacerlo a través del SDK, defínelos tú mismo: añade?liveness_camera=backa una URL sin cadena de consulta,&liveness_camera=backa una que ya tiene parámetros, o defínelos con la APIURLpara cubrir ambos casos:
Enviar eventos
DiditSdk.shared.submitEvent() pone en cola eventos del usuario final (registro, inicio de sesión, inicio de sesión fallido, cierre de sesión, restablecimiento de contraseña, MFA, cambio de dispositivo) para la monitorización de eventos de Didit.
Tu backend genera un token de monitorización para la persona, y el SDK envía los eventos en lotes junto con la huella digital del dispositivo.
Nunca envíes una clave de API al navegador.
Tamaño y desplazamiento del modal
El comportamiento de tamaño que se describe a continuación requiere 0.3.1 o posterior. Las versiones 0.3.0 y anteriores pueden recortar el flujo de verificación en ventanas de escritorio de poca altura y en orientación horizontal.
dvh en los navegadores que admiten unidades dinámicas de viewport y recurre a vh en navegadores compatibles más antiguos. Con anchos de 540px o menos, el modal ocupa toda el área visible de la ventana. El botón de cierre y la confirmación de salida permanecen dentro del modal.
Flujo de verificación rediseñado
Todo lo que se describe en esta sección se aplica a partir de la versión 0.5.0, que aún no se ha publicado. Hasta que actualices, el modal mantiene el tamaño descrito arriba.
didit:layout:
- Tamaño inicial, a partir de la versión 0.5.0: hasta que la página informa de su diseño, y en las páginas que nunca lo hacen, el modal mantiene el tamaño máximo actual de 500px por 700px. Sigue adaptándose a ventanas de poca altura y se muestra a pantalla completa con 540px o menos.
- Botón de cierre, a partir de la versión 0.5.0: un círculo de 44px sobre la barra superior de la página. Sigue el tema claro u oscuro de la página y se desplaza a la izquierda en los idiomas de derecha a izquierda.
- Modo incrustado, a partir de la versión 0.5.0: sigue ocupando su elemento contenedor, como antes (consulta Modo incrustado).
- URL de verificación, a partir de la versión 0.5.0: el SDK añade
sdk_presentation(modaloembedded) y, en un modal,sdk_close_button(trueofalse, segúnshowCloseButton), para que la página sepa cómo se muestra. - Eventos, a partir de la versión 0.5.0: el SDK gestiona
didit:layoutpor sí mismo y no lo pasa aonEvent.
Modo incrustado
El modo incrustado no usa el límite de 500px por 700px del modal. El SDK ocupa la caja de contenido del elemento contenedor, así que asigna a ese elemento una altura explícita o definida de otro modo:Resultados de la verificación
El SDK devuelve tres tipos de resultados:Completed
El flujo de verificación terminó (aprobado, pendiente o rechazado).El tipo de TypeScript declara
'Approved' | 'Pending' | 'Declined', pero el valor se transmite tal cual desde el estado de la sesión del flujo alojado, así que también puedes recibir otros estados, como In Review. Pending es el valor por defecto del SDK cuando el flujo no informó ningún estado. Trata status como una indicación y usa el webhook como fuente de la decisión definitiva.Cancelled
El usuario cerró el modal de verificación.session se incluye cuando ya se conocía un sessionId (puede ser undefined si el usuario canceló antes de que el iframe informara uno).
Failed
Se produjo un error durante la verificación.Gestión del estado
Puedes observar el estado del SDK para crear una interfaz personalizada:Referencia de la API
DiditSdk.shared
La instancia singleton del SDK.Métodos
Propiedades
Callbacks
Eventos detallados
Sigue el progreso de la verificación con el callbackonEvent:
Referencia de eventos
Pérdida de conexión
Si se cae la conexión del usuario, la página de verificación muestra una pantalla de “Sin conexión a internet” en lugar de que un paso quede cargando. Sigue comprobando la conexión en segundo plano y cierra la pantalla por sí sola en cuanto vuelve a poder conectarse con Didit, y el usuario continúa desde el paso en el que estaba. Dentro del modal del SDK o de un iframe, la pantalla también ofrece Salir de la verificación: la página envía entoncesdidit:error con error: "network_error", seguido de didit:cancelled, y el SDK cierra el modal y llama a onComplete con type: "cancelled".
A partir de la versión 0.5.0, el mensaje didit:layout de la página ajusta el tamaño del modal y no llega a onEvent. Si en cambio incrustas la página con tu propio iframe, consulta Ajustar el tamaño del iframe a partir de didit:layout.
Valores de paso
El campostep puede tomar uno de estos valores:
document_selection- Selección del tipo de documentodocument_front- Anverso del documentodocument_back- Reverso del documentoface- Verificación facial o prueba de vidaemail- Verificación de correo electrónicophone- Verificación de teléfonopoa- Prueba de domicilioquestionnaire- Paso de cuestionario
Valores de canal
El campochannel de code_sent puede ser:
email- Código enviado por correo electrónicosms- Código enviado por SMSwhatsapp- Código enviado por WhatsApp
Longitud del código
El campocodeSize de code_sent indica la longitud del código OTP (por ejemplo, 4 o 6 dígitos).