Anleitungen

WooCommerce

ErprobtPlugins → Installieren → Plugin hochladen

Läuft in einem Shop, den wir selbst betreiben, und die ganze Kette ist von aussen nachgemessen — vom Warenkorb bis zum signierten Anfrageobjekt an die Wallet. Wenn etwas klemmt, klemmt es an Ihrem Aufbau, nicht am Paket.

Schon eingebaut? So legen Sie fest, welche Ware geprüft wird

Als Datei: readme.txt · PRUEFPLAN.md

Einbau

EdelVerify — Altersprüfung über den Ausweis

Contributors: edelbyte Tags: woocommerce, alterspruefung, age-verification, jugendschutz, altersnachweis Requires at least: 6.4 Tested up to: 7.0 Requires PHP: 8.1 Stable tag: 1.2.0 License: GPL-2.0-or-later License URI: https://www.gnu.org/licenses/gpl-2.0.html

Sperrt den Checkout für altersbeschränkte Produkte, bis das Alter über den Ausweis bestätigt ist. Grenze je Kategorie und je Artikel — 16 oder 18.

Beschreibung

Ihre Kundschaft weist das Alter mit dem eigenen Ausweis nach — mit der EdelVerify-App, die den Chip im Pass oder Ausländerausweis liest, oder über die maschinenlesbaren Zeilen auf der Datenseite. Übermittelt wird eine einzige Angabe: Grenze erfüllt, ja oder nein. Kein Name, kein Geburtsdatum, keine Ausweiskopie — es gibt in Ihrem Shop also auch nichts, was Sie speichern, schützen oder löschen müssten.

Welche Wege es genau gibt und was jeder davon belegt, steht weiter unten unter «Wer kommt durch, und womit». Lesen Sie den Abschnitt vor dem Einbau: Die vier Wege belegen nicht dasselbe, und die Entscheidung darüber treffen Sie.

Die Grenze bestimmen Sie: 16 oder 18, je Kategorie, mit einer Vorgabe für den ganzen Shop. Bier ab 16 neben Spirituosen ab 18 ist damit eine Auswahl und kein zweiter Shop. Liegt Gemischtes im Warenkorb, gilt die strengste Grenze.

Die Kategorien wählen Sie aus einer Liste aus — abgetippte Slugs gibt es nicht mehr. Unterkategorien zählen mit: Wer «Spirituosen» wählt, erfasst auch «Spirituosen › Gin». Für die Fälle, die in keine Kategorie passen, steht in jeder Produktmaske ein Auswahlfeld «Altersprüfung»; die Produktliste zeigt in einer eigenen Spalte, was für jeden Artikel gilt und woher es kommt.

Der Riegel sitzt auf dem Server. Alles, was im Browser zu sehen ist, ist Anzeige: Wer das Prüffenster mit den Entwicklerwerkzeugen wegräumt, kommt trotzdem nicht an der Bestellung vorbei. Das Plugin hängt an beiden Kassenwegen — am klassischen Checkout und am Block-Checkout, den WooCommerce heute standardmässig ausliefert.

Ist EdelVerify nicht erreichbar, wird die Bestellung abgewiesen, nicht durchgelassen. Bei einer Altersprüfung ist die sichere Richtung die unbequeme.

Was Sie brauchen

  • Das Plugin-Archiv: https://verify.edelbyte.ch/v1/woocommerce/edelverify-plugin.zip
  • Ein Schlüsselpaar von uns — einen öffentlichen (pk_test_…) und einen geheimen (sk_test_…). Wie Sie es bekommen, steht gleich darunter.
  • WooCommerce
  • Kundschaft mit einem Ausweis und der EdelVerify-App auf dem Telefon (für den Testbetrieb nicht nötig) — siehe «Wer kommt durch, und womit»

Woher Sie die Schlüssel bekommen

Das Konto entsteht automatisch. Sie buchen unter https://verify.edelbyte.ch/preise einen Tarif — mit Karte oder TWINT —, und Zugang samt Schlüsselpaar steht unmittelbar danach bereit. Niemand muss dafür mit uns sprechen.

Ausprobieren kostet nichts: Der Testbetrieb ist dauerhaft gratis. Ein Testschlüssel verlangt keinen echten Ausweis und lässt den ganzen Ablauf trotzdem durchlaufen — Sie können die Einbindung fertig bauen, bevor Sie sich für einen Tarif entscheiden.

Die Adressen Ihres Shops (mit und ohne www, dazu Ihr Testsystem) und die Altersgrenze, die Ihre Ware verlangt, tragen Sie im Konto unter «Einstellungen» selbst ein.

Wenn Sie lieber vorher reden:

  • E-Mail: info@edelbyte.ch
  • Telefon: 044 500 25 04

Was es kostet

Ab 19 Franken im Monat, keine Gebühr je Prüfung, monatlich kündbar und ohne Vorauszahlung. Über dem Kontingent kostet eine bestandene Prüfung 10 Rappen, nie mehr als der nächsthöhere Tarif — abgeschaltet wird die Prüfung nie. Die Stufen stehen unter https://verify.edelbyte.ch/preise. Bezahlt wird mit Karte oder TWINT.

Der Testbetrieb kostet nichts, und zwar dauerhaft. Was Sie damit nicht bekommen, sagen wir gleich dazu: echte Nachweise. Dafür braucht es einen bezahlten Zugang.

Wer kommt durch, und womit

Geprüft wird über den Ausweis Ihrer Kundschaft. Es gibt dafür vier Wege, und sie belegen nicht dasselbe. Das ist keine Fussnote, sondern die Entscheidung, die Sie treffen:

  • Staatliche E-ID — ein vom Bund signierter Nachweis, geprüft gegen das eidgenössische Vertrauensregister. Der stärkste Nachweis, den es gibt. Heute abgeschaltet: Der Bund hat die Einführung am 30. Juni 2026 verschoben und nennt kein neues Datum. Der Weg ist gebaut und wird freigeschaltet, sobald die E-ID produktiv ausgegeben wird. Bis dahin bekommt Ihre Kundschaft ihn nicht zu sehen — es gibt keinen Wahlschirm.
  • Ausweischip (App) — die EdelVerify-App liest den Chip im Pass oder Ausländerausweis. Belegt ist damit, dass das Dokument körperlich vorlag: Der Chip gibt nur etwas heraus, wenn ihm die abgelesenen Zeilen der Datenseite gezeigt werden. Nicht belegt ist, dass das Dokument echt ist — dafür fehlt die Prüfung gegen die Länderzertifikate. Das ist die Vorgabe, und für die meisten Läden die richtige Antwort.
  • Ausweiszeilen (App) — dieselbe App liest die maschinenlesbaren Zeilen statt des Chips. Belegt sind formal gültige Zeilen eines amtlichen Ausweises: Prüfziffern gehen auf, Bauform stimmt, Dokument nicht abgelaufen. Nicht belegt ist, dass das Dokument vorlag — ein Foto der Rückseite genügt. Die Kamera unterscheidet ein Dokument nicht von seinem Abbild.
  • Ausweiszeilen (Browser) — dieselben Zeilen, gelesen im Prüffenster, ohne App. Gerechnet wird auf unserem Server, nach denselben Regeln. Zusätzlich fehlt hier die Zusage, dass überhaupt gelesen wurde: Das Fenster läuft im Browser Ihrer Kundschaft. Das ist die schwächste Stufe, die es gibt.

