Système de vérification de l'âge

Facile et sécurisé
100% Gratuit

Recommandé par

ASACP – Association des sites œuvrant pour la protection de l’enfance
MojoHost – hébergeur web premium

Audité

GDPR EU Compliant GDPR
Système de vérification d’âge 100 % gratuit

Documentation développeur | API & Guide d’intégration - Implémentation standard

Exemples d’implémentation

Go.cam propose deux exemples d’implémentation standard, disponibles en PHP et en JavaScript.

Vérification via la bibliothèque de redirection

Cette implémentation génère une URL de vérification Go.cam à partir de vos clés d’accès.

Elle peut être utilisée en mode autonome si la vérification d’âge doit s’exécuter dans une nouvelle fenêtre du navigateur ou via une redirection.

Cette méthode est conçue pour être simple et facile à suivre. Vous trouverez ci-dessous un guide pas à pas.

Astuce : Un exemple d’implémentation peut être téléchargé depuis votre compte Go.cam.

Étape 1 : Inclure le SDK PHP


require_once 'avsPhpSdkV1.php';
				

Étape 2 : Initialiser le SDK

Récupérez les identifiants requis depuis votre compte Go.cam et modifiez le fichier config.php.


$config['partnerId'] = 0;
$config['cipherKey'] = '';
$config['hmacKey']   = '';
				

Initialisez la classe SDK dans le fichier index.php.


$avsInstance = new AvsPhpSdkV1(
	$config['partnerId'],
	$config['cipherKey'],
	$config['hmacKey']
);
				

Étape 3 : (Optionnel) Définir la langue

Par défaut, la page de test s’affiche en anglais. Langues prises en charge :

Anglais, français, allemand, néerlandais, italien, portugais, espagnol


$avsInstance->setLanguage(AvsPhpSdkV1::LANGUAGE_EN);
				

Étape 4 : Définir le payload de la requête

Go.cam utilise le chiffrement AES-256-CBC pour sécuriser les communications.

Pour chaque session, vous devez définir le payload, qui peut inclure des paramètres obligatoires et optionnels.

Exemple :


$avsInstance->fillRequest([
        'userData' => [
        // obligatoire : identifiant utilisateur interne du partenaire, utilisé pour suivre l’utilisateur
        'userId' => $userId,
        // optionnel : données personnalisées que le partenaire souhaite inclure dans cette session de vérification
        'someCustomData' => true,
        // optionnel : couleurs personnalisées pour l’interface du processus de vérification Go.cam
        'colorConfig' => [
			'body' => [
				'background' => $colorConfigBodyBackground,
				'foreground' => $colorConfigBodyForeground,
				'button' => [
					'background' => $colorConfigButtonBackground,
					'foreground' => $colorConfigButtonForeground,
					'foregroundCallToAction' => $colorConfigButtonForegroundCTA,
					'backgroundFailure' => $colorConfigButtonBackgroundFailureInput,
					'foregroundFailure' => $colorConfigButtonForegroundFailureInput,
					'foregroundCallToActionFailure' => $colorConfigButtonForegroundCTAFailureInput,
				]
			],
		] // optionnel
    ],
    'http' => [
        'userAgent' => $userAgent,
        'websiteHostname' => $websiteHostname,
        'paramList' => [
			// optionnel : permet de contrôler l’affichage du chiffre d’âge détecté à l’écran pendant le processus de détection d’âge par selfie
			'showDetectedAgeNumber' => $showDetectedAgeNumber,
			// optionnel : le type de vérification que vous souhaitez afficher à l’utilisateur
			// si ce paramètre n’est pas défini ou s’il est vide, tous les types seront visibles
			'verificationTypeList' => array('creditCard', 'selfie', 'scanId', 'email'),
			// optionnel : le type de vérification à sélectionner par défaut
			'verificationTypeDefault' => 'selfie',
			// optionnel : utiliser la vérification par e-mail comme solution de secours si la première vérification choisie échoue
			'useEmailAsFallbackVerification' => true,
			// optionnel : permet de contrôler si la détection selfie utilisera un contrôle avancé de vivacité (plusieurs vérifications pour détecter si la personne devant la webcam est réelle)
			'advancedLiveness' => $advancedLiveness,
        ]
    ],
	// optionnel : la version de vérification Go.cam
	'verificationVersion' => AvsPhpSdkV1::VERIFICATION_VERSION_STANDARD_V1,
	// obligatoire : l’URL permettant de revenir sur le site partenaire après une vérification
	'linkBack' => $linkBack,
	// optionnel : l’IP de l’utilisateur
	'ipStr' => $userIp,
	// optionnel : le code pays ISO de l’utilisateur
	'countryCode' => $countryCode,
	// optionnel : le code État ISO de l’utilisateur (principalement utilisé pour les États-Unis)
	'stateCode'  => $stateCode,
]);
				

