Fase de Integración

NeoCheck proporciona una API REST JSON intuitiva y poderosa para integrar verificaciones conformes con KYC (Know Your Customer) y AML (Anti Money Laundering) en tu negocio o aplicación. Esta referencia de API proporciona información sobre los endpoints disponibles y cómo interactuar con ellos.

Para especificaciones técnicas detalladas, visita nuestro portal Swagger: https://neocheck.net/api/index.html

Autenticación API

El acceso a la API de NeoCheck está protegido mediante tokens de autorización OAuth2. Para autenticar tus solicitudes, debes llamar a la solicitud de autenticación con un nombre de usuario y una contraseña válidos. Estos serán entregados por el equipo de de NeoCheck. El endpoint en cuestión es: /api/authorization/token

Nota: Los parámetros apiKey y apiSecret están obsoletos. Simplemente déjalos vacíos ya que el contenido se ignora y solo persisten para mantener la compatibilidad con versiones anteriores.

Video identificación

Luego de la autenticación se debe llamar al endpoint /api/v1/VideoIdentifications/unattended/link, con el cual se obtendrá el link que se debe utilizar en el parámetro KYC_URL del plugin.

Detalles del request

En el Headers, se deben configurar los siguientes parámetros:

  • Authorization: Se debe colocar el token obtenido en el request anterior de autenticación. Ejemplo: Bearer TU_ACCESS_TOKEN
  • Content-Type: Se debe colocar el tipo de contenido correspondiente, application/json

En el body, se pueden configurar los siguientes parámetros:

  • logoUrl: (String)
    • Descripción: URL de la imagen del logotipo que se mostrará durante la video identificación.
    • Ejemplo: «https://example.com/logo.png»
  • redirectUrlOk: (String)
    • Descripción: URL a la que se redirigirá al usuario después de una verificación exitosa.
    • Ejemplo: «https://example.com/success»
  • redirectUrlKo: (String)
    • Descripción: URL a la que se redirigirá al usuario después de una verificación fallida.
    • Ejemplo: «https://example.com/failure»
  • companyName: (String)
    • Descripción: Nombre de la compañía que aparecerá en la interfaz de usuario.
    • Ejemplo: «Mi Empresa»
  • fontUrl: (String)
    • Descripción: URL de la fuente que se utilizará para el texto en la interfaz de usuario.
    • Ejemplo: «https://example.com/font.ttf»
  • fontSizeTitle: (String)
    • Descripción: Tamaño de la fuente para los títulos.
    • Ejemplo: «20px»
  • fontSizeSubtitle: (String)
    • Descripción: Tamaño de la fuente para los subtítulos.
    • Ejemplo: «16px»
  • backgroundColor: (String)
    • Descripción: Color de fondo de la interfaz de usuario en formato hexadecimal.
    • Ejemplo: «#FFFFFF»
  • mainColor: (String)
    • Descripción: Color principal utilizado en la interfaz de usuario en formato hexadecimal.
    • Ejemplo: «#000000»
  • secondaryColor: (String)
    • Descripción: Color secundario utilizado en la interfaz de usuario en formato hexadecimal.
    • Ejemplo: «#CCCCCC»
  • buttonColor: (String)
    • Descripción: Color de los botones en la interfaz de usuario en formato hexadecimal.
    • Ejemplo: «#FF5733»
  • buttonTextColor: (String)
    • Descripción: Color del texto de los botones en formato hexadecimal.
    • Ejemplo: «#FFFFFF»
  • buttonBorderRadius: (Integer)
    • Descripción: Radio del borde de los botones para hacerlos más redondeados. 0 son bordes cuadrados y 20 son bordes redondeados
    • Ejemplo: 10
  • language: (String)
    • Descripción: Idioma de la interfaz de usuario. Si se deja nulo, se detectara el lenguaje del navegador.
    • Ejemplo: «es» para español, «en» para inglés.
  • linkExpirationHours: (Integer)
    • Descripción: Tiempo en horas antes de que el enlace para la videoidentificación expire.
    • Ejemplo: 48
  • showFaceLandmarks: (Boolean)
    • Descripción: Indica si se deben mostrar los puntos de referencia faciales durante la videoidentificación.
    • Ejemplo: true
  • selfieCamera: (Integer)
    • Descripción: Indica qué cámara usar para la selfie (0 para la cámara frontal, 1 para la trasera).
    • Ejemplo: 0
  • performLivenessDetection: (Boolean)
    • Descripción: Indica si se debe realizar la detección de vivacidad.
    • Ejemplo: true
  • notificationApiUrl: (String)
    • Descripción: URL a la que se enviarán las notificaciones de estado de la videoidentificación.
    • Ejemplo: «https://example.com/api/notifications»
  • notificationIncludeBinaries: (Boolean)
    • Descripción: Indica si se deben incluir archivos binarios (imágenes, videos) en las notificaciones.
    • Ejemplo: true
  • recordVideo: (Boolean)
    • Descripción: Indica si se debe grabar un video durante la videoidentificación.
    • Ejemplo: true
  • recordAudio: (Boolean)
    • Descripción: Indica si se debe grabar audio durante la videoidentificación.
    • Ejemplo: true
  • hidePrivacyChecks: (Boolean)
    • Descripción: Indica si se deben ocultar los controles de privacidad.
    • Ejemplo: true
  • showBackButton: (Boolean)
    • Descripción: Indica si se debe mostrar un botón de retroceso.
    • Ejemplo: true
  • minimumCameraResolution: (Integer)
    • Descripción: Resolución mínima requerida para la cámara.
    • Ejemplo: 720
  • redirectToMobile: (Boolean)
    • Descripción: Indica si se debe redirigir a la versión móvil de la video identificación.
    • Ejemplo: true
  • allowContinueOnQrCode: (Boolean)
    • Descripción: Permite continuar la video identificación escaneando un código QR.
    • Ejemplo: true
  • termsAndConditionsUrls: (Array of Objects)
    • Descripción: Lista de URLs para los términos y condiciones, con su respectivo idioma.
    • Ejemplo:
[
  {
    "language": "es",
    "url": "https://example.com/terms-es"
  },
  {
    "language": "en",
    "url": "https://example.com/terms-en"
  }
]
  • privacyPolicyUrls: (Array of Objects)
    • Descripción: Lista de URLs para las políticas de privacidad, con su respectivo idioma.
    • Ejemplo: Seria la misma estructura de termsAndConditionsUrls pero con los url de las políticas de privacidad
  • unattendedStepWaitTime: (Integer)
    • Descripción: Tiempo de espera en segundos para cada paso de la video identificación unattended.
    • Ejemplo: 30
  • sendToReview: (Boolean)
    • Descripción: Indica si la videoidentificación debe enviarse a revisión manual.
    • Ejemplo: true
  • performDocumentVerification: (Boolean)
    • Descripción: Indica si se debe realizar la verificación del documento de identidad.
    • Ejemplo: true
  • performAddressCheck: (Boolean)
    • Descripción: Indica si se debe realizar la verificación de la dirección.
    • Ejemplo: true
  • avoidControlListCheck: (Boolean)
    • Descripción: Indica si se debe evitar la verificación contra listas de control.
    • Ejemplo: true
  • skipDocumentSelection: (Boolean)
    • Descripción: Permite omitir la selección del tipo de documento durante la video identificación.
    • Ejemplo: true
  • skipCaptureSelfie: (Boolean)
    • Descripción: Permite omitir la captura de selfie.
    • Ejemplo: true
  • allowManualCaptureForWebcam: (Boolean)
    • Descripción: Permite la captura manual de imágenes utilizando la cámara web.
    • Ejemplo: true
  • disableManualImagesUpload: (Boolean)
    • Descripción: Desactiva la carga manual de imágenes.
    • Ejemplo: true
  • documentCaptureWorkflow: (Object)
    • Descripción: Define el flujo de captura del documento. Cada captura puede tener múltiples pasos definidos por números enteros.
    • Ejemplo:
{
  "capture1": [0],
  "capture2": [0]
}
VideoIdentificationDocumentTypesinteger($int32)
0 = NotSet
1 = Passport
2 = IdCard
3 = DriverLicense

Ejemplo completo del body