Die beiden Zeilen-Stufen sind ab Werk aus. Ihr Shop verlangt den Chip, solange Sie nichts anderes sagen. Wer sie freischalten will, schreibt uns an info@edelbyte.ch — und liest vorher, was oben unter «nicht belegt» steht.

Welche Dokumente durchkommen:

  • Schweizer Pass und Ausländerausweis — über den Chip, ab Werk.
  • Schweizer Identitätskarte — sie trägt keinen Chip und kommt deshalb über die Ausweiszeilen durch. Sie funktioniert also nur, wenn Sie diese Stufe freigeschaltet haben. Die biometrische Identitätskarte mit Chip ist ab 2. November 2026 beantragbar.
  • Ausländische Pässe und Ausweise mit maschinenlesbaren Zeilen.

Die App, die Chip und Zeilen liest, steht seit dem 20. August 2026 für Android im Play Store: https://play.google.com/store/apps/details?id=ch.edelbyte.edelverify Die Fassung fürs iPhone ist in Arbeit. Ein Datum nennen wir dafür nicht, weil die Prüfzeit bei Apple nicht in unserer Hand liegt. Wer kein Android-Gerät hat, kommt heute nur über die Ausweiszeilen im Browser durch — und auch das nur, wenn Sie diese Stufe freigeschaltet haben.

Installation

  1. Archiv herunterladen: https://verify.edelbyte.ch/v1/woocommerce/edelverify-plugin.zip Dann Plugins → Installieren → Plugin hochladen, diese Datei wählen, installieren und aktivieren.
  2. WooCommerce → Einstellungen → EdelVerify öffnen.
  3. Öffentlichen und geheimen Schlüssel eintragen — das Paar, das wir Ihnen geschickt haben (siehe «Woher Sie die Schlüssel bekommen»). Fangen Sie mit den Testschlüsseln an: pk_test_… und sk_test_….
  4. Unter Umfang entscheiden, wie weit die Prüfung reicht.

*Ganzer Shop* heisst: Jeder gefüllte Warenkorb wird geprüft. Das ist die Vorgabe und die richtige Antwort für einen reinen Spirituosen-, Tabak- oder Vape-Laden. Wer daneben Zubehör ohne Altersgrenze führt, stellt auf *Nur ausgewählte Kategorien und Artikel*.

  1. Unter Altersgrenze (Vorgabe) wählen, was gilt, wo weder eine Kategorie noch der Artikel etwas anderes sagt. Ab Werk 18.
  2. Bei Umfang *Nur ausgewählte …*: unter Kategorien ab 16 und **Kategorien ab 18** die betroffenen Warengruppen anklicken. Beide Felder zeigen Ihren Kategoriebaum eingerückt; mit Strg bzw. Cmd wählen Sie mehrere aus.

Unterkategorien zählen mit. Wer «Spirituosen» wählt, erfasst damit auch «Spirituosen › Gin» und alles andere darunter — Sie müssen den Baum nicht von Hand nachpflegen, und eine morgen angelegte Unterkategorie ist vom ersten Tag an mitgeschützt.

Steht eine Kategorie in beiden Listen, gilt 18. Liegt Gemischtes im Warenkorb, gilt ohnehin die strengste Grenze.

Eine Kategorie kann ihre Elternkategorie nicht unterbieten: Wer «Spirituosen ab 18» gewählt hat, macht «Spirituosen › alkoholfrei» damit nicht zu 16. Wollen Sie das, wählen Sie statt der Elternkategorie ihre Unterkategorien einzeln aus.

  1. Einzelne Artikel, die in keine dieser Kategorien passen: In der Produktmaske unter Produktdaten → Allgemein steht das Feld Altersprüfung mit den Werten *wie die Kategorien vorgeben*, *immer ab 16* und *immer ab 18*.

Es kann nur verschärfen, nie lockern. Einen Artikel *ohne* Prüfung verkaufen Sie, indem Sie ihn aus der betroffenen Kategorie nehmen — ein Feld, mit dem sich die Prüfung einzeln abschalten liesse, gibt es mit Absicht nicht.

Was am Ende für welchen Artikel gilt, steht unter Produkte in der Spalte «Altersprüfung», samt der Quelle: am Artikel, über die Kategorie oder ganzer Shop.

  1. Uns die Adressen Ihres Shops melden, damit wir sie als erlaubte Herkunft hinterlegen (info@edelbyte.ch). Das ist kein Feld im Plugin: Die Liste liegt bei uns, und solange für Ihren Shop keine Adresse darin steht, darf jede beliebige Seite Prüfungen auf Ihren öffentlichen Schlüssel starten. Vor dem Kundenbetrieb gehört sie deshalb gefüllt.
  2. Verbindung prüfen anklicken. Der Test sagt Ihnen in vier Zeilen, ob der Dienst erreichbar ist, ob beide Schlüssel angenommen werden, welche Grenzen gelten und ob Ihre Adresse als Herkunft freigegeben ist.
  3. Probekauf machen — bitte wirklich. Der beiliegende PRUEFPLAN.md führt Sie in zehn Minuten durch alles, was zählt: die gesperrte Kasse ohne Nachweis, die vollständige Prüfung bis zur durchgegangenen Bestellung, die Ablehnung einer zu jungen Person, die beiden Grenzen 16 und 18 und das Verhalten bei einer Störung. Ein Einbau, den niemand nachgemessen hat, ist eine Vermutung.

Wichtig zu Schritt 6 und 7: Der öffentliche Schlüssel darf nur von den Adressen aus Prüfungen starten, die bei uns hinterlegt sind. Läuft Ihr Shop unter mehreren Adressen — mit und ohne www, dazu eine Testumgebung — gehören alle dort hinein, sonst schlägt die Prüfung genau auf einer davon fehl.