Étape 5 : Générer l’URL de vérification


$verificationUrl = $avsInstance->toUrl();
				

Étape 6 : Ajouter un lien sur votre site


"$verificationUrl; ?>" target="_blank">Démarrer la vérification d’âge
				

L’URL de postback doit pointer vers votre backend, où vous traitez les données de callback envoyées par Go.cam. Consultez la section Référence des données de callback backend pour plus de détails.

Vérification via la bibliothèque iframe

La bibliothèque iframe s’appuie sur la bibliothèque de redirection, mais permet d’exécuter Go.cam dans une iframe superposée. Elle fournit également le contrôle du cycle de vie et la gestion des événements du processus de vérification.

Astuce : Un exemple d’implémentation peut être téléchargé depuis votre compte Go.cam.

Étape 1 : Générer l’URL de l’iframe

Au lieu de toUrl(), appelez :


$verificationUrl = $avsInstance->toIframeUrl();
				

Étape 2 : Inclure le SDK Frontend



				

Étape 3 : Ajouter un bouton de déclenchement



				

Étape 4 : Initialiser le SDK Frontend


var openVerificationIframeButton = document.querySelector('#openVerificationIframeButton');
var iframeUrl = ''; // générée depuis PHP ci-dessus

AvsJsSdk.V1.Config.create({ iframeLocationUrl: iframeUrl });

var avsInstance = new AvsJsSdk.V1.Core();
avsInstance.init();
				

Étape 5 : Gérer les événements du SDK

Le SDK déclenche des événements pendant le processus de vérification. Vous pouvez les écouter et y réagir :


avsInstance.onMessage = function (eventMessage) {
	switch (eventMessage.name) {

		// phase de contrôle : l’iframe a été chargée
		case AvsJsSdk.V1.Config.EVENT_ON_CHECK_IFRAME_LOADED:

			// envoyer un événement à l’iframe pour démarrer la phase de contrôle du processus de vérification
			avsInstance.emit(AvsJsSdk.V1.Config.EVENT_STATUS_REQUEST);

			break;

		// phase de contrôle : la vérification d’âge a déjà réussi lors d’un précédent processus, l’utilisateur est déjà vérifié
		case AvsJsSdk.V1.Config.EVENT_ON_INITIAL_VERIFICATION_SUCCESS:

			// le payload de vérification est valide
			if (eventMessage.data.isPayloadValid) {
				// désactiver le bouton "démarrer la vérification"
				openVerificationIframeButton.disabled = true;
				return;
			}

			// le payload de vérification n’est pas valide, poursuivre le processus de vérification
			avsInstance.emit(AvsJsSdk.V1.Config.EVENT_RESOURCE_PRELOAD);

			break;

		// phase de contrôle : la vérification d’âge n’a pas réussi précédemment ou n’a jamais été exécutée
		case AvsJsSdk.V1.Config.EVENT_ON_INITIAL_VERIFICATION_NOT_FOUND:

			// échec de la phase de contrôle, passer à la phase de vérification et envoyer un événement pour démarrer le préchargement des ressources
			avsInstance.emit(AvsJsSdk.V1.Config.EVENT_RESOURCE_PRELOAD);

			break;

		// phase de vérification : les ressources de l’iframe ont été chargées
		case AvsJsSdk.V1.Config.EVENT_ON_RESOURCES_LOADED:

			// activer le bouton "démarrer la vérification"
			openVerificationIframeButton.disabled = false;

			// attacher un événement click au bouton "démarrer la vérification"
			openVerificationIframeButton.addEventListener('click', function () {
				// afficher l’iframe de vérification en superposition
				avsInstance.iframeInstance.expand();
			});

			break;

		// phase de vérification : le bouton de fermeture de l’overlay iframe a été cliqué
		case AvsJsSdk.V1.Config.EVENT_ON_CLOSE_IFRAME:

			// masquer l’overlay iframe de vérification (elle continue de fonctionner en arrière-plan)
			avsInstance.iframeInstance.collapse();

			break;

		// phase de vérification : le processus de vérification a réussi
		case AvsJsSdk.V1.Config.EVENT_ON_VERIFICATION_SUCCESS:

			// désactiver le bouton "démarrer la vérification"
			openVerificationIframeButton.disabled = true;

			break;

		}

	}
				

