Facile et sécurisé
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
disabled>
Ouvrir l’iframe de vérification
É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 !