Testbetrieb ohne Ausweis

Ein Schlüssel, der mit pk_test_ beziehungsweise sk_test_ beginnt, verlangt keinen echten Ausweis. Die Prüfung steht vier Sekunden auf PENDING — damit die Abfrage im Shop wirklich einmal durchläuft — und geht dann durch. Im Shop sehen Sie damit den vollständigen Ablauf bis zur abgeschickten Bestellung, ohne dass jemand ein Dokument zückt.

Zwei Dinge, die Sie dabei wissen müssen:

  • Ohne weitere Angabe nimmt eine Testprüfung immer den glücklichen Ausgang. Der Fall, den Ihr Shop am seltensten sieht und am dringendsten können muss, ist der andere: zu jung. Ihn bestellen Sie mit test_outcome — im Shop selbst gibt es dafür kein Feld, wohl aber in Abschnitt 5 des beiliegenden PRUEFPLAN.md, samt fertigem curl-Aufruf.
  • Test- und Livebetrieb berühren sich nie. Ein Nachweis aus dem Testbetrieb lässt sich mit einem Live-Schlüssel nicht einlösen und umgekehrt. Entschieden wird das ausschliesslich am Schlüssel. Am Tag der Umstellung tauschen Sie zwei Zeichenfolgen aus, sonst nichts.

Die vollständige technische Anleitung — Schnittstelle, Fehlerschlüssel, Webhook, Testausgänge — steht unter https://verify.edelbyte.ch/entwickler

Häufige Fragen

Sieht mein Shop das Geburtsdatum?

Nein. Weitergegeben wird ausschliesslich die Angabe, ob die verlangte Grenze erfüllt ist. Weder Ihr Shop noch Sie selbst erfahren Name, Geburtsdatum oder Ausweisnummer. Gerechnet wird das Alter dort, wo der Ausweis gelesen wird; was Ihren Shop erreicht, ist ein Ja oder ein Nein.

Welche Altersgrenzen gibt es?

16 und 18. Geprüft wird gegen eine Schwelle, nicht auf ein Geburtsdatum — mehr gibt der Nachweis nicht her. Ein Feld, in das man 21 eintragen könnte, ohne dass es wirkt, wäre schlimmer als keines.

Wie wirkt sich ein gemischter Warenkorb aus?

Es gilt die strengste Grenze. Ein Sixpack neben einer Flasche Gin macht den ganzen Warenkorb zu einem 18er-Warenkorb — die Alternative wäre, die Bestellung aufzuteilen, und das kann eine Kasse nicht.

Muss die Kundschaft nach jeder Warenkorbänderung neu prüfen?

Nein, solange die Grenze nicht steigt. Ein Nachweis ab 18 löst auch Ware ab 16 ein. Umgekehrt nicht: Wer sich für Bier ausgewiesen hat und dann eine Flasche Gin dazulegt, wird erneut gefragt.

Wie lange gilt eine bestätigte Prüfung?

So lange, wie es im EdelVerify-Admin für Ihren Shop eingestellt ist, standardmässig dreissig Tage. Danach fragt der Shop erneut. Der Nachweis wird bei jedem Bestellabschluss frisch gegen EdelVerify geprüft — ein zurückgezogener Nachweis fällt damit sofort auf.

Muss sich ein angemeldeter Stammkunde jede Woche neu ausweisen?

Nein. Ist «Nachweis am Kundenkonto» eingeschaltet (WooCommerce → Einstellungen → EdelVerify, ab Werk an), hängt der Nachweis am Konto statt an der Sitzung. Wer angemeldet ist, wird nach einer bestandenen Prüfung nicht erneut gefragt, solange der Nachweis gilt — und auch nicht am zweiten Gerät: Am Telefon geprüft heisst am Rechner nicht mehr gefragt.

Wer als Gast bestellt, weist sich wie bisher je Sitzung aus.

Am Konto steht ausschliesslich, dass die Altersgrenze erfüllt war, bis wann, in welcher Betriebsart und zu welcher Prüfung das gehört. Kein Geburtsdatum, kein Name, keine Ausweisnummer — der Shop bekommt sie ohnehin nie zu sehen. Wird das Kundenkonto gelöscht, geht der Eintrag mit; über *Werkzeuge → Persönliche Daten exportieren* und *… löschen* ist er einzeln zugänglich.

Geprüft wird trotzdem bei jeder Bestellung neu. Der Eintrag am Konto ist ein Aufbewahrungsort, kein Freibrief: Ein zurückgezogener Nachweis, eine heruntergesetzte Gültigkeitsdauer oder eine verschärfte Mindeststufe wirken sofort.

Was passiert bei einer Störung?

Die Bestellung wird abgewiesen. Ein Ausfall darf keine ungeprüfte Bestellung durchlassen.

Funktioniert es mit dem Block-Checkout?

Ja. Das Plugin hängt an woocommerce_checkout_process für den klassischen Weg und an den Store-API-Haken für den Block-Checkout. Beide Wege treffen dieselbe Entscheidung an derselben Stelle im Code.

Und wenn jemand die Store-API direkt anspricht?

Dann greift derselbe Riegel. Das ist genau der Fall, für den die serverseitige Prüfung da ist.

Ich baue eine eigene Oberfläche. Woran erkenne ich die Schranke?

Am Feld extensions.edelverify in den Antworten von /wp-json/wc/store/v1/cart und /wp-json/wc/store/v1/checkout:

"extensions": { "edelverify": { "pruefung_noetig": true, "grenze": 16, "erfuellt": false } }

grenze ist die echte Grenze dieses Warenkorbs — bei gemischtem Inhalt die strengste, bei leerem Warenkorb die Vorgabe des Shops.

Damit lässt sich die Prüfung anbieten, sobald der erste altersbeschränkte Artikel im Warenkorb liegt — und nicht erst, wenn die Kundschaft die ganze Adresse eingetippt hat und die Bestellung mit einem 409 abgewiesen wird.

Drei Angaben, mehr steht dort nicht: keine Kennung, kein Nachweis, kein Nonce. Diese Antwort ist für jeden lesbar, der den Warenkorb-Token hat.

erfuellt ist Anzeige, nicht Erlaubnis. Wer den Wert im Browser umbiegt, biegt seine eigene Bildschirmanzeige um; die Bestellung wird trotzdem am Server geprüft.

Changelog