Référence des événements du SDK Frontend

Lors de l’utilisation de la bibliothèque iframe, le SDK peut déclencher les événements suivants :

  • EVENT_ON_CHECK_IFRAME_LOADED – Le document iframe est prêt.
  • EVENT_STATUS_REQUEST – Demande de l’état actuel de la vérification.
  • EVENT_ON_INITIAL_VERIFICATION_SUCCESS – Une vérification précédente a été trouvée (cookie présent).
  • EVENT_ON_INITIAL_VERIFICATION_NOT_FOUND – Aucune vérification trouvée.
  • EVENT_RESOURCE_PRELOAD – Démarre le chargement des ressources de vérification.
  • EVENT_ON_INITIAL_VERIFICATION_FATAL_ERROR – Clés invalides ou échec du chargement des ressources.
  • EVENT_ON_START_PAGE_LOADED – La page de vérification est chargée (les ressources sont encore en cours de chargement).
  • EVENT_ON_RESOURCES_LOADED – Les ressources de vérification sont entièrement chargées.
  • EVENT_ON_CLOSE_IFRAME – L’iframe superposée a été fermée.
  • EVENT_ON_VERIFICATION_SUCCESS – Vérification réussie.
  • EVENT_ON_VERIFICATION_ERROR – La vérification a échoué.

Données de l’URL de callback backend

Après chaque tentative de vérification (réussite ou échec), Go.cam envoie un postback serveur à serveur afin d’informer votre backend du résultat.

Le postback est transmis sous la forme d’un tableau contenant des champs décrivant la session de vérification et son résultat.

Exemple 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',
]

				

Référence des champs

state

Indique si la vérification a réussi.

Valeur possible Signification
Success la vérification a réussi
Fail la vérification a échoué

stateInt

Représentation numérique de l’état de la vérification.

Valeur possible Signification
0 inconnu
1 Test non démarré ou interrompu
2 Succès
3 Échec
4 Lien expiré
5 Lien déjà utilisé

sessionId

Identifiant unique de la session de vérification.

Exemple : 12345

errorCode

Code d’erreur si la vérification a échoué.

