Saltar al contenido principal
ShieldID

Webhooks e integraciones

Webhooks de verificación de identidad, una página alojada y un widget.

Envíe a un solicitante a una página de verificación alojada o integre el widget en su propio flujo, reciba un webhook firmado en el momento en que haya un resultado, y permita que cualquiera con el enlace lo confirme en una página pública de verificación de credenciales. Una integración de API de KYC pensada para ponerse en marcha en una tarde.

  • Callbacks firmados con HMAC-SHA256
  • Traspaso por QR del escritorio al teléfono
  • Las sesiones del entorno de pruebas (sandbox) nunca se facturan

Página de verificación alojada

Un solo enlace realiza todo el flujo.

Cree una sesión mediante la API y recibirá una URL de verificación. Envíela por correo electrónico, mensaje de texto o dentro de su propia aplicación; la página se encarga del resto.

Computadora de escritorio

El solicitante abre el enlace en su escritorio.

Transferencia por QR

La página muestra un código QR y una breve tarjeta de instrucciones.

Captura desde el teléfono

Al escanearlo, la misma sesión pasa a la captura del documento y la selfie.

Verificado

La sesión llega a VERIFIED, todavía en el teléfono.

De vuelta a usted

Una redirección a su URL de retorno, más un webhook firmado, en cualquier caso.

Funciona como una redirección de pago

El solicitante llega a una página en la URL propia de su sesión. Sin cuenta y sin aplicación que instalar.

Traspaso por QR, del escritorio al teléfono

Cuando se abre en un escritorio, la página muestra un código QR y una breve tarjeta de instrucciones en lugar de solicitar acceso a la cámara. Al escanearlo se abre el mismo enlace en el teléfono, que pasa directamente a la captura del documento y del selfie.

Regresa a usted, con la respuesta

Una vez que la sesión alcanza el estado VERIFIED, la página redirige a su URL de retorno con el ID de sesión y el estado agregados, para que su aplicación sepa qué ocurrió sin esperar nada más.

Con su marca, en los planes que califiquen

El nombre de su empresa, logotipo, color de acento y enlaces de términos y de privacidad, aplicados a la página alojada y a la página de verificación de credenciales.

Webhooks

Un callback firmado, en el momento en que hay un resultado.

Indíquenos una URL de webhook al crear una sesión y le enviaremos el resultado en cuanto la sesión termine, sin necesidad de consultas periódicas.

Firmado, no solo enviado

Cada entrega incluye un encabezado X-Bio-Signature: un HMAC-SHA256 del cuerpo de la solicitud, para que pueda comprobar que proviene de nosotros antes de confiar en ella.

Con reintentos, no de enviar y olvidar

Una entrega que falla se reintenta tres veces, con una espera más larga antes de cada intento.

Cada intento queda registrado

Ya sea que tenga éxito o falle, conservamos de nuestro lado un registro del intento.

Próximamente Próximamente habrá un registro de entregas dentro del portal para que usted mismo pueda ver cada intento.

Considere el VERIFIED más reciente como la verdad

Los reintentos implican que una entrega puede, en casos poco frecuentes, llegar fuera de orden. No base su lógica en la recepción de un webhook; hágalo en el ID de sesión, y permita que un VERIFIED posterior sobrescriba uno anterior. Si mantiene su propio estado, elimine duplicados por ID de sesión en lugar de por recepción de webhook.

Verifique la firma

Confíe en la carga útil antes de actuar sobre ella.

Recalcule el HMAC-SHA256 sobre el cuerpo sin procesar de la solicitud y compárelo con X-Bio-Signature antes de analizar cualquier dato.

javascript
const crypto = require("crypto");