1.2.0

  • Kategorien werden ausgewählt statt abgetippt: zwei Listen, «ab 16» und «ab 18», mit dem Kategoriebaum darin. Das Textfeld mit den Slugs entfällt
  • Ein bestehender Eintrag wird beim ersten Aufruf nach dem Update übernommen. Slugs, die es nicht mehr gibt, führen zu Umfang «ganzer Shop» und zu einem Hinweis im Backend — nie zu stiller Unterdeckung
  • Neu ein Umfang: «ganzer Shop» oder «nur ausgewählte». Bisher stand diese Entscheidung nirgends — sie hing daran, ob das Kategoriefeld leer war
  • Altersgrenze je Artikel: Auswahlfeld in der Produktmaske, für die Fälle, die in keine Kategorie passen. Es kann nur verschärfen, nie lockern
  • Spalte «Altersprüfung» in der Produktliste — sie zeigt, was für jeden Artikel gilt und woher es kommt
  • Eine ausgewählte Kategorie, die gelöscht wurde, macht den ganzen Warenkorb prüfpflichtig statt still niemanden mehr zu schützen

1.1.1

  • Nach bestandener Prüfung steht in Warenkorb und Kasse eine grüne Zeile «Alter bestätigt: über 16/18» — vorher lud die Kasse neu und zeigte nichts
  • Anleitung ergänzt: Bezugsort des Archivs, Weg zu den Schlüsseln, wo die Kategorien stehen, die Meldung der erlaubten Herkunft, der Testbetrieb und der Probekauf zum Schluss

1.1.0

  • Altersgrenze einstellbar: 16 oder 18, je Kategorie, mit Vorgabe für den Shop
  • Bei gemischtem Warenkorb gilt die strengste Grenze
  • Der Beleg an der Bestellung hält die tatsächlich geprüfte Grenze fest
  • extensions.edelverify.grenze meldet die echte Grenze statt pauschal 18
  • Ein Shop, der nichts umstellt, prüft unverändert alles gegen 18

1.0.0

  • Riegel für klassischen Checkout und Block-Checkout
  • Einstellungsseite unter WooCommerce → Einstellungen → EdelVerify
  • Verbindungstest für Erreichbarkeit, beide Schlüssel und Herkunft
  • Hinweis im Backend, solange die Schlüssel fehlen

Prüfplan

Damit nehmen Sie den Einbau selbst ab, ohne uns zu fragen. Geht ein Punkt nicht durch, schicken Sie ihn uns mit der Nummer — dann wissen wir sofort, wo wir suchen.

Prüfplan — EdelVerify für WooCommerce

Diese Datei beantwortet eine einzige Frage: Woran erkennen Sie, dass der Riegel wirklich hält?

Die Einbauanleitung steht in readme.txt. Sie führt bis dahin, dass alles eingerichtet *aussieht*. Das genügt bei einer Altersprüfung nicht — eine abgeschaltete Schranke sieht auf der Bestellseite genauso aus wie eine funktionierende, solange niemand das Alter bestätigt hat und trotzdem bestellt.

Wer die Punkte 1 bis 7 abgearbeitet hat, hat es gemessen und muss es nicht mehr glauben. Rechnen Sie mit einer knappen Stunde.

Neu: die Kategorien werden ausgewählt, nicht abgetippt. Zwei Listen mit Ihrem Kategoriebaum darin, «ab 16» und «ab 18», dazu ein Auswahlfeld je Artikel für die Fälle, die in keine Kategorie passen. Ein bestehender Slug-Eintrag wird beim ersten Aufruf nach dem Update übernommen — Punkt 6 misst nach, dass dabei nichts verlorengegangen ist. Ein Shop, der nichts umstellt, prüft weiterhin alles gegen 18; das misst Punkt 5.


0. Was Sie brauchen

  • Einen Shop, in dem eine Testbestellung nicht stört — ein Staging-System oder ein frisch aufgesetzter Shop. Punkt 3 legt Bestellungen an.
  • Beide Schlüssel aus dem EdelVerify-Admin unter «Shops». Nehmen Sie die Testschlüssel (pk_test_…, sk_test_…). Damit lässt sich jeder Ausgang auf Bestellung herbeiführen, auch der, den Sie sonst nie zu sehen bekämen.
  • curl und eine Kommandozeile. Der halbe Plan läuft ohne Browser, und das ist Absicht: Wer nur die Oberfläche prüft, prüft genau den Weg, den ein Umgeher nicht nimmt.

Der geheime Schlüssel gehört nicht in eine Chatnachricht, kein Ticket und keinen Screenshot. Er ist der Riegel; wer ihn hat, stellt sich Nachweise selbst aus. Fällt er hinaus, ziehen Sie ihn im EdelVerify-Admin zurück und tragen einen neuen ein — das dauert eine Minute und ist immer die richtige Entscheidung.


1. Installation

Plugins → Installieren → Plugin hochladen → edelverify-plugin.zip → aktivieren
PrüfenErwartet
Plugin-Liste«EdelVerify — Altersprüfung über den Ausweis», aktiv
Oben im BackendGelber Hinweis «Schlüssel fehlen»
WooCommerce → EinstellungenReiter EdelVerify ist da

Der gelbe Hinweis ist kein Schönheitsfehler, sondern die erste bestandene Prüfung: Das Plugin sagt von sich aus, dass es noch nicht arbeiten kann.


2. Konfiguration und Verbindungstest

Unter WooCommerce → Einstellungen → EdelVerify:

FeldWert
Adresse des Diensteshttps://verify.edelbyte.ch
Öffentlicher Schlüsselpk_test_…
Geheimer Schlüsselsk_test_…
UmfangGanzer Shop für Punkt 5, Nur ausgewählte … für Punkt 6
Altersgrenze (Vorgabe)ab 18 Jahren — gilt, wo weder Kategorie noch Artikel etwas anderes sagt
Kategorien ab 16leer für Punkt 5; für Punkt 6 z. B. «Bier»
Kategorien ab 18leer für Punkt 5; für Punkt 6 z. B. «Spirituosen»

Die Grenze je Kategorie setzen Sie, indem Sie die Kategorie in die eine oder die andere Liste aufnehmen. Beide Listen zeigen Ihren Kategoriebaum eingerückt; Unterkategorien zählen mit, «Spirituosen» erfasst also auch «Spirituosen › Gin». Steht eine Kategorie in beiden Listen, gilt 18. Liegt Gemischtes im Warenkorb, gilt die strengste Grenze.