Valeur possible Signification
0 Aucune erreur
25001 L’appareil n’est pas pris en charge
25032 Échec du préchargement des ressources de vérification (ressources face api)
25033 Échec du préchargement des ressources de vérification (ressources tesseract)
25034 Impossible de récupérer la liste des caméras de l’appareil (étape de sélection caméra pour la détection selfie)
25055 Impossible de détecter suffisamment de visages depuis la vidéo de l’appareil (âge détecté à 0)
25056 Échec de la vérification de similarité faciale (comparaison de tous les selfies)
25057 Impossible de détecter suffisamment de visages depuis la vidéo de l’appareil (0 visage détecté)
25070 Aucun visage détecté
25061 Impossible de détecter suffisamment de visages depuis la vidéo de l’appareil (échec du contrôle d’expression)
25062 Échec de la vérification de similarité faciale (comparaison des visages lors du contrôle d’expression)
25047 Erreur d’initialisation de la webcam (étape de détection selfie)
25035 Échec de l’initialisation des bibliothèques de détection (étape selfie -> détecteur face api)
25036 Échec de l’initialisation des bibliothèques de détection (étape selfie -> modèle d’âge face api)
25037 Échec de l’initialisation des bibliothèques de détection (étape selfie -> modèle de reconnaissance face api)
25038 Échec de l’initialisation des bibliothèques de détection (étape selfie -> modèle de points de repère face api)
25058 Échec de l’initialisation des bibliothèques de détection (étape selfie -> modèle d’expression face api)
25067 Échec du contrôle de correspondance faciale de vivacité
25069 Échec du contrôle de correspondance faciale de vivacité
25085 Échec du contrôle de correspondance faciale de vivacité
25086 Échec du contrôle de correspondance faciale de vivacité
25068 Échec du contrôle de vivacité
25039 Impossible de récupérer la liste des caméras de l’appareil (étape de sélection caméra pour le scan d’identité)
25040 Échec de l’initialisation des bibliothèques de détection (scan d’identité -> worker tesseract)
25041 Échec de l’initialisation des bibliothèques de détection (scan d’identité -> modèle de langue tesseract)
25042 Échec de l’initialisation des bibliothèques de détection (scan d’identité -> initialisation de la langue tesseract)
25043 Échec de l’initialisation des bibliothèques de détection (scan d’identité -> configuration du worker tesseract)
25044 Échec de l’initialisation des bibliothèques de détection (scan d’identité -> détecteur face api)
25045 Échec de l’initialisation des bibliothèques de détection (scan d’identité -> modèle de reconnaissance face api)
25091 Échec de l’initialisation des bibliothèques de détection (scan d’identité -> modèle yolo)
25051 Impossible d’extraire un visage de votre carte d’identité
25052 Le visage du selfie ne correspond pas à celui trouvé sur la carte d’identité
25053 L’âge détecté est inférieur à 18 ans (étape de scan du document d’identité)
25075 L’âge détecté est inférieur à 18 ans (étape de détection selfie)
25054 Impossible d’extraire votre âge à partir du document d’identité actuel
25090 Impossible d’extraire votre âge à partir du document d’identité actuel (étape yolo)
25046 Erreur d’initialisation de la webcam (étape de scan du document d’identité)
20056 Données envoyées invalides pour la vérification d’âge par e-mail
20051 Réponse captcha invalide
20052 Échec de la vérification du captcha
20053 L’e-mail n’est pas éligible
20058 Erreur dans la réponse d’éligibilité de l’e-mail
20054 Échec de l’envoi du code de vérification d’âge par e-mail
20057 Données envoyées invalides pour le code de vérification
20055 Échec de la vérification du code
20061 Adresse e-mail invalide
20002 Le délai maximal autorisé pour le test a expiré (callback de succès du test)
20004 Identifiant d’étape invalide (callback de succès du test)
20000 Jeton invalide (callback de succès du test)
20034 Réponse curl xcore api invalide (callback de succès du test)
20003 Le délai maximal autorisé pour le test a expiré (callback d’échec du test)
20005 Identifiant d’étape invalide (callback d’échec du test)
20001 Jeton invalide (callback d’échec du test)
20035 Réponse curl xcore api invalide (callback d’échec du test)
20036 L’âge détecté est inférieur à 18 ans
18001 Erreur interne de vérification par carte bancaire
18002 Erreur maxmind lors de la vérification par carte bancaire

deviceType

Type d’appareil utilisé.

Valeur possible Signification
0 inconnu
1 mobile
2 ordinateur

stepId

Étape du processus de vérification.

Valeur possible Signification
0 inconnu
1 Test non démarré ou interrompu
2 Succès
3 Échec
4 Lien expiré
5 Lien déjà utilisé

idCountry

Code pays ISO du document d’identité fourni.

Exemple : FR

idState

Code État ISO du document d’identité fourni (principalement utilisé pour les États-Unis).

Exemple : TX

idType

Type de document d’identité.

Valeur possible Signification
1 Carte d’identité
2 Passeport
3 Permis de conduire

websiteHostname

Nom d’hôte du site web sur lequel la vérification a été initiée.

Exemple : your-site-name.cam

ip

Adresse IP de l’appareil de l’utilisateur.

Exemple : 127.0.0.1

Protégez votre business, vos utilisateurs et votre réputation

Choisissez GO.cam— la solution de vérification de l'âge simple et certifiée, reconnue par les opérateurs de sites web d'aujourd'hui.
Démarrez dès aujourd'hui !

Démo en ligne

SUPPORT

Pour intégrer go.cam sur votre page web, merci de nous contacter par email à

Pour toute demande de suppression de données personnelles, veuillez contacter .

Copyright 2025 GSI Développement SaS