Fácil de usar
100 % Gratis
Documentación para desarrolladores | API y Guía de Integración - Implementación estándar
Ejemplos de implementación
Go.cam ofrece dos ejemplos de implementación estándar, disponibles en PHP y JavaScript.
Verificación mediante biblioteca de redirección
Esta implementación genera una URL de verificación de Go.cam basada en tus claves de acceso.
Puede utilizarse en modo independiente si la verificación de edad debe ejecutarse en una nueva ventana del navegador o mediante una redirección.
Este método está diseñado para ser claro y fácil de seguir. A continuación se muestra una guía paso a paso.
Consejo: Puedes descargar un ejemplo de implementación desde tu cuenta de Go.cam.
Paso 1: Incluir el SDK de PHP
require_once 'avsPhpSdkV1.php';
Paso 2: Inicializar el SDK
Recupera las credenciales necesarias desde tu cuenta de Go.cam y edita el archivo config.php.
$config['partnerId'] = 0;
$config['cipherKey'] = '';
$config['hmacKey'] = '';
Inicializa la clase del SDK en el archivo index.php.
$avsInstance = new AvsPhpSdkV1(
$config['partnerId'],
$config['cipherKey'],
$config['hmacKey']
);
Paso 3: (Opcional) Definir el idioma
De forma predeterminada, la página de prueba se muestra en inglés. Idiomas compatibles:
Inglés, francés, alemán, neerlandés, italiano, portugués, español
$avsInstance->setLanguage(AvsPhpSdkV1::LANGUAGE_EN);
Paso 4: Definir la carga útil de la solicitud
Go.cam utiliza cifrado AES-256-CBC para una comunicación segura.
Para cada sesión, debes definir la carga útil, que puede incluir parámetros obligatorios y opcionales.
Ejemplo:
$avsInstance->fillRequest([
'userData' => [
// obligatorio: id interno del usuario del partner, utilizado para rastrear al usuario
'userId' => $userId,
// opcional: algunos datos personalizados que el partner desea incluir en esta sesión de verificación
'someCustomData' => true,
// opcional: colores personalizados para la interfaz del proceso de verificación de Go.cam
'colorConfig' => [
'body' => [
'background' => $colorConfigBodyBackground,
'foreground' => $colorConfigBodyForeground,
'button' => [
'background' => $colorConfigButtonBackground,
'foreground' => $colorConfigButtonForeground,
'foregroundCallToAction' => $colorConfigButtonForegroundCTA,
'backgroundFailure' => $colorConfigButtonBackgroundFailureInput,
'foregroundFailure' => $colorConfigButtonForegroundFailureInput,
'foregroundCallToActionFailure' => $colorConfigButtonForegroundCTAFailureInput,
]
],
] // opcional
],
'http' => [
'userAgent' => $userAgent,
'websiteHostname' => $websiteHostname,
'paramList' => [
// opcional: una forma de controlar si el número de edad detectado se muestra en pantalla durante el proceso de verificación de edad por selfie
'showDetectedAgeNumber' => $showDetectedAgeNumber,
// opcional: el tipo de verificación que deseas mostrar al usuario
// si no se especifica como parámetro o está vacío, todos los tipos serán visibles
'verificationTypeList' => array('creditCard', 'selfie', 'scanId', 'email'),
// opcional: el tipo de verificación que deseas seleccionar por defecto
'verificationTypeDefault' => 'selfie',
// opcional: usar la verificación por email como alternativa en caso de que falle la primera verificación elegida
'useEmailAsFallbackVerification' => true,
// opcional: una forma de controlar si la detección por selfie utilizará liveness avanzado (usa varias comprobaciones para detectar si la persona en la webcam es real)
'advancedLiveness' => $advancedLiveness,
]
],
// opcional: la versión de verificación de Go.cam
'verificationVersion' => AvsPhpSdkV1::VERIFICATION_VERSION_STANDARD_V1,
// obligatorio: la URL para volver al sitio del partner después de una verificación
'linkBack' => $linkBack,
// opcional: IP del usuario
'ipStr' => $userIp,
// opcional: código ISO del país del usuario
'countryCode' => $countryCode,
// opcional: código ISO del estado del usuario (utilizado principalmente para EE. UU.)
'stateCode' => $stateCode,
]);
Paso 5: Generar la URL de verificación
$verificationUrl = $avsInstance->toUrl();
Paso 6: Añadir un enlace en tu sitio web
"$verificationUrl; ?>" target="_blank">Iniciar verificación de edad
La URL de postback debe apuntar a tu backend, donde gestionarás los datos de callback enviados por Go.cam. Consulta la Referencia de datos de callback del backend para más detalles.
Verificación mediante biblioteca iframe
La biblioteca iframe se basa en la biblioteca de redirección, pero permite que Go.cam se ejecute como un iframe superpuesto. También proporciona control del ciclo de vida y gestión de eventos para el proceso de verificación.
Consejo: Puedes descargar un ejemplo de implementación desde tu cuenta de Go.cam.
Paso 1: Generar la URL del iframe
En lugar de toUrl(), llama a:
$verificationUrl = $avsInstance->toIframeUrl();
Paso 2: Incluir el SDK frontend
Paso 3: Añadir un botón de activación
disabled>
Abrir iframe de verificación
Paso 4: Inicializar el SDK frontend
var openVerificationIframeButton = document.querySelector('#openVerificationIframeButton');
var iframeUrl = ''; // generado desde PHP arriba
AvsJsSdk.V1.Config.create({ iframeLocationUrl: iframeUrl });
var avsInstance = new AvsJsSdk.V1.Core();
avsInstance.init();
Paso 5: Gestionar los eventos del SDK
El SDK activa eventos durante el proceso de verificación. Puedes escucharlos y reaccionar ante ellos:
avsInstance.onMessage = function (eventMessage) {
switch (eventMessage.name) {
// fase de comprobación: el iframe fue cargado
case AvsJsSdk.V1.Config.EVENT_ON_CHECK_IFRAME_LOADED:
// envía un evento al iframe para iniciar la fase de comprobación del proceso de verificación
avsInstance.emit(AvsJsSdk.V1.Config.EVENT_STATUS_REQUEST);
break;
// fase de comprobación: la verificación de edad fue exitosa en un proceso anterior, el usuario ya está verificado
case AvsJsSdk.V1.Config.EVENT_ON_INITIAL_VERIFICATION_SUCCESS:
// la carga útil de verificación es válida
if (eventMessage.data.isPayloadValid) {
// desactiva el botón "iniciar verificación"
openVerificationIframeButton.disabled = true;
return;
}
// la carga útil de verificación no es válida, continuar con el proceso de verificación
avsInstance.emit(AvsJsSdk.V1.Config.EVENT_RESOURCE_PRELOAD);
break;
// fase de comprobación: la verificación de edad no fue exitosa en un proceso anterior o no se ejecutó
case AvsJsSdk.V1.Config.EVENT_ON_INITIAL_VERIFICATION_NOT_FOUND:
// la fase de comprobación falló, continuar con la fase de verificación, enviar un evento para iniciar la precarga de recursos
avsInstance.emit(AvsJsSdk.V1.Config.EVENT_RESOURCE_PRELOAD);
break;
// fase de verificación: los recursos del iframe fueron cargados
case AvsJsSdk.V1.Config.EVENT_ON_RESOURCES_LOADED:
// activa el botón "iniciar verificación"
openVerificationIframeButton.disabled = false;
// adjunta un evento click al botón "iniciar verificación"
openVerificationIframeButton.addEventListener('click', function () {
// muestra el iframe de verificación como superposición
avsInstance.iframeInstance.expand();
});
break;
// fase de verificación: se hizo clic en el botón de cierre del iframe
case AvsJsSdk.V1.Config.EVENT_ON_CLOSE_IFRAME:
// oculta la superposición del iframe de verificación (sigue ejecutándose en segundo plano)
avsInstance.iframeInstance.collapse();
break;
// fase de verificación: el proceso de verificación fue exitoso
case AvsJsSdk.V1.Config.EVENT_ON_VERIFICATION_SUCCESS:
// desactiva el botón "iniciar verificación"
openVerificationIframeButton.disabled = true;
break;
}
}
Referencia de eventos del SDK frontend
Al utilizar la biblioteca iframe, el SDK puede activar los siguientes eventos:
- EVENT_ON_CHECK_IFRAME_LOADED – Documento iframe listo.
- EVENT_STATUS_REQUEST – Solicitar el estado actual de verificación.
- EVENT_ON_INITIAL_VERIFICATION_SUCCESS – Verificación previa encontrada (cookie presente).
- EVENT_ON_INITIAL_VERIFICATION_NOT_FOUND – No se encontró ninguna verificación.
- EVENT_RESOURCE_PRELOAD – Iniciar la carga de recursos de verificación.
- EVENT_ON_INITIAL_VERIFICATION_FATAL_ERROR – Claves inválidas o fallo en la carga de recursos.
- EVENT_ON_START_PAGE_LOADED – Página de verificación cargada (los recursos siguen cargándose).
- EVENT_ON_RESOURCES_LOADED – Recursos de verificación completamente cargados.
- EVENT_ON_CLOSE_IFRAME – Superposición iframe cerrada.
- EVENT_ON_VERIFICATION_SUCCESS – Verificación exitosa.
- EVENT_ON_VERIFICATION_ERROR – La verificación falló.
Datos de la URL de callback del backend
Después de cada intento de verificación (éxito o fallo), Go.cam envía un postback servidor a servidor para notificar a tu backend del resultado.
El postback se entrega como un array con campos que describen la sesión de verificación y su resultado.
Ejemplo de payload
[
'userData' => [
'userId' => 123,
'colorConfig' => [
'body' => [
'background' => '#900',
'foreground' => '#fff',
'button' => [
'background' => '#fb0',
'foreground' => '#333',
'foregroundCallToAction' => '#700',
'backgroundFailure' => '#fb0',
'foregroundFailure' => '#333',
'foregroundCallToActionFailure' => '#700',
]
]
]
],
'state' => 'Success',
'stateInt' => 2,
'sessionId' => 12345,
'errorCode' => 0,
'deviceType' => 1,
'stepId' => 2,
'websiteHostname' => 'your-site-name.cam',
'ip' => '127.0.0.1',
]
Referencia de campos
state
Indica si la verificación fue exitosa.
| Valor posible | Significado |
|---|---|
| Success | la verificación fue exitosa |
| Fail | la verificación falló |
stateInt
Representación numérica del estado de verificación.
| Valor posible | Significado |
|---|---|
| 0 | desconocido |
| 1 | Prueba no iniciada o abortada |
| 2 | Éxito |
| 3 | Fallido |
| 4 | Enlace expirado |
| 5 | Enlace ya utilizado |
sessionId
Identificador único de la sesión de verificación.
Ejemplo: 12345
errorCode
Código de error si la verificación falló.
| Valor posible | Significado |
|---|---|
| 0 | Sin error |
| 25001 | El dispositivo no es compatible |
| 25032 | Falló la precarga de recursos de verificación (recursos de face api) |
| 25033 | Falló la precarga de recursos de verificación (recursos de tesseract) |
| 25034 | No se pudo recuperar la lista de cámaras del dispositivo (paso de selección de cámara en detección por selfie) |
| 25055 | No se pudieron detectar suficientes rostros en el vídeo del dispositivo (la edad detectada es 0) |
| 25056 | Falló la comprobación de similitud facial (comparación de todos los rostros selfie) |
| 25057 | No se pudieron detectar suficientes rostros en el vídeo del dispositivo (0 rostros detectados) |
| 25070 | No se detectaron rostros |
| 25061 | No se pudieron detectar suficientes rostros en el vídeo del dispositivo (fallo en la comprobación de expresión) |
| 25062 | Falló la comprobación de similitud facial (comparación de rostros por expresión) |
| 25047 | Error de inicialización de la webcam (paso de detección por selfie) |
| 25035 | No se pudieron inicializar las bibliotecas de detección (paso de detección por selfie -> detector face api) |
| 25036 | No se pudieron inicializar las bibliotecas de detección (paso de detección por selfie -> modelo de edad face api) |
| 25037 | No se pudieron inicializar las bibliotecas de detección (paso de detección por selfie -> modelo de reconocimiento face api) |
| 25038 | No se pudieron inicializar las bibliotecas de detección (paso de detección por selfie -> modelo de puntos faciales face api) |
| 25058 | No se pudieron inicializar las bibliotecas de detección (paso de detección por selfie -> modelo de expresión face api) |
| 25067 | Falló la comprobación de coincidencia facial de liveness |
| 25069 | Falló la comprobación de coincidencia facial de liveness |
| 25085 | Falló la comprobación de coincidencia facial de liveness |
| 25086 | Falló la comprobación de coincidencia facial de liveness |
| 25068 | Falló la comprobación de liveness |
| 25039 | No se pudo recuperar la lista de cámaras del dispositivo (paso de selección de cámara en detección de documento) |
| 25040 | No se pudieron inicializar las bibliotecas de detección (paso de detección de documento -> worker de tesseract) |
| 25041 | No se pudieron inicializar las bibliotecas de detección (paso de detección de documento -> modelo de idioma de tesseract) |
| 25042 | No se pudieron inicializar las bibliotecas de detección (paso de detección de documento -> inicialización de idioma de tesseract) |
| 25043 | No se pudieron inicializar las bibliotecas de detección (paso de detección de documento -> configuración del worker de tesseract) |
| 25044 | No se pudieron inicializar las bibliotecas de detección (paso de detección de documento -> detector face api) |
| 25045 | No se pudieron inicializar las bibliotecas de detección (paso de detección de documento -> modelo de reconocimiento face api) |
| 25091 | No se pudieron inicializar las bibliotecas de detección (paso de detección de documento -> modelo yolo) |
| 25051 | No se pudo extraer un rostro de tu documento de identidad |
| 25052 | El rostro selfie no coincide con el encontrado en el documento de identidad |
| 25053 | La edad detectada es inferior a 18 años (paso de detección de documento) |
| 25075 | La edad detectada es inferior a 18 años (paso de detección por selfie) |
| 25054 | No se pudo extraer tu edad del documento de identidad actual |
| 25090 | No se pudo extraer tu edad del documento de identidad actual (paso yolo) |
| 25046 | Error de inicialización de la webcam (paso de detección de documento) |
| 20056 | Datos enviados inválidos para la verificación de edad por email |
| 20051 | Respuesta de captcha no válida |
| 20052 | Falló la comprobación del captcha |
| 20053 | El email no es apto |
| 20058 | Error en la respuesta de elegibilidad del email |
| 20054 | No se pudo enviar el código de verificación de edad por email |
| 20057 | Datos enviados inválidos del código de verificación |
| 20055 | Falló la comprobación del código de verificación |
| 20061 | Dirección de correo electrónico no válida |
| 20002 | Tiempo máximo permitido de la prueba expirado (callback de éxito de la prueba) |
| 20004 | Id de paso no válido (callback de éxito de la prueba) |
| 20000 | Token no válido (callback de éxito de la prueba) |
| 20034 | Respuesta curl de xcore api no válida (callback de éxito de la prueba) |
| 20003 | Tiempo máximo permitido de la prueba expirado (callback de fallo de la prueba) |
| 20005 | Id de paso no válido (callback de fallo de la prueba) |
| 20001 | Token no válido (callback de fallo de la prueba) |
| 20035 | Respuesta curl de xcore api no válida (callback de fallo de la prueba) |
| 20036 | La edad detectada es inferior a 18 años |
| 18001 | Error interno en la verificación con tarjeta de crédito |
| 18002 | Error de MaxMind en la verificación con tarjeta de crédito |
deviceType
Tipo de dispositivo utilizado.
| Valor posible | Significado |
|---|---|
| 0 | desconocido |
| 1 | móvil |
| 2 | escritorio |
stepId
Etapa del proceso de verificación.
| Valor posible | Significado |
|---|---|
| 0 | desconocido |
| 1 | Prueba no iniciada o abortada |
| 2 | Éxito |
| 3 | Fallido |
| 4 | Enlace expirado |
| 5 | Enlace ya utilizado |
idCountry
Código ISO del país del documento de identidad proporcionado.
Ejemplo: FR
idState
Código ISO del estado del documento de identidad proporcionado (utilizado principalmente para EE. UU.).
Ejemplo: TX
idType
Tipo de documento de identidad.
| Valor posible | Significado |
|---|---|
| 1 | Documento de identidad |
| 2 | Pasaporte |
| 3 | Permiso de conducir |
websiteHostname
Nombre de host del sitio web donde se inició la verificación.
Ejemplo: your-site-name.cam
ip
Dirección IP del dispositivo del usuario.
Ejemplo: 127.0.0.1
Proteja su negocio, sus usuarios y su reputación
Elige GO.cam, la solución de verificación de edad sencilla y certificada en la que confían los operadores de sitios web de hoy en día.
¡Empieza hoy mismo!