Die Grenze je Artikel steht in der Produktmaske unter *Produktdaten → Allgemein*, Feld «Altersprüfung». Sie kann nur verschärfen, nie lockern. Was am Ende gilt, steht unter *Produkte* in der Spalte «Altersprüfung».

Speichern, dann Verbindung prüfen. Vier Zeilen müssen grün sein: Erreichbarkeit, beide Schlüssel, Kategorien — die stehen dort mit Namen, nicht mit Nummern — und die Grenze, die dort im Klartext steht. Lesen Sie sie: Sie ist die eine Zahl, die im Streitfall zählt, und ein Auswahlfeld liest niemand nach.

Die Herkunft ist der häufigste Stolperstein. Der öffentliche Schlüssel darf nur von Adressen aus Prüfungen starten, die im EdelVerify-Admin hinterlegt sind. Läuft der Shop unter mehreren Adressen — mit und ohne www, dazu ein Staging-System —, gehören alle dorthin. Sonst schlägt die Prüfung genau auf einer davon fehl, und zwar meist auf der, die Sie nicht getestet haben.

Zum Gegenprobieren: Ändern Sie ein Zeichen im geheimen Schlüssel und drücken Sie noch einmal. Der Test muss rot werden. Wird er grün, prüft er nichts.


3. Der Riegel — ohne jede Altersbestätigung

Der wichtigste Abschnitt. Geprüft wird gegen die Store-API, nicht über die Oberfläche: Das ist derselbe Weg, den der Block-Checkout intern nimmt, und gleichzeitig der Weg, den jemand nähme, der die Schranke umgehen will.

Für einen Shop unter https://ihr-shop.example liegt fertig bei:

./scripts/pruefe-shop.sh https://ihr-shop.example

Es misst drei Behauptungen nach:

  1. Ein Artikel ohne Altersgrenze lässt sich bestellen.
  2. Ein altersbeschränkter Artikel wird abgewiesen.
  3. Die Abweisung kommt aus EdelVerify (edelverify_age_required) und nicht zufällig von woanders — einer fehlenden Versandart etwa.

Das Skript legt Bestellungen an (Zahlungsart «Nachnahme»). Führen Sie es nicht gegen einen Shop aus, in dem echte Bestellungen liegen. Es geht auch nicht von den Kategorien Ihres Shops aus, sondern von denen des Demo-Shops (zubehoer, liquids) — für den eigenen Shop die beiden Stellen im Skript anpassen.

Der Stand für entkoppelte Oberflächen. Wer eine eigene Storefront, eine App oder eine kopflose Oberfläche baut, muss die Schranke anzeigen können, bevor die Kundschaft die Adresse eingetippt hat. Dafür hängt das Plugin drei Angaben an die Store-API:

curl -s https://ihr-shop.example/wp-json/wc/store/v1/cart -b kekse.txt \
  | python3 -c "import sys,json; print(json.load(sys.stdin).get('extensions',{}).get('edelverify'))"
WarenkorbErwartet
leer{'pruefung_noetig': False, 'grenze': <Vorgabe>, 'erfuellt': True}
Artikel ohne Altersgrenzepruefung_noetig: False
altersbeschränkter Artikel, ungeprüftpruefung_noetig: True, erfuellt: False
derselbe, nach bestandener Prüfungpruefung_noetig: True, erfuellt: True
nur Bier (bier:16)grenze: 16
Bier und Gin (spirituosen:18)grenze: 18 — die strengste gewinnt

grenze ist seit der zweiten Schwelle die echte Grenze dieses Warenkorbs, nicht mehr pauschal 18. Bei leerem Warenkorb steht dort die Vorgabe des Shops: Ein Client soll wissen, womit er zu rechnen hat, bevor die erste Flasche im Korb liegt.

Kommt None zurück, ist das Plugin älter als diese Angabe oder der Block-Support fehlt. Steht dort ein av_… oder eine Kennung, melden Sie es uns — dort gehört nichts hin ausser diesen drei Werten.

Beide Kassenwege einzeln prüfen. WooCommerce liefert heute den Block-Checkout aus, viele Shops laufen noch klassisch, und das Plugin hängt an zwei verschiedenen Haken:

WegHaken im PluginWie prüfen
Block-Checkout / Store-APIwoocommerce_store_api_cart_errorsdas Skript oben
Klassischer Checkoutwoocommerce_checkout_processSeite mit [woocommerce_checkout] aufrufen und von Hand bestellen

Beide müssen abweisen. Greift nur einer, hat der Shop eine Kasse ohne Schloss — und es fällt niemandem auf, weil die andere hält.


4. Eine vollständige Prüfung, von Anfang bis Ende

Testschlüssel sprechen den Prüfdienst des Bundes gar nicht erst an. Sie stehen vier Sekunden auf PENDING — damit die Abfrageschleife wirklich durchläuft — und nehmen dann den Ausgang, den Sie bestellt haben.

  1. Altersbeschränkten Artikel in den Warenkorb legen.
  2. Zur Kasse. Es erscheint der Hinweis mit dem Knopf «Alter bestätigen».
  3. Klicken. Das Fenster geht auf, mit QR-Code.
  4. Nach wenigen Sekunden wird es grün.
  5. Jetzt nicht neu laden, sondern warten, bis die Seite es von sich aus tut.

Punkt 5 ist der Fehler, den fast jede Einbindung einmal macht. «Grün» heisst: die Prüfung ist bestanden. Es heisst nicht, dass Ihr Shop davon weiss — die Rückmeldung an /wp-json/edelverify/v1/confirm läuft in diesem Augenblick erst los. Wer hier neu lädt, bricht sie ab. Der Nachweis wird nur einmal ausgeliefert und ist damit verbrannt: Die Seite kommt mit derselben Schranke zurück, und für die Kundschaft sieht es aus, als hätte die Prüfung nichts bewirkt.

  1. Bestellen. Die Bestellung geht durch.
  2. WooCommerce → Bestellungen: Die Spalte EdelVerify zeigt den Beleg.

Was in der Bestellung stehen muss und was nicht:

FeldInhalt
edelverify_verified1
edelverify_checked_atZeitpunkt
edelverify_min_agedie tatsächlich durchgesetzte Grenze — 16 bei einem Bier-Warenkorb, 18 bei Gin
edelverify_modetest
edelverify_check_refacht Zeichen, zum Wiederfinden im EdelVerify-Admin
der Nachweis selbststeht nirgends — er ist eingelöst, nicht abgelegt

Steht dort ein av_…, ist etwas falsch: Der Nachweis ist ein Inhaberpapier und gilt dreissig Tage. Wer ihn aus dem Bestellexport abschreibt, kauft damit einen Monat lang ohne Prüfung.

