Flujo de Integración
Esta guía explica cómo integrar Boufin Connect mediante un iframe utilizando la librería IframeEmbed
, con autenticación por Token OTP y comunicación bidireccional mediante postMessage
. Además, detalla el proceso para obtener el consentId
, un paso clave en el flujo de integración.
Requisitos previos
Para la integración se requiere:
- Token OTP válido, obtenido desde el backend siguiendo la guía de Token OTP.
- URL de Boufin Connect.
- URL de la librería de embedding.
- Acceso a una página HTML o aplicación frontend donde integrar el iframe.
- Protocolo HTTPS habilitado.
Pasos para la integración
1. Incluir la librería de embedding
Agrega este script en el HTML o aplicación frontend del cliente para inicializar la clase IframeEmbed
:
<script src="https://iframe-embed.boufin.com/embed.js"></script>
Este script expondrá el constructor window.IframeEmbed
.
2. Crear el contenedor del Iframe
Define un <div>
donde se montará el iframe:
<div id="iframe-container" style="height: 80vh; border: 1px solid #ccc;"></div>
Es posible personalizar el style
según las necesidades específicas.
3. Inicializar y montar el Iframe
Utiliza JavaScript para crear una instancia de IframeEmbed
y montarla en el DOM:
const embed = new window.IframeEmbed({
containerId: 'iframe-container',
appUrl: 'https://localhost', // Reemplaza con la URL de Boufin Connect
iframeId: 'boufin-connect-iframe',
title: 'Boufin Connect'
});
embed.mount();
En la función mount()
es posible ajustar el número de reintentos (retries
) y el intervalo entre ellos (delay
) según las necesidades de la aplicación. Por defecto es retries = 3
y delay = 200
(en milisegundos).
4. Enviar el token de autenticación (OTP)
Una vez montado el iframe, envía el Token OTP al iframe para autenticar al usuario:
embed.sendMessage({
type: 'AUTH_TOKEN',
payload: {
token: 'TOKEN_OTP_AQUI'
}
});
En este punto, el Token OTP se envía mediante comunicación bidireccional usando postMessage
, lo que permite establecer una sesión segura entre la aplicación y Boufin Connect dentro del Iframe.
5. Obtener el consentId
Cuando el usuario completa el flujo de autorización dentro del iframe, Boufin Connect envía un mensaje con el consentId
. Configura un listener para manejar este evento:
embed.onMessage((data, event) => {
console.log('[Boufin Embed] Mensaje recibido:', data);
if (data.type === 'WIDGET_CONSENT') {
alert('Consentimiento recibido! ID: ' + data.payload.consentId);
}
});
La función onMessage
recibe dos parámetros:
data
: un objeto con la estructura{ type: string; payload: any }
event
: el objeto original del tipoMessageEvent
:::
Manejo de mensajes desde el Iframe
Boufin Connect puede enviar diferentes tipos de mensajes al frontend mediante postMessage
. Es importante manejar estos mensajes para garantizar una integración robusta.
Tipos de mensajes enviados por el Iframe
WIDGET CONSENT: Se envía cuando el proceso de conexión se completa exitosamente. Contiene el ID del consentimiento generado tras la validación exitosa.
{
"type": "WIDGET_CONSENT",
"payload": {
"consentId": "consent-abc123xyz"
}
}WIDGET CLOSE: Se envía cuando el usuario solicita cerrar el widget.
{
"type": "WIDGET_CLOSE"
}WIDGET ERROR: Se envía cuando ocurre un error crítico en Boufin Connect. Contiene información detallada del error.
{
"type": "WIDGET_ERROR",
"payload": {
"error": "NO_LINK_TOKEN: No link token received from parent"
}
}
Ejemplo completo de integración
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8" />
<title>Boufin Connect Embed</title>
</head>
<body>
<h2>Boufin Portal Web</h2>
<div
id="iframe-container"
style="height: 80vh; border: 1px solid #ccc;"
></div>
<!-- Incluir el script que contiene la clase IframeEmbed -->
<script src="https://iframe-embed.boufin.com/embed.js"></script>
<!-- Script de inicialización -->
<script>
const embed = new window.IframeEmbed({
containerId: 'iframe-container',
appUrl: 'https://localhost', // Reemplaza con la URL de Boufin Connect
iframeId: 'boufin-connect-iframe',
title: 'Boufin Connect'
});
embed.mount();
embed.sendMessage({
type: 'AUTH_TOKEN',
payload: {
token: 'TOKEN_OTP_AQUI'
}
});
embed.onMessage((data, event) => {
console.log('[Boufin Embed] Mensaje recibido:', data);
});
</script>
</body>
</html>
Notas importantes
- Los mensajes enviados antes de que el iframe esté listo se encolan y se envían automáticamente cuando el iframe se carga.
- Usa
onReady
para asegurarte de que el iframe está listo antes de enviar mensajes críticos. - El ciclo de vida está automatizado: el iframe se desmonta automáticamente si el contenedor desaparece.