{
  "logoUrl": "https://example.com/logo.png",
  "redirectUrlOk": "https://example.com/success",
  "redirectUrlKo": "https://example.com/failure",
  "companyName": "Mi Empresa",
  "fontUrl": "https://example.com/font.ttf",
  "fontSizeTitle": "20px",
  "fontSizeSubtitle": "16px",
  "backgroundColor": "#FFFFFF",
  "mainColor": "#000000",
  "secondaryColor": "#CCCCCC",
  "buttonColor": "#FF5733",
  "buttonTextColor": "#FFFFFF",
  "buttonBorderRadius": 10,
  "language": "es",
  "linkExpirationHours": 48,
  "showFaceLandmarks": true,
  "selfieCamera": 0,
  "performLivenessDetection": true,
  "notificationApiUrl": "https://example.com/api/notifications",
  "notificationIncludeBinaries": true,
  "recordVideo": true,
  "recordAudio": true,
  "hidePrivacyChecks": true,
  "showBackButton": true,
  "minimumCameraResolution": 720,
  "redirectToMobile": true,
  "allowContinueOnQrCode": true,
  "termsAndConditionsUrls": [
    {
      "language": "es",
      "url": "https://example.com/terms-es"
    },
    {
      "language": "en",
      "url": "https://example.com/terms-en"
    }
  ],
  "privacyPolicyUrls": [
    {
      "language": "es",
      "url": "https://example.com/privacy-es"
    },
    {
      "language": "en",
      "url": "https://example.com/privacy-en"
    }
  ],
  "unattendedStepWaitTime": 30,
  "sendToReview": true,
  "performDocumentVerification": true,
  "performAddressCheck": true,
  "avoidControlListCheck": true,
  "skipDocumentSelection": true,
  "skipCaptureSelfie": true,
  "allowManualCaptureForWebcam": true,
  "disableManualImagesUpload": true,
  "documentCaptureWorkflow": {
    "capture1": [0],
    "capture2": [0]
  }
}

Nota: Ningún parámetro del body es obligatorio. Los parámetros que se envíen como nulos o no se envíen en la request, se les colocara los parámetros configurados desde el backoffice. Véase Configuración de Procesos.

Si dichos parámetros no están configurados en el backoffice, se les aplicara un valor por defecto, no generara un error en la solicitud.

Manejo de errores

La API de Neocheck devuelve códigos de estado HTTP estándar para indicar el éxito o el fallo de una solicitud. Aquí algunos ejemplos comunes:

  • 200 OK: La solicitud fue exitosa.
  • 401 Unauthorized: La autenticación falló o la clave de API es inválida. Se debe revisar el token que se esta colocando para la request.
  • 404 Not Found: El recurso solicitado no se encontró. Se debe revisar el endpoint al cual se esta apuntando

Plugin Web

El proceso KYC & AML de NeoCheck se proporciona como un complemento web personalizable y adaptable que se puede integrar fácilmente en la página web del cliente utilizando HTML y JavaScript simples. La solicitud de la API para iniciar un proceso KYC devuelve una URL que se puede integrar directamente en cualquier página web, para cualquier dispositivo.

El complemento web de NeoCheck es altamente configurable: pasos del flujo de trabajo, personalización de la apariencia y sensación de la empresa, redirecciones de URL, callback de resultados de la API, etc. La personalización se puede configurar a nivel de empresa o para cada proceso, configurando la personalización como parte de la llamada de solicitud de la API.

El complemento web de NeoCheck es adaptable y se ajusta a la interfaz de usuario de móviles y tabletas.

Cuando se muestra en una computadora de escritorio, se puede incrustar como parte de cualquier página web.
Para dispositivos móviles, es necesario mostrarlo en una página vacía para asegurar el redimensionamiento correcto de la pantalla. El complemento web de NeoCheck notifica a la página web contenedora a través de eventos JavaScript, por lo que con unas pocas líneas es posible estar informado automáticamente sobre el estado del proceso (finalizado correctamente, fallo de acceso a la cámara, renuncia del cliente, etc.).

Como se puede observar en el código HTML hay 3 variables a configurar:

  • KYC_URL: es el URL que viene como respuesta a la request del endpoint (/api/v1/VideoIdentifications/unattended/link)
  • ERROR_PAGE: URL donde se redirigirá al usuario en caso de que la verificación falle
  • OK_PAGE: Se configura la URL en la cual será dirigido el usuario cuando la verificación finalice correctamente