Steht in edelverify_min_age pauschal 18, obwohl der Warenkorb nur Bier enthielt, ist der Beleg falsch — dann läuft eine ältere Fassung des Plugins. Der Beleg muss die Grenze festhalten, gegen die wirklich geprüft wurde; das ist der ganze Zweck der Zeile.


5. Der Fall, den Sie am seltensten sehen und am dringendsten können müssen

Ein Shop, der nur den Erfolgsfall geprüft hat, hat die Altersprüfung nicht geprüft. Mit Testschlüsseln lässt sich jeder Ausgang bestellen — dafür sind sie da.

Der Ausgang wird beim Start der Prüfung mitgegeben. Am schnellsten von Hand:

# Prüfung mit dem gewünschten Ausgang beginnen
curl -s -X POST https://verify.edelbyte.ch/api/v1/verifications \
  -H "x-api-key: $SK" -H 'content-type: application/json' \
  -d '{"reference":"pruefplan","test_outcome":"under_18"}'

# vier Sekunden warten, dann den Stand holen
sleep 5
curl -s "https://verify.edelbyte.ch/api/v1/verifications/<id>" -H "x-api-key: $SK"
test_outcomeErwartetWas der Shop tun muss
successSUCCESS, age_ok: true, Nachweis dabeidurchlassen
under_18SUCCESS, age_ok: false, kein Nachweisabweisen
failedFAILED, error_code: test_failedabweisen
expiredEXPIREDabweisen, neu anbieten
ueber_18 (Tippfehler)400 invalid_test_outcome—

SUCCESS heisst «die Prüfung ist abgeschlossen», nicht «alt genug». Massgeblich ist age_ok. Eine Einbindung, die nur auf den Status schaut, lässt bei under_18 durch — und merkt es nie, weil dieser Fall im Alltag fast nie vorkommt.

`over_18` ist nicht `age_ok`. Bei einer Prüfung gegen 16 steht in over_18 auch dann false, wenn die Person die Grenze erfüllt — geprüft wurde ja gegen 16, nicht gegen 18. Eine Einbindung, die weiterhin nur over_18 liest, weist damit jede bestandene 16er-Prüfung ab. Im 18er-Betrieb fällt das nie auf, weil dort beide Felder dasselbe sagen. Nachgemessen an der laufenden Anlage: python3 scripts/api-vertragstest.py, Abschnitt 10.

Im Shop durchspielen: Kasse aufrufen, Prüfung starten, und wenn das Fenster rot wird, trotzdem bestellen. Die Bestellung muss abgewiesen werden.


6. Die zweite Schwelle — Bier ab 16, Gin ab 18

Nur nötig, wenn Sie zwei Grenzen führen. Wer alles gegen 18 prüft, überspringt diesen Abschnitt; Punkt 5 hat für ihn bereits alles gemessen.

Stellen Sie den Umfang auf «Nur ausgewählte …», wählen Sie unter «Kategorien ab 16» die Kategorie *Bier* und unter «Kategorien ab 18» die Kategorie *Spirituosen*.

WarenkorbErwartet
nur BierStreifen sagt «über 16», Prüffenster sagt «Über 16 bestätigt»
nur GinStreifen sagt «über 18»
Bier und GinStreifen sagt «über 18» — die strengste Grenze gewinnt
Bier, geprüft, dann Gin dazulegenKasse geht wieder zu

Die letzte Zeile ist die wichtige. Sie misst, ob das Plugin ein «ja» für 16 in einen Warenkorb ab 18 hinüberträgt. So führen Sie sie herbei:

  1. Nur Bier in den Warenkorb, Prüfung bestehen, Kasse ist offen.
  2. Innerhalb von drei Minuten eine Flasche Gin dazulegen.
  3. Zur Kasse. Sie muss zu sein und nach einer neuen Prüfung verlangen.

Drei Minuten, weil das Plugin ein bestandenes Ergebnis so lange zwischenspeichert. Bliebe die Kasse offen, wäre der Zwischenspeicher an die Grenze nicht gebunden — und das Loch wäre exakt drei Minuten breit und für niemanden sichtbar.

  1. Danach die Prüfung wiederholen. Jetzt läuft sie gegen 18 und die Kasse öffnet wieder.
  2. Zum Gegenprobieren die Flasche Gin wieder hinauswerfen: Der Nachweis ab 18 löst auch den Bier-Warenkorb ein, es ist keine neue Prüfung nötig.

Am Bestellbeleg prüfen: edelverify_min_age steht bei der Bier-Bestellung auf 16 und bei der gemischten auf 18. Steht überall 18, hält der Beleg die falsche Grenze fest.

Ohne Browser, direkt gegen die Schnittstelle — dasselbe in drei Aufrufen:

# 16er-Prüfung starten
curl -s -X POST https://verify.edelbyte.ch/api/v1/verifications \
  -H "x-api-key: $SK" -H 'content-type: application/json' \
  -d '{"reference":"pruefplan","min_age":16,"test_outcome":"success"}'

sleep 5
# Stand holen — ACHTUNG: over_18 ist hier false, age_ok ist true
curl -s "https://verify.edelbyte.ch/api/v1/verifications/<id>" -H "x-api-key: $SK"

# Der Nachweis ab 16 löst Ware ab 18 NICHT ein
curl -s -X POST https://verify.edelbyte.ch/api/v1/proofs/verify \
  -H "x-api-key: $SK" -H 'content-type: application/json' \
  -d '{"proof":"av_…","min_age":18}'      # → valid: false
AufrufErwartet
min_age: 16 beim Start201, Antwort trägt min_age: 16
min_age: 17, 21, "18", null, 0400 invalid_min_age
Start ohne min_age201 mit der Vorgabe Ihres Kontos (ab Werk 18)
Nachweis ab 16 → Ware ab 18200 mit valid: false
Nachweis ab 18 → Ware ab 16200 mit valid: true
Einlösen mit min_age: 17200 mit valid: false — hier gibt es kein 4xx

7. Fail-closed — jede Störung endet in einer gesperrten Kasse

Nach jedem Fall die Einstellung wieder zurücksetzen.

