Sistema de verificación de la edad

Fácil de usar
100 % Gratis

Recomendado por

ASACP - Asociación de Lugares que Abogan por la Protección Infantil
MojoHost – proveedor de hosting premium

Audited

GDPR EU Compliant GDPR
Sistema de verificación de edad 100 % gratuito

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



				

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!

Demostración en línea

SUPPORT

Para integrar go.cam en tu página web, ponte en contacto con nosotros por correo electrónico en

Para solicitudes de eliminación de datos personales, póngase en contacto con .

Copyright 2025 GSI Développement SaS