Vlastní implementace ověření věku
Ověření Eunoto napojíte na jakýkoli web. Frontend vloží ověřovací okno, váš backend si po odeslání formuláře jen ověří výsledek přes API.
Získejte klíče v portálu
Zaregistrujte se do portálu pro e-shopy, přidejte svůj web a získáte dvojici klíčů. Každý má jiné použití — tajný klíč nikdy nedávejte do prohlížeče.
Portál pro e-shopy
Registrace i správa klíčů, zůstatku a faktur na jednom místě.
Veřejný klíč (PublicKey)
- Vkládá se do HTML na frontendu.
- Je veřejný — může ho vidět kdokoli ve zdrojovém kódu.
- Identifikuje váš projekt při načtení ověřovacího okna.
Tajný klíč (PrivateKey)
- Používá se výhradně na vašem serveru.
- Nikdy nepatří do JavaScriptu, HTML ani do prohlížeče.
- Ověřuje vaše volání vůči Eunoto API.
Implementace krok za krokem
-
1
Frontend — vložte ověřovací okno
Dovnitř formuláře vložte prvek s vaším veřejným klíčem. Před koncem stránky načtěte skript
client.js, který sám vytvoří ověřovací okno (iframe) a po dokončení ověření doplní skrytý inputeunotoUuid.Věkovou hranici nastavujeme na straně Eunota v nastavení vašeho projektu — ověřovat lze na libovolný věk, výchozí hodnota je 18. Z bezpečnostních důvodů ji nelze přepsat z vaší stránky: cokoli, co projde prohlížečem zákazníka, by si zákazník mohl sám snížit a ověření obejít. Potřebujete-li hranici změnit, napište nám.
Atributem
data-eunoto-langmůžete přepnout jazyk ověřovacího okna — podporujemecs(výchozí),skaen.Prvek
data-eunotoumístěte dovnitř formuláře — skript do něj vloží ověřovací okno (iframe o rozměrech 300 × 75 px, počítejte s ním v layoutu) a skrytý inputeunotoUuid, který se odešle spolu s formulářem. Skriptclient.jsvkládejte vždy až za tento prvek a přímo do HTML stránky — nečeká na načtení DOM a při asynchronním vložení (např. přes Google Tag Manager) se nespustí.<form method="post" action="/verify"> <input type="email" name="email" required> <input type="tel" name="phone" required> <!-- Ověřovací okno + skrytý input eunotoUuid doplní client.js automaticky --> <div data-eunoto="VAS_VEREJNY_KLIC"></div> <button type="submit">Odeslat</button> </form> <script src="https://www.eunoto.cz/js/client.js"></script> -
2
Volitelně — předvyplňte telefon a e-mail
Máte-li ve formuláři pole s telefonem nebo e-mailem, označte je atributy
data-eunoto-phoneadata-eunoto-email. Hodnoty se předají do ověřovacího okna a nemusí je zákazník zadávat znovu.<input type="email" name="email" data-eunoto-email required> <input type="tel" name="phone" data-eunoto-phone required> -
3
Backend — ověřte výsledek přes API
Po odeslání formuláře přijmete hodnotu
eunotoUuida zavoláte Eunoto API se svým soukromým klíčem v hlavičceAuthorization. Odpověď obsahuje poleresulta poleage, které udává, jaký věk byl u ověření skutečně vyžadován.Pokud je
eunotoUuidprázdné, považujte zákazníka rovnou za neověřeného a API vůbec nevolejte. Za ověřeného ho považujte pouze tehdy, kdyžresultje přesnětrue.<?php $uuid = $_POST['eunotoUuid'] ?? ''; if ($uuid === '') { // Ověření neproběhlo — objednávku nedokončujte exit; } $ch = curl_init('https://www.eunoto.cz/api/verification/' . $uuid); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, [ 'Authorization: Bearer VAS_TAJNY_KLIC', ]); $data = json_decode(curl_exec($ch), true); curl_close($ch); if (($data['result'] ?? null) === true) { // Zákazník je ověřen — pokračujte v objednávce } else { // Ověření neproběhlo — objednávku nedokončujte } // $data['age'] obsahuje věk, který byl u tohoto ověření skutečně vyžadován
Pravidla implementace
-
Ověřujte při každé objednávce
Výsledek ověření si neukládejte pro opakované použití — každý nákup potvrďte novým ověřením.
-
Tajný klíč držte na serveru
Nikdy jej nevkládejte do JavaScriptu, HTML ani do veřejného repozitáře.
-
Provozujte web přes HTTPS
Ověřovací okno se načítá zabezpečeně a na nezabezpečených doménách nefunguje.
-
Nezahlcujte API
Výsledek ověřte jednou po odeslání formuláře, ne opakovaně při validaci polí. Platí limit 100 požadavků za 10 minut z jedné IP adresy.
-
Počítejte s cookie
Ověřovací okno si ukládá first-party cookie
eunoto_users platností 24 hodin — úspěšné ověření tak zákazníkovi platí celý den. Cookie je pro fungování ověření nezbytná, v cookie liště ji uveďte mezi nezbytnými (funkčními).
API reference
Ověření výsledku probíhá jediným GET požadavkem. Funguje z libovolného jazyka — PHP, Node.js, Python i dalších.
GET https://www.eunoto.cz/api/verification/{uuid}
Authorization: Bearer <PrivateKey>
{"result": true, "age": 18} — zákazník je ověřen na 18 let
{"result": false, "age": 18} — ověření na 18 let selhalo
{"result": null, "age": 18} — token neznámý nebo zatím bez výsledku
400 — chybějící nebo neplatná hlavička Authorization
401 — neplatný tajný klíč
429 — překročen limit 100 požadavků za 10 minut z jedné IP adresy
Chcete si API vyzkoušet?
S klíči a napojením vám rádi poradíme.
Ověřovací okno se nezobrazuje?
Projděte si nejčastější příčiny — skript při problému nic nevypisuje, jen okno nevytvoří.
-
Běží web přes HTTPS?
Na nezabezpečeném
http://se ověřovací okno nenačte. -
Je skript až za prvkem?
Skript
client.jsnečeká na načtení stránky — musí být v HTML až za prvkemdata-eunotoa nesmí se vkládat asynchronně (např. přes Google Tag Manager). -
Máte na stránce jen jeden prvek?
Skript obslouží pouze první prvek
data-eunotona stránce — druhý formulář (např. mobilní verze) zůstane bez ověřovacího okna. -
Nemá prohlížeč zablokované cookies?
Bez povolených cookies se ověřovací okno vůbec nevykreslí.
-
Je formulář v HTML už při načtení stránky?
Dynamicky vykreslované formuláře (SPA, obsah doplňovaný AJAXem) zatím nepodporujeme — prvek
data-eunotomusí být na stránce od začátku.