FallWie herbeiführenErwartet
Prüfstelle wegAdresse des Dienstes auf https://127.0.0.1:9Kasse zu, Antwort nach ≤ 10 s
Geheimer Schlüssel falschein Zeichen ändernKasse zu
Kein geheimer SchlüsselFeld leerenKasse zu
Öffentlicher Schlüssel falschein Zeichen ändernFenster geht gar nicht erst auf
Herkunft nicht hinterlegtAdresse im EdelVerify-Admin entfernen403 origin_not_allowed, Kasse zu
Nachweis verfälschtin der Sitzung edelverify_proof ein Zeichen ändernKasse zu
Nachweis abgelaufenim EdelVerify-Admin die Gültigkeit auf 0 Tage stellenKasse zu
Schlüssel gewechseltnach bestandener Prüfung sk_ austauschenKasse sofort zu
Prüfung noch offeneine PENDING-Kennung an /wp-json/edelverify/v1/confirm senden422 not_verified
Nachweis schon abgeholtdieselbe Kennung zweimal senden2. Mal 409 proof_consumed
Umfang «Ganzer Shop»umstellender ganze Shop wird geprüft, gegen die Vorgabe
Umfang «Nur ausgewählte …», beide Listen leerleerennichts wird geprüft — der Verbindungstest meldet es rot
UnterkategorieWare nur in «Spirituosen › Gin» führen, «Spirituosen» wählenprüfpflichtig ab 18
Grenze am ArtikelArtikel ohne Kategorie auf «immer ab 18» stellenprüfpflichtig ab 18, Spalte sagt «am Artikel»
Artikel milder als KategorieArtikel in «Spirituosen», am Artikel «immer ab 16»bleibt 18 — der Artikel kann nicht unterbieten
Unbekannte Grenzebier:17 eintragengilt als 18, Zeile im WooCommerce-Log
Gelöschte Kategorieeine ausgewählte Kategorie löschenganzer Warenkorb prüfpflichtig, gegen 18, Eintrag im WooCommerce-Log
Grenze zu schwachmit 16er-Nachweis Gin bestellenKasse zu, auch innerhalb der drei Minuten
Plugin ausdeaktivierenBestellung geht durch, kein Netzaufruf

Die vorletzte Zeile ist kein Fehler, sondern eine Entscheidung: Ein leeres Umfang «Ganzer Shop» heisst «alles prüfen», nicht «nichts prüfen». Für einen Laden, der auch Zubehör ohne Altersgrenze führt, ist das zu weit — deshalb steht es hier, damit es beim Ausprobieren nicht überrascht.

Die Zeile «Schlüssel gewechselt» prüft etwas Feineres: Das Plugin merkt sich das Ergebnis kurz zwischen (edelverify_ok_…, drei Minuten). Wird der Riegel erst nach Ablauf dieser Zeit dicht, gilt der Zwischenspeicher für den falschen Schlüssel — dann muss der Cache-Schlüssel den geheimen Schlüssel einbeziehen. Für die Altersgrenze gilt dasselbe, und die Zeile «Grenze zu schwach» misst es: Der Zwischenspeicher unterscheidet nach verlangter Grenze, sonst öffnete ein «ja» für Bier drei Minuten lang auch den Gin.


7b. Der Nachweis am Kundenkonto

Nur sinnvoll mit eingeschaltetem Schalter Nachweis am Kundenkonto (WooCommerce → Einstellungen → EdelVerify, ab Werk an) und mit einem Testschlüssel.

FallWie herbeiführenErwartet
Angemeldet geprüftanmelden, prüfen, abmelden, wieder anmeldenKasse offen, kein Prüffenster
Zweites Gerätin Browser A prüfen, in Browser B als dieselbe Person anmeldenKasse offen, kein Prüffenster
Gast prüft, meldet sich anals Gast prüfen, dann anmelden, Seite neu ladenNachweis liegt am Konto: wp user meta get <id> edelverify_konto_nachweis
Zwei Konten, ein Gerätmit A prüfen, abmelden, als B anmeldenB sieht das Prüffenster — A's Nachweis wandert nicht mit
Abmeldennach bestandener Prüfung abmeldenSitzung leer, Konto behält den Eintrag
Gast nach Abmeldennach dem Abmelden als Gast weiterklickenPrüffenster erscheint wieder
Gültigkeit gesenktim EdelVerify-Admin von 30 auf 0 Tage stellen, neu prüfenKasse zu — der Eintrag am Konto verschwindet
Mindeststufe verschärftnach einer Zeilen-Prüfung im Admin «nur Chip» einstellenKasse zu, Eintrag am Konto verschwindet
Schlüssel gewechseltsk_ austauschenEintrag am Konto gilt nicht mehr (Abdruck passt nicht), Prüffenster erscheint
Konto gelöschtBenutzer in WordPress löschenwp user meta get findet nichts mehr
DatenauskunftWerkzeuge → Persönliche Daten exportierenGrenze, Gültigkeit, Betriebsart, Kennung — kein Nachweis (av_…)
DatenlöschungWerkzeuge → Persönliche Daten löschenEintrag weg, Prüffenster erscheint wieder
Schalter ausKontobindung abschaltenverhält sich wie vor der Umstellung: alles hängt an der Sitzung

Zwei Zeilen sind die wichtigen. «Zwei Konten, ein Gerät» ist der Fall, in dem ein falsch gebautes Plugin eine Altersbestätigung weitergibt, ohne dass es jemand merkt — das ist am Familienrechner nicht die Ausnahme, sondern der Regelfall. Und «Gültigkeit gesenkt» misst, ob der Shop gegen die heutige Einstellung rechnet oder gegen die von damals: Wer sich die Frist beim Abholen notiert und danach nur noch sich selbst liest, lässt einen alten Nachweis dreissig Tage weiterlaufen, obwohl der Händler ihn längst auf fünf gesetzt hat.

Nachsehen lässt sich der Eintrag mit der WP-CLI:

wp user meta get <benutzer-id> edelverify_konto_nachweis

Darin stehen dürfen: proof, grenze, gilt_bis, mode, ref, abdruck. Was dort nicht stehen darf und auch nicht entstehen kann: Geburtsdatum, Name, Ausweisnummer.


7c. Die Frist, die Stufe und der nicht geladene Warenkorb

Drei Handgriffe, die von Hand gemacht werden müssen: Auf diesem Rechner ist kein PHP installiert, das Plugin ist also nicht ausgeführt worden. Belegt ist nur die Seite des Dienstes (bun test, siehe src/lib/shop/fristen.test.ts und src/lib/shop/stufe.test.ts).

Eine gesenkte Gültigkeitsdauer wirkt sofort

Der Fall, der bis zu dieser Fassung nicht funktionierte: Ein Nachweis, der unter dreissig Tagen ausgestellt wurde, lief weiter dreissig Tage, auch wenn der Händler den Regler danach auf fünf zog.