function verifySignature(rawBody, signatureHeader, secret) {
  const expected = crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(expected, "hex");
  const b = Buffer.from(signatureHeader || "", "hex");
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

// Read the raw body — don't let a JSON body-parser touch it first.
app.post("/hooks/shieldid", express.raw({ type: "application/json" }), (req, res) => {
  const signature = req.header("X-Bio-Signature") || "";
  if (!verifySignature(req.body, signature, process.env.SHIELDID_WEBHOOK_SECRET)) {
    return res.status(401).send("invalid signature");
  }
  const event = JSON.parse(req.body);
  // Treat the latest VERIFIED status as authoritative; de-duplicate by session_id.
  res.status(200).send("ok");
});

Widget de JS

El flujo alojado, integrado en su propia página.

El widget crea una sesión y muestra el mismo flujo alojado dentro de la página, en un iframe, de modo que los solicitantes nunca salen de su sitio.

  • Se muestra en un iframe con acceso a la cámara y al micrófono, ajustado al tamaño de su contenedor.
  • Lee el estado de la sesión de la misma manera que lo hace la página alojada: a través de su URL de retorno y su webhook, una vez que la sesión termina.

Próximamente Las devoluciones de llamada de finalización dentro de la página (onComplete, onCancel, onStep, cambio de tamaño automático) llegarán próximamente. Mientras tanto, use return_url y webhooks para saber cuándo termina una sesión: funcionan hoy.

Antes de llevar esto a producción

Actualmente el widget acepta una clave de API directamente en el navegador. Considérelo una comodidad del entorno de pruebas (sandbox), no un patrón para producción: cree la sesión desde su propio backend manteniendo su clave del lado del servidor, y entregue al widget solo la sesión resultante, nunca una clave activa que el navegador de un visitante pueda leer.

html
<script src="https://cdn.shieldid.ca/sdk/v1/widget.js"></script>
<div id="shieldid-verify"></div>
<script>
  TLVerify.init({
    apiKey: "vk_sand_your_key", // sandbox only — see the note above for production
    containerId: "shieldid-verify",
    returnUrl: "https://yourapp.example/verified",
    webhookUrl: "https://yourapp.example/hooks/shieldid",
    locale: "en",
  });
</script>

Página de verificación de credenciales

Una página pública para una sesión verificada.

Una vez que una sesión alcanza VERIFIED, su propio enlace de verificación de credenciales muestra una confirmación en lenguaje sencillo: el nombre del solicitante, el tipo de documento y el estado. Cualquier persona con el enlace —un cofirmante, un recepcionista, una contraparte— puede confirmar el resultado sin iniciar sesión en su panel.

Jordan Reyes

Datos de ejemplo

Licencia de conducir de California

Verificado

  • No se requiere iniciar sesión para verla.
  • Nunca aparece en ella una imagen de documento sin procesar ni una puntuación de confianza: solo un estado y la identidad, nada más.
  • Con la misma marca que la página alojada, en los planes que califiquen.

Patrones de integración

Cómo conectan esto seis tipos de negocios.

Los componentes son los mismos en todas partes: una sesión, un enlace o un widget, y un webhook. El patrón que más le conviene cambia según cómo y cuándo necesite la respuesta.

Alquiler y administración de propiedades

Envíe el enlace alojado en el mismo correo electrónico que la solicitud de arrendamiento. El webhook cambia al solicitante a verificado en su sistema antes de que usted revise el expediente.

Servicios legales y despachos de abogados

Envíe el enlace durante la admisión del cliente y guarde el comprobante del webhook en el expediente, de modo que la identificación del cliente quede registrada antes de que comience el contrato de servicios.

Asociaciones de condominios y HOA

Enlace desde el formulario de registro de propietarios o inquilinos que la junta ya utiliza; el resultado llega antes de que la unidad se agregue al registro.

Fintech y préstamos

El webhook activa automáticamente su propio paso de evaluación de riesgos, de modo que un solicitante nunca espera a que una persona note que llegó un resultado.

Marketplaces y plataformas gig

Incorpore el widget en el proceso de alta de vendedores o conductores para un flujo que nunca sale de su aplicación; cree la sesión desde su backend, como se recomienda arriba.

E-signature

Ejecute el flujo alojado antes de que comience la ceremonia de firma y condicione la entrega de documentos al webhook, no a la palabra del propio solicitante.

Preguntas

Respuestas claras sobre la integración.

Comience ahora

Configure un webhook. Véalo en acción.

Cree una sesión en el entorno de pruebas (sandbox) con una URL de webhook, ejecute una verificación en su propio teléfono y lea el callback firmado que se envía.