JAAK KYC Mosaic Web
1. Introducción
JAAK KYC Mosaic Web es una solución completa de verificación de identidad que permite integrar procesos de KYC (Know Your Customer) en aplicaciones web de manera rápida y segura. Esta guía está diseñada para ayudarle a elegir e implementar la modalidad de integración que mejor se adapte a sus necesidades.
¿Qué es JAAK KYC Mosaic?
JAAK KYC Mosaic es una plataforma de verificación de identidad que ofrece:
- Extracción automática de datos de documentos de identidad
- Verificación de autenticidad de documentos
- Verificación de identidad facial en vivo
- Comparación facial One-to-One (OTO)
- Verificación contra listas negras
Beneficios principales
- Integración flexible: 3 modalidades para diferentes casos de uso
- Implementación rápida: Desde minutos hasta horas según la modalidad
- Alta precisión: 99% de exactitud en verificaciones
- Seguridad robusta: Autenticación con Short Keys y comunicación HTTPS
- Soporte completo: Documentación detallada y equipo de soporte técnico
2. Modalidades de Integración
JAAK KYC Mosaic ofrece tres modalidades de integración para adaptarse a diferentes necesidades y casos de uso. A continuación se presenta una comparación para ayudarle a elegir la mejor opción:
| Modalidad | Casos de Uso | Complejidad |
|---|---|---|
| Embed (iframe) | Integración rápida sin salir del sitio. Control total del layout. | ⭐⭐ Media |
| Direct (nueva pestaña) | Experiencia pantalla completa. Apps móviles nativas. | ⭐⭐ Media |
| Link (URLs) | Campañas email/SMS. Enlaces compartidos. Cero código. | ⭐ Baja |
2.1 Modalidad Embed (iframe)
La modalidad Embed integra el flujo KYC completo dentro de un iframe en su página web, manteniendo al usuario en su dominio durante todo el proceso.
Ventajas
- Integración rápida (minutos a horas)
- Usuario permanece en su sitio web
- Comunicación bidireccional en tiempo real
- Control total del posicionamiento y diseño
Cuándo usar Embed
- Necesita mantener al usuario en su dominio
- Requiere control del flujo de usuario
- Quiere personalizar el contenedor del iframe
2.2 Modalidad Direct (nueva pestaña)
La modalidad Direct abre el flujo KYC en una ventana separada o nueva pestaña, ofreciendo una experiencia de pantalla completa optimizada.
Ventajas
- Máximo rendimiento (sin overhead de iframe)
- Experiencia de usuario fluida
- Perfecto para aplicaciones móviles (WebView)
- Soporte completo de todos los pasos KYC
Cuándo usar Direct
- Necesita máximo rendimiento
- Integra en aplicaciones móviles nativas
- Prefiere flujo independiente sin embedding
2.3 Modalidad Link (URLs)
La modalidad Link permite generar URLs autocontenidas que incluyen toda la configuración necesaria. Es la opción más simple y no requiere código del lado del cliente.
Ventajas
- Cero código del lado del cliente
- Perfecto para campañas de email/SMS
- URLs compartibles y autocontenidas
- Implementación inmediata
Cuándo usar Link
- Campañas automatizadas de verificación
- Envío de enlaces por email, SMS o WhatsApp
- Códigos QR para verificación
- No tiene recursos de desarrollo
🚀 Proceso para Crear una Sesión KYC
El flujo básico para generar un enlace de verificación KYC es muy simple:
1. Crear Sesión
Realiza una llamada POST a la API de JAAK para crear una nueva sesión de verificación.
Ver documentación completa: Crear Sesión KYC →
curl -X POST https://sandbox.kyc.jaak.ai/api/v1/sessions \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"type": "kyc",
"metadata": {
"user_id": "12345",
"campaign": "onboarding"
}
}'2. Obtener shortKey
La respuesta incluye una URL de sesión de la cual extraes el shortKey:
{
"session_id": "sess_abc123",
"session_url": "https://sandbox.kyc.jaak.ai/session/jsi8lPd",
"status": "pending",
"created_at": "2025-01-15T10:30:00Z"
}Ejemplo de URL de sesión:
https://sandbox.kyc.jaak.ai/session/jsi8lPd
ShortKey 👉 jsi8lPd
Nota: Identificador único de 7 caracteres. Este shortKey se genera automáticamente y no es personalizable.
3. Configurar Flujo KYC
Define qué pasos de verificación quieres incluir en tu flujo personalizado.
const config = {
steps: [
{ key: 'DOCUMENT_EXTRACT' },
{ key: 'DOCUMENT_VERIFY' },
{ key: 'IVERIFICATION' }
],
shortKey: 'jsi8lPd' // El shortKey obtenido en el paso 2
};Formato de pasos para URL (modalidad Link):
steps=DOCUMENT_EXTRACT,DOCUMENT_VERIFY,IVERIFICATION
Ejemplo de URL completa:
https://mosaic.sandbox.jaak.ai/link?shortKey=jsi8lPd&steps=DOCUMENT_EXTRACT,DOCUMENT_VERIFY,IVERIFICATION
Flujo completo de integración
// Paso 1: Crear sesión en tu backend
async function createKYCSession(userId) {
const response = await fetch('https://sandbox.kyc.jaak.ai/api/v1/sessions', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
type: 'kyc',
metadata: { user_id: userId }
})
});
const data = await response.json();
return data;
}
// Paso 2: Extraer shortKey de la URL
function extractShortKey(sessionUrl) {
// sessionUrl: "https://sandbox.kyc.jaak.ai/session/jsi8lPd"
const parts = sessionUrl.split('/');
return parts[parts.length - 1]; // "jsi8lPd"
}
// Paso 3: Usar shortKey en tu integración
async function initializeKYC(userId) {
// Crear sesión
const session = await createKYCSession(userId);
// Extraer shortKey
const shortKey = extractShortKey(session.session_url);
// Opción A: Usar con Embed
const embedConfig = {
steps: [
{ key: 'DOCUMENT_EXTRACT' },
{ key: 'DOCUMENT_VERIFY' },
{ key: 'IVERIFICATION' }
],
shortKey: shortKey
};
// Enviar al iframe
document.getElementById('kycMosaic').contentWindow.postMessage({
type: 'CONFIG',
data: embedConfig
}, '*');
// Opción B: Generar Link
const kycLink = `https://mosaic.qa.jaak.ai/link?shortKey=${shortKey}&steps=DOCUMENT_EXTRACT,DOCUMENT_VERIFY,IVERIFICATION`;
return { shortKey, kycLink };
}Ambientes disponibles
| Ambiente | URL Base | Uso |
|---|---|---|
| Sandbox | https://sandbox.kyc.jaak.ai | Desarrollo y pruebas |
| Producción | https://kyc.jaak.ai | Aplicaciones en vivo |
Importante: Siempre pruebe en ambiente Sandbox antes de migrar a producción.
3. Prerrequisitos
3.1 Requisitos técnicos
| Requisito | Especificación |
|---|---|
| Navegador | Chrome 80+, Firefox 75+, Safari 13+, Edge 80+ |
| HTTPS | Obligatorio en producción (requerido para cámara) |
| JavaScript | ES6+ (para Embed y Direct) |
| Short Key | Proporcionado por JAAK (requerido para todas las modalidades) |
3.2 Obtener su Short Key
El Short Key es un código de acceso único que autentica su aplicación con JAAK KYC Mosaic. Para obtener su Short Key:
- Contacte al equipo de ventas de JAAK
- Complete el proceso de registro
- Recibirá su Short Key por email
Nota: Mantenga su Short Key seguro. No lo comparta públicamente ni lo incluya en repositorios de código abierto.
4. Guías de Implementación
4.1 Implementación Embed (iframe)
Paso 1: Agregar el iframe a su página
<iframe
id="kycMosaic"
src="https://mosaic.sandbox.jaak.ai/"
width="100%"
height="600"
allow="camera; geolocation">
</iframe>Paso 2: Configurar y enviar configuración
const config = {
steps: [
{ key: 'DOCUMENT_EXTRACT' },
{ key: 'DOCUMENT_VERIFY' },
{ key: 'IVERIFICATION' }
],
shortKey: 'SU_SHORT_KEY_AQUI'
};
document.getElementById('kycMosaic')
.contentWindow.postMessage({
type: 'CONFIG',
data: config
}, '*');Paso 3: Escuchar eventos
window.addEventListener('message', function(event) {
switch(event.data.type) {
case 'FLOW_COMPLETE':
console.log('KYC completado', event.data);
// Procesar resultados
break;
case 'ERROR':
console.error('Error', event.data);
// Manejar error
break;
}
});4.2 Implementación Direct (nueva pestaña)
Paso 1: Abrir ventana Direct
let directWindow = null;
function openDirectKYC() {
const url = 'https://mosaic.sandbox.jaak.ai/direct';
const features = 'width=800,height=600';
directWindow = window.open(url, 'kyc', features);
}Paso 2: Esperar señal READY y enviar configuración
window.addEventListener('message', function(event) {
if (event.data.type === 'READY') {
const config = {
steps: [
{ key: 'DOCUMENT_EXTRACT' },
{ key: 'IVERIFICATION' }
],
shortKey: 'SU_SHORT_KEY_AQUI'
};
directWindow.postMessage({
type: 'CONFIG',
data: config
}, '*');
}
});Paso 3: Manejar eventos
window.addEventListener('message', function(event) {
switch(event.data.type) {
case 'FLOW_COMPLETE':
console.log('KYC completado en Direct', event.data);
break;
case 'ERROR':
console.error('Error en Direct', event.data);
break;
}
});4.3 Implementación Link (URLs)
La modalidad Link es la más simple: solo necesita generar una URL con los parámetros adecuados.
Formato de URL
https://mosaic.sandbox.jaak.ai/link?shortKey=SU_KEY&steps=DOCUMENT_EXTRACT,IVERIFICATION
Parámetros disponibles
| Parámetro | Descripción |
|---|---|
shortKey | Su código de acceso (requerido) |
steps | Pasos separados por comas en orden de ejecución |
redirectUrl | URL donde redirigir al completar (opcional) |
Ejemplo completo
https://mosaic.sandbox.jaak.ai/link?shortKey=ABC123&steps=DOCUMENT_EXTRACT,DOCUMENT_VERIFY,IVERIFICATION,OTO&redirectUrl=https://mi-app.com/success
Generación programática (opcional)
function generateKYCLink(shortKey, steps, redirectUrl) {
const baseUrl = 'https://mosaic.sandbox.jaak.ai/link';
const params = new URLSearchParams({
shortKey: shortKey,
steps: steps.join(',')
});
if (redirectUrl) {
params.append('redirectUrl', redirectUrl);
}
return `${baseUrl}?${params.toString()}`;
}
// Uso
const link = generateKYCLink(
'ABC123',
['DOCUMENT_EXTRACT', 'IVERIFICATION', 'OTO'],
'https://mi-app.com/success'
);
console.log(link);5. Pasos del Flujo KYC
JAAK KYC Mosaic ofrece diferentes pasos que puede configurar según sus necesidades. Los pasos se ejecutan en el orden que usted especifique.
| Paso | Descripción |
|---|---|
| WELCOME | Pantalla de bienvenida con instrucciones |
| DOCUMENT_EXTRACT | Captura y extracción de datos del documento de identidad |
| DOCUMENT_VERIFY | Verificación de autenticidad del documento |
| BLACKLIST | Verificación contra listas negras de seguridad |
| IVERIFICATION | Verificación de identidad facial en vivo (liveness) |
| LOCATION_PERMISSIONS | Solicitud de permisos de geolocalización |
| OTO | Comparación facial One-to-One (documento vs. rostro en vivo) |
| FINISH | Pantalla de finalización exitosa |
Importante: El paso OTO requiere que se hayan ejecutado previamente DOCUMENT_EXTRACT (para la foto del documento) e IVERIFICATION (para la foto en vivo). Si estos pasos se ejecutaron en sesiones anteriores, Mosaic obtiene las imágenes automáticamente.
Ejemplo de configuración de pasos
const config = {
steps: [
{ key: 'WELCOME' },
{ key: 'DOCUMENT_EXTRACT' },
{ key: 'DOCUMENT_VERIFY' },
{ key: 'IVERIFICATION' },
{ key: 'OTO' },
{ key: 'FINISH' }
],
shortKey: 'SU_SHORT_KEY_AQUI'
};6. Eventos y Respuestas
Las modalidades Embed y Direct envían eventos mediante postMessage para informar sobre el progreso del flujo KYC.
6.1 Eventos principales
| Evento | Descripción |
|---|---|
| READY | Mosaic está listo para recibir configuración |
| STEP_COMPLETE | Un paso individual fue completado exitosamente |
| FLOW_COMPLETE | El flujo KYC completo fue finalizado exitosamente |
| ERROR | Ocurrió un error durante el proceso |
| SESSION_EXPIRED | La sesión expiró por inactividad (14 minutos) |
6.2 Ejemplo de manejo de eventos
window.addEventListener('message', function(event) {
const message = event.data;
switch(message.type) {
case 'READY':
// Enviar configuración
console.log('Mosaic listo');
break;
case 'STEP_COMPLETE':
console.log('Paso completado:', message.data.stepKey);
console.log('Datos del paso:', message.data.data);
// Guardar datos del paso si es necesario
break;
case 'FLOW_COMPLETE':
console.log('KYC completado exitosamente');
console.log('Datos finales:', message.data);
// Procesar resultados finales y continuar con su flujo
break;
case 'ERROR':
console.error('Error en KYC:', message.data.error);
console.error('Mensaje:', message.data.message);
// Mostrar mensaje de error al usuario
break;
case 'SESSION_EXPIRED':
console.warn('Sesión expirada');
// Reiniciar flujo o mostrar mensaje al usuario
break;
}
});Estructura de datos en eventos
STEP_COMPLETE
{
type: 'STEP_COMPLETE',
data: {
stepKey: 'DOCUMENT_EXTRACT',
data: {
// Datos específicos del paso
face: 'data:image/jpeg;base64,...'
}
}
}FLOW_COMPLETE
{
type: 'FLOW_COMPLETE',
data: {
completedSteps: ['DOCUMENT_EXTRACT', 'IVERIFICATION', 'OTO'],
allData: {
DOCUMENT_EXTRACT: { /* datos */ },
IVERIFICATION: { /* datos */ },
OTO: { /* datos */ }
}
}
}ERROR
{
type: 'ERROR',
data: {
error: 'AUTHENTICATION_FAILED',
message: 'Invalid shortKey provided'
}
}7. Solución de Problemas
7.1 Problemas comunes
El iframe no carga
- Verifique que el atributo
allowincluyacameraygeolocation - Confirme que está usando HTTPS en producción
- Revise la consola del navegador para errores CORS
<!-- Configuración correcta del iframe -->
<iframe
id="kycMosaic"
src="https://mosaic.sandbox.jaak.ai/"
allow="camera; geolocation"
width="100%"
height="600">
</iframe>Error de autenticación
- Verifique que su Short Key sea correcto
- Confirme que el Short Key no haya expirado
- Contacte a soporte si el problema persiste
OTO falla por imágenes faltantes
- Asegúrese de ejecutar
DOCUMENT_EXTRACTantes deOTO - Asegúrese de ejecutar
IVERIFICATIONantes deOTO - Alternativamente, proporcione las imágenes manualmente en la configuración:
const config = {
steps: [
{
key: 'OTO',
data: {
face: 'data:image/jpeg;base64,...', // Imagen del documento
bestFrame: 'data:image/jpeg;base64,...' // Imagen de liveness
}
}
],
shortKey: 'SU_SHORT_KEY_AQUI'
};Ventana Direct bloqueada
- Asegúrese de que la apertura ocurra por interacción del usuario (click)
- Verifique la configuración de bloqueador de popups
- Agregue instrucciones al usuario para permitir popups
// Buena práctica: abrir desde un evento de click
button.addEventListener('click', function() {
openDirectKYC();
});PostMessage no funciona
- Verifique que está escuchando eventos en la ventana correcta
- Confirme que el origen del mensaje es el esperado
- Revise la consola para mensajes de error
window.addEventListener('message', function(event) {
// Validar origen si es necesario (producción)
// if (event.origin !== 'https://mosaic.sandbox.jaak.ai') return;
console.log('Mensaje recibido:', event.data);
});7.2 Sesión expirada
Las sesiones de JAAK KYC Mosaic expiran después de 14 minutos de inactividad. Cuando esto ocurre:
- Se envía un evento
SESSION_EXPIRED - Se muestra un mensaje al usuario en la interfaz
- Puede reiniciar el flujo enviando una nueva configuración
Manejo recomendado
window.addEventListener('message', function(event) {
if (event.data.type === 'SESSION_EXPIRED') {
console.warn('Sesión expirada');
// Opción 1: Reiniciar automáticamente
setTimeout(() => {
sendConfiguration();
}, 2000);
// Opción 2: Mostrar mensaje y esperar acción del usuario
// showModal('Su sesión ha expirado. ¿Desea reiniciar?');
}
});Recomendación: Implemente un reinicio automático del flujo al recibir
SESSION_EXPIREDpara mejorar la experiencia del usuario.
8. Soporte y Recursos
Contacto
Para soporte técnico, consultas o reportar problemas:
| Contacto | Información |
|---|---|
| Email de soporte | [email protected] |
| Sitio web | www.jaak.ai |
| Horario de atención | Lunes a Viernes, 9:00 - 18:00 (Hora de México) |
Información requerida para soporte
Al contactar soporte, incluya la siguiente información:
- Modalidad de integración utilizada (Embed, Direct, o Link)
- Navegador y versión utilizada
- Logs de la consola del navegador
- Pasos para reproducir el problema
- Mensajes de error específicos
Recursos adicionales
- Documentación técnica detallada disponible bajo petición
- Ejemplos de código y casos de uso en nuestro repositorio
- Webinars y sesiones de capacitación disponibles
Ejemplos de Casos de Uso
Caso 1: Onboarding de clientes (Embed)
<!DOCTYPE html>
<html>
<head>
<title>Onboarding - Mi App</title>
<style>
#kycContainer {
max-width: 800px;
margin: 0 auto;
padding: 20px;
}
</style>
</head>
<body>
<div id="kycContainer">
<h1>Verificación de Identidad</h1>
<p>Complete el proceso de verificación para activar su cuenta</p>
<iframe
id="kycMosaic"
src="https://mosaic.sandbox.jaak.ai/"
width="100%"
height="600"
allow="camera; geolocation">
</iframe>
</div>
<script>
// Configuración
const config = {
steps: [
{ key: 'WELCOME' },
{ key: 'DOCUMENT_EXTRACT' },
{ key: 'DOCUMENT_VERIFY' },
{ key: 'IVERIFICATION' },
{ key: 'OTO' }
],
shortKey: 'ONBOARDING_KEY_123'
};
// Enviar configuración cuando cargue el iframe
window.addEventListener('load', function() {
setTimeout(() => {
document.getElementById('kycMosaic')
.contentWindow.postMessage({
type: 'CONFIG',
data: config
}, '*');
}, 1000);
});
// Manejar eventos
window.addEventListener('message', function(event) {
if (event.data.type === 'FLOW_COMPLETE') {
// Redirigir a dashboard
window.location.href = '/dashboard?verified=true';
}
});
</script>
</body>
</html>Caso 2: Verificación móvil (Direct)
// En una aplicación móvil o web app
class KYCVerification {
constructor(shortKey) {
this.shortKey = shortKey;
this.directWindow = null;
this.setupMessageListener();
}
setupMessageListener() {
window.addEventListener('message', (event) => {
this.handleMessage(event.data);
});
}
open() {
const url = 'https://mosaic.sandbox.jaak.ai/direct';
const features = 'width=800,height=600,scrollbars=yes,resizable=yes';
this.directWindow = window.open(url, 'kycVerification', features);
if (!this.directWindow) {
alert('Por favor permita ventanas emergentes para continuar');
return false;
}
return true;
}
handleMessage(message) {
switch(message.type) {
case 'READY':
this.sendConfiguration();
break;
case 'FLOW_COMPLETE':
this.onComplete(message.data);
break;
case 'ERROR':
this.onError(message.data);
break;
}
}
sendConfiguration() {
if (this.directWindow && !this.directWindow.closed) {
this.directWindow.postMessage({
type: 'CONFIG',
data: {
steps: [
{ key: 'DOCUMENT_EXTRACT' },
{ key: 'IVERIFICATION' },
{ key: 'OTO' }
],
shortKey: this.shortKey
}
}, '*');
}
}
onComplete(data) {
console.log('Verificación completada', data);
// Guardar resultados en tu backend
this.saveResults(data);
}
onError(error) {
console.error('Error en verificación', error);
alert('Hubo un error en la verificación. Por favor intente nuevamente.');
}
async saveResults(data) {
try {
const response = await fetch('/api/kyc/save', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
});
if (response.ok) {
window.location.href = '/verification-success';
}
} catch (error) {
console.error('Error guardando resultados', error);
}
}
}
// Uso
const kycBtn = document.getElementById('startKYC');
kycBtn.addEventListener('click', function() {
const kyc = new KYCVerification('MOBILE_KEY_456');
kyc.open();
});Caso 3: Campaña de email (Link)
// Script para generar enlaces de campaña
function generateCampaignLinks(campaign, recipients) {
const baseUrl = 'https://mosaic.sandbox.jaak.ai/link';
const campaignShortKey = 'CAMPAIGN_2025_001';
const links = recipients.map(recipient => {
const params = new URLSearchParams({
shortKey: campaignShortKey,
steps: 'DOCUMENT_EXTRACT,DOCUMENT_VERIFY,IVERIFICATION',
redirectUrl: `https://mi-app.com/campaign-complete?user=${recipient.id}&campaign=${campaign.id}`
});
return {
recipient: recipient.email,
link: `${baseUrl}?${params.toString()}`
};
});
return links;
}
// Generar enlaces para campaña
const campaign = {
id: 'onboarding-q1-2025',
name: 'Onboarding Q1 2025'
};
const recipients = [
{ id: 'user123', email: '[email protected]' },
{ id: 'user456', email: '[email protected]' }
];
const campaignLinks = generateCampaignLinks(campaign, recipients);
// Enviar emails
campaignLinks.forEach(item => {
sendEmail({
to: item.recipient,
subject: 'Complete su verificación de identidad',
body: `
Hola,
Para completar su registro, por favor complete el proceso de verificación
haciendo clic en el siguiente enlace:
${item.link}
Este enlace es válido por 30 días.
Saludos,
Equipo de Mi App
`
});
});
console.log('Enlaces de campaña generados:', campaignLinks);Mejores Prácticas
Seguridad
-
Proteja su Short Key
- No lo incluya en código del lado del cliente en producción
- Use variables de entorno o servicios de backend
- Rote las claves periódicamente
-
Valide el origen de mensajes (producción)
window.addEventListener('message', function(event) { // Validar origen en producción if (event.origin !== 'https://mosaic.jaak.ai') { console.warn('Mensaje de origen no confiable'); return; } // Procesar mensaje }); -
Use HTTPS siempre
- Obligatorio para acceso a cámara
- Protege la transmisión de datos sensibles
Experiencia de Usuario
-
Proporcione instrucciones claras
- Explique qué documentos se necesitan
- Indique los pasos del proceso
- Muestre tiempo estimado
-
Manejo de errores amigable
function handleKYCError(error) { const friendlyMessages = { 'AUTHENTICATION_FAILED': 'No pudimos verificar su sesión. Por favor intente nuevamente.', 'CAMERA_ACCESS_DENIED': 'Necesitamos acceso a su cámara para continuar.', 'DOCUMENT_NOT_DETECTED': 'No pudimos detectar el documento. Por favor intente de nuevo.' }; const message = friendlyMessages[error.error] || 'Ocurrió un error. Por favor intente nuevamente.'; showUserMessage(message); } -
Indicadores de progreso
window.addEventListener('message', function(event) { if (event.data.type === 'STEP_COMPLETE') { updateProgressBar(event.data.stepKey); } });
Rendimiento
-
Precargue el iframe (Embed)
<!-- Precargar en el head --> <link rel="preconnect" href="https://mosaic.sandbox.jaak.ai"> -
Maneje timeout de carga
let iframeLoaded = false; setTimeout(() => { if (!iframeLoaded) { showError('El servicio está tardando más de lo usual. Por favor recargue la página.'); } }, 10000); // 10 segundos
Testing
-
Ambiente de pruebas
- Use
https://mosaic.sandbox.jaak.ai/para pruebas - Solicite Short Keys de prueba
- Pruebe todos los flujos antes de producción
- Use
-
Casos de prueba recomendados
- Flujo completo exitoso
- Cancelación por usuario
- Pérdida de conexión
- Timeout de sesión
- Diferentes navegadores y dispositivos
Migración a Producción
Checklist pre-producción
- Short Key de producción obtenido
- URL actualizada a
https://mosaic.jaak.ai/ - HTTPS configurado en su dominio
- Validación de origen implementada
- Manejo de errores completo
- Testing en navegadores principales
- Testing en dispositivos móviles
- Documentación de integración revisada
- Plan de rollback preparado
- Monitoreo y logs configurados
Configuración de producción
// Configuración de producción recomendada
const PRODUCTION_CONFIG = {
mosaicUrl: 'https://mosaic.jaak.ai/',
shortKey: process.env.JAAK_SHORT_KEY, // Desde variable de entorno
allowedOrigins: ['https://mosaic.jaak.ai'],
timeout: 900000, // 15 minutos
retryAttempts: 3
};
// Uso seguro en producción
function initKYC() {
if (!PRODUCTION_CONFIG.shortKey) {
console.error('Short Key no configurado');
return;
}
// Continuar con inicialización...
}FAQ - Preguntas Frecuentes
¿Cuánto tiempo dura una sesión de KYC? Las sesiones tienen una duración de 14 minutos de inactividad. Después de este tiempo, la sesión expira y debe reiniciarse.
¿Puedo personalizar la apariencia de Mosaic? La modalidad Embed permite controlar el contenedor del iframe. El contenido interno de Mosaic no es personalizable para mantener consistencia y seguridad.
¿Qué documentos son soportados? JAAK KYC Mosaic soporta INE, pasaportes mexicanos, y otros documentos de identidad oficiales. Contacte a soporte para la lista completa.
¿Funciona en todos los navegadores? Sí, funciona en navegadores modernos (Chrome 80+, Firefox 75+, Safari 13+, Edge 80+) que soporten acceso a cámara.
¿Puedo usar Mosaic sin internet? No, Mosaic requiere conexión a internet activa para funcionar correctamente.
¿Los datos están seguros? Sí, todas las comunicaciones utilizan HTTPS y los datos son procesados siguiendo estándares de seguridad internacionales.
¿Puedo ejecutar pasos de forma independiente? Sí, puede configurar cualquier combinación de pasos. Algunos pasos como OTO requieren datos de pasos anteriores.
¿Qué pasa si el usuario cierra el navegador? Si el usuario cierra el navegador antes de completar, puede reiniciar el proceso. Los pasos completados se guardan durante la duración de la sesión (14 minutos).
Para más información, visite www.jaak.ai o contacte a [email protected]
Updated 23 days ago