SchrittErwartet
1. Im EdelVerify-Konto Nachweis gilt (Tage) auf 30 stellen, prüfen, Kasse offenKasse offen
2. Regler auf 1 stellen, in der Kasse neu ladennoch offen (der Nachweis ist keinen Tag alt)
3. Regler auf 30 zurück, dann direkt in der Datenbank completedAt der Prüfung zehn Tage zurückdatierenKasse offen (10 < 30)
4. Regler auf 5 stellen, in der Kasse neu ladenKasse zu, Prüffenster erscheint, Eintrag am Konto verschwindet
5. Regler wieder auf 30 stellen, neu ladenKasse bleibt zu — eine erhöhte Frist belebt nichts wieder

Schritt 5 ist der wichtigere der beiden. Eine Frist, die sich durch einen Handgriff im Portal rückwirkend verlängern liesse, wäre keine.

Gegenprobe ohne Shop, direkt am Dienst — expires_at muss die kürzere der beiden Fristen tragen:

curl -s https://verify.edelbyte.ch/api/v1/proofs/verify \
  -H 'content-type: application/json' -H 'x-api-key: sk_…' \
  -d '{"proof":"av_…","min_age":18}' | grep expires_at

Ein Nachweis auf zu schwacher Stufe wird weggeräumt

SchrittErwartet
1. Im EdelVerify-Konto die Ausweiszeilen freischalten, über die Zeilen prüfenKasse offen
2. Mindeststufe zurück auf nur Chip stellenKasse zu
3. wp user meta get <id> edelverify_konto_nachweisleer — der Nachweis ist weg und nicht liegen geblieben
4. wp-content/uploads/wc-logs/edelverify-*.log ansehenZeile «Nachweis auf einer Stufe, die dieser Shop nicht gelten lässt — entstanden über ausweis_mrz, verlangt wird mindestens ausweis_nfc»
5. Dasselbe mit einer Flasche Gin im Korb (18) und einem 16er-Nachweis auf Zeilen-Stufeebenfalls weg — nicht «zu jung, liegen lassen»

Schritt 5 ist der eigentliche Gegenstand. Vorher meldete der Dienst hier «zu jung», das Plugin liess den Nachweis liegen, und er wurde bis zum Verfall wieder und wieder vorgelegt, obwohl er an dieser Kasse nie etwas eingelöst hätte. Die Schranke blieb dabei zu — aufgeräumt wurde nur nie.

Zum Vergleich der Fall, der weiterhin liegen bleiben muss: ein 16er-Nachweis auf zulässiger Stufe, Gin im Korb. Fliegt die Flasche hinaus, muss die Kasse ohne neue Prüfung aufgehen.

«Wir konnten nicht nachsehen» ist keine Freigabe

cart_min_age() gab bis hierher null — «keine Prüfung nötig» — sowohl beim leeren Warenkorb als auch dann, wenn WC()->cart gar nicht geladen war. Auf den Wegen, die zählen, war das nicht erreichbar; die Form gehört trotzdem zu.

SchrittErwartet
1. Eine Bestellung von Hand im Backend anlegen (WooCommerce → Bestellungen → Neu)Bestellung entsteht wie bisher
2. Spalte EdelVerify in der Bestellliste ansehenleer — und ausdrücklich nicht mehr «nicht nötig»
3. Eine gewöhnliche Bestellung über die Kasseunverändert «ja» mit Grenze, Zeit, Betriebsart

Schritt 2 ist die sichtbare Folge: Wo niemand nachgesehen hat, wird auch nichts behauptet. Ein Beleg «Prüfung nicht nötig» an einer Bestellung, deren Ware das Plugin nie zu Gesicht bekommen hat, wäre im Streitfall wertlos — schlimmer noch, er sähe aus wie eine Feststellung.


8. Was ohne diesen Plan bereits belegt ist

Damit Sie wissen, wo Sie ansetzen und wo nicht:

BehauptungWomit belegt
Jeder angemeldete Haken hat eine Methodepython3 scripts/pakete-pruefen.py woocommerce
Kein Fehlerweg endet in einer Freigabepython3 scripts/pakete-pruefen.py, Abschnitt E
over_18 genügt nirgends allein als Freigabedieselbe Prüfung, Abschnitt J
Die Grenze reist mit — Einlösen, Zwischenspeicher, Vorgabe 18dieselbe Prüfung, Abschnitt K
Die Prüfungen J, K und E schlagen überhaupt noch andieselbe Prüfung, Abschnitt «Selbstprüfung»
Kein geheimer Schlüssel gelangt in den Browserdieselbe Prüfung, Abschnitt F
Alle drei aufgerufenen API-Pfade gibt es wirklichdieselbe Prüfung, Abschnitt G
Die Schnittstelle verhält sich wie beschriebenpython3 scripts/api-vertragstest.py (läuft gegen verify.edelbyte.ch)
16 und 18 verhalten sich wie oben beschriebendieselbe Prüfung, Abschnitt 10
Der Riegel hält im Demo-Shop./scripts/pruefe-shop.sh gegen woocommerce.edelbyte.ch

Was nicht belegt ist und nur dieser Plan klärt: dass es in Ihrem Shop hält — mit Ihrem Theme, Ihren Kategorien, Ihren Zahlungsarten und Ihrem Kassenweg.


9. Was heute noch nicht geht

Damit Sie es hier erfahren und nicht nach der Installation:

  • Zwei Schwellen, nicht mehr. 16 und 18 — geprüft wird gegen eine Schwelle, nicht auf ein Geburtsdatum. Eine 21 gibt es nicht, und ein Feld, in das man sie eintragen könnte, ohne dass sie wirkt, wäre schlimmer als keines.
  • Keine Webhooks. Der Stand wird abgefragt, nicht zugestellt. Prüft die Kundschaft am Handy, während der Rechner-Tab geschlossen ist, erfährt der Shop davon nichts.
  • Ein Nachweis gilt bei einem Shop. Wer mehrere Shops betreibt, braucht je Shop ein eigenes Schlüsselpaar.
  • Der E-ID-Weg ist abgeschaltet. Der Bund hat die Einführung am
  • Juni 2026 verschoben und nennt kein neues Datum; einen Wahlschirm gibt es deshalb nicht, die Ausweisprüfung startet sofort. Was Sie prüfen, ist der Ausweis-Weg — und der läuft. Bauen und prüfen Sie trotzdem zuerst mit Testschlüsseln; am Tag der Umstellung tauschen Sie zwei Zeichenfolgen aus, sonst nichts.