Eenvoudig gemaakt
100% Gratis
Ontwikkelaarsdocumentatie | API & Integratiegids - Standaardimplementatie
Implementatievoorbeelden
Go.cam biedt twee standaard implementatievoorbeelden, beschikbaar in PHP en JavaScript.
Verificatie via redirect-bibliotheek
Deze implementatie genereert een Go.cam-verificatie-URL op basis van uw toegangssleutels.
Deze kan in standalone-modus worden gebruikt als de leeftijdsverificatie in een nieuw browservenster of via een redirect moet worden uitgevoerd.
Deze methode is ontworpen om eenvoudig en gemakkelijk te volgen te zijn. Hieronder vindt u een stapsgewijze uitleg.
Tip: Een voorbeeldimplementatie kan worden gedownload vanuit uw Go.cam-account.
Stap 1: Voeg de PHP SDK toe
require_once 'avsPhpSdkV1.php';
Stap 2: Initialiseer de SDK
Haal de vereiste inloggegevens op uit uw Go.cam-account en bewerk het bestand config.php.
$config['partnerId'] = 0;
$config['cipherKey'] = '';
$config['hmacKey'] = '';
Initialiseer de SDK-klasse in het bestand index.php.
$avsInstance = new AvsPhpSdkV1(
$config['partnerId'],
$config['cipherKey'],
$config['hmacKey']
);
Stap 3: (Optioneel) Stel de taal in
Standaard wordt de testpagina in het Engels weergegeven. Ondersteunde talen:
Engels, Frans, Duits, Nederlands, Italiaans, Portugees, Spaans
$avsInstance->setLanguage(AvsPhpSdkV1::LANGUAGE_EN);
Stap 4: Definieer de request payload
Go.cam gebruikt AES-256-CBC-encryptie voor veilige communicatie.
Voor elke sessie moet u de payload definiëren, die verplichte en optionele parameters kan bevatten.
Voorbeeld:
$avsInstance->fillRequest([
'userData' => [
// verplicht: interne gebruikers-id van de partner, gebruikt voor het volgen van de gebruiker
'userId' => $userId,
// optioneel: aangepaste gegevens die de partner in deze verificatiesessie wil opnemen
'someCustomData' => true,
// optioneel: aangepaste kleuren voor de interface van het Go.cam-verificatieproces
'colorConfig' => [
'body' => [
'background' => $colorConfigBodyBackground,
'foreground' => $colorConfigBodyForeground,
'button' => [
'background' => $colorConfigButtonBackground,
'foreground' => $colorConfigButtonForeground,
'foregroundCallToAction' => $colorConfigButtonForegroundCTA,
'backgroundFailure' => $colorConfigButtonBackgroundFailureInput,
'foregroundFailure' => $colorConfigButtonForegroundFailureInput,
'foregroundCallToActionFailure' => $colorConfigButtonForegroundCTAFailureInput,
]
],
] // optioneel
],
'http' => [
'userAgent' => $userAgent,
'websiteHostname' => $websiteHostname,
'paramList' => [
// optioneel: een manier om te bepalen of het gedetecteerde leeftijdsnummer op het scherm wordt getoond tijdens het selfie-leeftijdsverificatieproces
'showDetectedAgeNumber' => $showDetectedAgeNumber,
// optioneel: het type verificatie dat u aan de gebruiker wilt tonen
// als dit niet als parameter is opgegeven of leeg is, zijn alle typen zichtbaar
'verificationTypeList' => array('creditCard', 'selfie', 'scanId', 'email'),
// optioneel: het type verificatie dat standaard geselecteerd moet zijn
'verificationTypeDefault' => 'selfie',
// optioneel: gebruik e-mailverificatie als fallback voor het geval de eerst gekozen verificatie mislukt
'useEmailAsFallbackVerification' => true,
// optioneel: een manier om te bepalen of de selfie-detectie geavanceerde liveness zal gebruiken (verschillende controles om te detecteren of de persoon voor de webcam echt is)
'advancedLiveness' => $advancedLiveness,
]
],
// optioneel: de Go.cam-verificatieversie
'verificationVersion' => AvsPhpSdkV1::VERIFICATION_VERSION_STANDARD_V1,
// verplicht: de URL om terug te keren naar de partnersite na een verificatie
'linkBack' => $linkBack,
// optioneel: IP van de gebruiker
'ipStr' => $userIp,
// optioneel: ISO-landcode van de gebruiker
'countryCode' => $countryCode,
// optioneel: ISO-staatcode van de gebruiker (vooral gebruikt voor de VS)
'stateCode' => $stateCode,
]);
Stap 5: Genereer de verificatie-URL
$verificationUrl = $avsInstance->toUrl();
Stap 6: Voeg een link toe op uw website
"$verificationUrl; ?>" target="_blank">Start leeftijdsverificatie
De postback-URL moet verwijzen naar uw backend, waar u de callbackgegevens verwerkt die door Go.cam worden verzonden. Zie de Backend Callback Data Reference voor meer details.
Verificatie met iframe-bibliotheek
De iframe-bibliotheek bouwt voort op de redirect-bibliotheek, maar maakt het mogelijk om Go.cam uit te voeren als een overlay-iframe. Ze biedt ook lifecycle-controle en eventafhandeling voor het verificatieproces.
Tip: Een voorbeeldimplementatie kan worden gedownload vanuit uw Go.cam-account.
Stap 1: Genereer de iframe-URL
Roep in plaats van toUrl() het volgende aan:
$verificationUrl = $avsInstance->toIframeUrl();
Stap 2: Voeg de Frontend SDK toe
Stap 3: Voeg een triggerknop toe
disabled>
Open verificatie-iframe
Stap 4: Initialiseer de Frontend SDK
var openVerificationIframeButton = document.querySelector('#openVerificationIframeButton');
var iframeUrl = ''; // hierboven gegenereerd vanuit PHP
AvsJsSdk.V1.Config.create({ iframeLocationUrl: iframeUrl });
var avsInstance = new AvsJsSdk.V1.Core();
avsInstance.init();
Stap 5: Verwerk SDK-events
De SDK activeert events tijdens het verificatieproces. U kunt deze opvangen en erop reageren:
avsInstance.onMessage = function (eventMessage) {
switch (eventMessage.name) {
// controlefase: iframe is geladen
case AvsJsSdk.V1.Config.EVENT_ON_CHECK_IFRAME_LOADED:
// stuur een event naar de iframe om de controlefase van het verificatieproces te starten
avsInstance.emit(AvsJsSdk.V1.Config.EVENT_STATUS_REQUEST);
break;
// controlefase: leeftijdsverificatie was succesvol in een eerder verificatieproces, gebruiker is al geverifieerd
case AvsJsSdk.V1.Config.EVENT_ON_INITIAL_VERIFICATION_SUCCESS:
// verificatiepayload is geldig
if (eventMessage.data.isPayloadValid) {
// schakel de knop "start verificatie" uit
openVerificationIframeButton.disabled = true;
return;
}
// verificatiepayload is niet geldig, ga verder met het verificatieproces
avsInstance.emit(AvsJsSdk.V1.Config.EVENT_RESOURCE_PRELOAD);
break;
// controlefase: leeftijdsverificatie was niet succesvol in een eerder verificatieproces of werd helemaal niet uitgevoerd
case AvsJsSdk.V1.Config.EVENT_ON_INITIAL_VERIFICATION_NOT_FOUND:
// controlefase mislukt, ga naar de verificatiefase en stuur een event om het preloaden van resources voor de verificatiefase te starten
avsInstance.emit(AvsJsSdk.V1.Config.EVENT_RESOURCE_PRELOAD);
break;
// verificatiefase: iframe-resources zijn geladen
case AvsJsSdk.V1.Config.EVENT_ON_RESOURCES_LOADED:
// schakel de knop "start verificatie" in
openVerificationIframeButton.disabled = false;
// koppel een klik-event aan de knop "start verificatie"
openVerificationIframeButton.addEventListener('click', function () {
// toon het verificatie-iframe als overlay
avsInstance.iframeInstance.expand();
});
break;
// verificatiefase: op de sluitknop van de iframe-overlay is geklikt
case AvsJsSdk.V1.Config.EVENT_ON_CLOSE_IFRAME:
// verberg de verificatie-iframe-overlay (deze draait nog steeds op de achtergrond)
avsInstance.iframeInstance.collapse();
break;
// verificatiefase: verificatieproces was succesvol
case AvsJsSdk.V1.Config.EVENT_ON_VERIFICATION_SUCCESS:
// schakel de knop "start verificatie" uit
openVerificationIframeButton.disabled = true;
break;
}
}
Frontend SDK Event Reference
Bij gebruik van de iframe-bibliotheek kan de SDK de volgende events activeren:
- EVENT_ON_CHECK_IFRAME_LOADED – Iframe-document gereed.
- EVENT_STATUS_REQUEST – Huidige verificatiestatus opvragen.
- EVENT_ON_INITIAL_VERIFICATION_SUCCESS – Eerdere verificatie gevonden (cookie aanwezig).
- EVENT_ON_INITIAL_VERIFICATION_NOT_FOUND – Geen verificatie gevonden.
- EVENT_RESOURCE_PRELOAD – Begin met het laden van verificatieresources.
- EVENT_ON_INITIAL_VERIFICATION_FATAL_ERROR – Ongeldige sleutels of fout bij het laden van resources.
- EVENT_ON_START_PAGE_LOADED – Verificatiepagina geladen (resources worden nog geladen).
- EVENT_ON_RESOURCES_LOADED – Verificatieresources volledig geladen.
- EVENT_ON_CLOSE_IFRAME – Iframe-overlay gesloten.
- EVENT_ON_VERIFICATION_SUCCESS – Verificatie succesvol.
- EVENT_ON_VERIFICATION_ERROR – Verificatie mislukt.
Backend Callback URL-gegevens
Na elke verificatiepoging (succes of mislukking) stuurt Go.cam een server-to-server postback om uw backend op de hoogte te stellen van het resultaat.
De postback wordt geleverd als een array met velden die de verificatiesessie en de uitkomst ervan beschrijven.
Voorbeeld-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',
]
Veldreferentie
state
Geeft aan of de verificatie succesvol was.
| Mogelijke waarde | Betekenis |
|---|---|
| Success | de verificatie was succesvol |
| Fail | de verificatie is mislukt |
stateInt
Numerieke weergave van de verificatiestatus.
| Mogelijke waarde | Betekenis |
|---|---|
| 0 | onbekend |
| 1 | Test niet gestart of afgebroken |
| 2 | Succes |
| 3 | Mislukt |
| 4 | Link verlopen |
| 5 | Link al gebruikt |
sessionId
Unieke identificatie van de verificatiesessie.
Voorbeeld: 12345
errorCode
Foutcode als de verificatie is mislukt.
| Mogelijke waarde | Betekenis |
|---|---|
| 0 | Geen fout |
| 25001 | Apparaat wordt niet ondersteund |
| 25032 | Voorladen van verificatieresources mislukt (face api resources) |
| 25033 | Voorladen van verificatieresources mislukt (tesseract resources) |
| 25034 | Kon de cameralijst van uw apparaat niet ophalen (cameraselectiestap voor selfie-detectie) |
| 25055 | Kon niet genoeg gezichten detecteren uit de apparaatvideo (gedetecteerde leeftijd is 0) |
| 25056 | Gezichtsgelijkeniscontrole mislukt (vergelijking van alle selfie-gezichten) |
| 25057 | Kon niet genoeg gezichten detecteren uit de apparaatvideo (0 gezichten gedetecteerd) |
| 25070 | Geen gezichten gedetecteerd |
| 25061 | Kon niet genoeg gezichten detecteren uit de apparaatvideo (expressiecontrole mislukt) |
| 25062 | Gezichtsgelijkeniscontrole mislukt (vergelijking van expressiegezichten) |
| 25047 | Webcam-initialisatiefout (stap voor selfie-detectie) |
| 25035 | Initialisatie van detectiebibliotheken mislukt (stap voor selfie-detectie -> face api detector) |
| 25036 | Initialisatie van detectiebibliotheken mislukt (stap voor selfie-detectie -> face api age model) |
| 25037 | Initialisatie van detectiebibliotheken mislukt (stap voor selfie-detectie -> face api recognition model) |
| 25038 | Initialisatie van detectiebibliotheken mislukt (stap voor selfie-detectie -> face api landmarks model) |
| 25058 | Initialisatie van detectiebibliotheken mislukt (stap voor selfie-detectie -> face api expression model) |
| 25067 | Liveness face match-controle mislukt |
| 25069 | Liveness face match-controle mislukt |
| 25085 | Liveness face match-controle mislukt |
| 25086 | Liveness face match-controle mislukt |
| 25068 | Liveness-controle mislukt |
| 25039 | Kon de cameralijst van uw apparaat niet ophalen (cameraselectiestap voor scan-id-detectie) |
| 25040 | Initialisatie van detectiebibliotheken mislukt (stap voor scan-id-detectie -> tesseract worker) |
| 25041 | Initialisatie van detectiebibliotheken mislukt (stap voor scan-id-detectie -> tesseract language model) |
| 25042 | Initialisatie van detectiebibliotheken mislukt (stap voor scan-id-detectie -> tesseract language init) |
| 25043 | Initialisatie van detectiebibliotheken mislukt (stap voor scan-id-detectie -> tesseract worker config) |
| 25044 | Initialisatie van detectiebibliotheken mislukt (stap voor scan-id-detectie -> face api detector) |
| 25045 | Initialisatie van detectiebibliotheken mislukt (stap voor scan-id-detectie -> face api recognition model) |
| 25091 | Initialisatie van detectiebibliotheken mislukt (stap voor scan-id-detectie -> yolo model) |
| 25051 | Kon geen gezicht uit uw identiteitskaart extraheren |
| 25052 | Selfie-gezicht komt niet overeen met het gezicht op de identiteitskaart |
| 25053 | Gedetecteerde leeftijd is lager dan 18 jaar (stap voor scan-id-detectie) |
| 25075 | Gedetecteerde leeftijd is lager dan 18 jaar (stap voor selfie-detectie) |
| 25054 | Kon uw leeftijd niet extraheren uit de huidige identiteitskaart |
| 25090 | Kon uw leeftijd niet extraheren uit de huidige identiteitskaart (yolo-stap) |
| 25046 | Webcam-initialisatiefout (stap voor scan-id-detectie) |
| 20056 | Ongeldige geposte gegevens voor leeftijdsverificatie via e-mail |
| 20051 | Ongeldige captcha-respons |
| 20052 | Captcha-controle mislukt |
| 20053 | E-mail komt niet in aanmerking |
| 20058 | Fout in respons voor geschiktheid van e-mail |
| 20054 | Verzenden van e-mailverificatiecode voor leeftijd mislukt |
| 20057 | Ongeldige geposte gegevens voor verificatiecode |
| 20055 | Controle van verificatiecode mislukt |
| 20061 | Ongeldig e-mailadres |
| 20002 | Maximaal toegestane testtijd verlopen (succes-callback van test) |
| 20004 | Ongeldige step id (succes-callback van test) |
| 20000 | Ongeldig token (succes-callback van test) |
| 20034 | Ongeldige xcore api curl-respons (succes-callback van test) |
| 20003 | Maximaal toegestane testtijd verlopen (fout-callback van test) |
| 20005 | Ongeldige step id (fout-callback van test) |
| 20001 | Ongeldig token (fout-callback van test) |
| 20035 | Ongeldige xcore api curl-respons (fout-callback van test) |
| 20036 | Gedetecteerde leeftijd is lager dan 18 jaar |
| 18001 | Interne fout bij creditcardverificatie |
| 18002 | Maxmind-fout bij creditcardverificatie |
deviceType
Type apparaat dat is gebruikt.
| Mogelijke waarde | Betekenis |
|---|---|
| 0 | onbekend |
| 1 | mobiel |
| 2 | desktop |
stepId
Fase van het verificatieproces.
| Mogelijke waarde | Betekenis |
|---|---|
| 0 | onbekend |
| 1 | Test niet gestart of afgebroken |
| 2 | Succes |
| 3 | Mislukt |
| 4 | Link verlopen |
| 5 | Link al gebruikt |
idCountry
ISO-landcode van het opgegeven identiteitsdocument.
Voorbeeld: FR
idState
ISO-staatcode van het opgegeven identiteitsdocument (voornamelijk gebruikt voor de VS).
Voorbeeld: TX
idType
Type identiteitsdocument.
| Mogelijke waarde | Betekenis |
|---|---|
| 1 | Identiteitskaart |
| 2 | Paspoort |
| 3 | Rijbewijs |
websiteHostname
Hostnaam van de website waar de verificatie is gestart.
Voorbeeld: your-site-name.cam
ip
IP-adres van het apparaat van de gebruiker.
Voorbeeld: 127.0.0.1
Bescherm uw bedrijf, uw gebruikers en uw reputatie
Kies voor GO.cam — de eenvoudige en gecertificeerde oplossing voor leeftijdsverificatie die wordt vertrouwd door de huidige websitebeheerders.
Ga vandaag nog aan de slag!