Zum Inhalt springen
blueforce.ch Weniger Agentur. Mehr Mensch.

Alterskontrolle in WooCommerce: die Lücke beim Schnellkauf

Ein Pflichtfeld fürs Geburtsdatum nützt wenig, wenn Apple Pay, PayPal und TWINT auf der Produktseite daran vorbeiführen. So habe ich die Lücke geschlossen, und daraus wurde ein kostenloses Plugin.

Spirituosenflasche auf einer Shop-Produktseite, darunter drei gesperrte Bezahlknöpfe und ein Schild mit 18+

Ein Spirituosen-Shop, ein Pflichtfeld für das Geburtsdatum und eine Reihe von Bezahlknöpfen, die einfach daran vorbeiführen. Wie aus einem Kundenprojekt mit schnapsdealer.ch ein kostenloses Plugin für alle WooCommerce-Shops wurde.

Wer Alkohol online verkauft, muss das Alter der Kundschaft im Blick haben. In der Schweiz gilt für Bier und Wein ein Mindestalter von 16 Jahren, für Spirituosen 18. Die meisten Shops lösen das mit einem Feld an der Kasse: Geburtsdatum eingeben, fertig.

So war es auch bei schnapsdealer.ch, einem Onlineshop für Spirituosen, den ich betreue. Bei meiner ersten Analyse im September ist mir dieses Feld aufgefallen, und ich habe genauer hingeschaut.

Ein Pflichtfeld, das nichts prüft

Das Feld war da, und es war Pflicht. Nur war es ein gewöhnliches Textfeld. Eintragen liess sich alles, ein Datum im Jahr 2015 genauso wie «weiss nicht». Geprüft wurde nur, ob etwas drinsteht, nicht was.

Das ist kein Einzelfall, sondern die übliche Lösung: Man legt mit einem Feld-Editor ein zusätzliches Feld an und markiert es als Pflicht. Das sieht nach Alterskontrolle aus, ist aber keine. In sehr vielen Shops sieht es genau so aus.

Die Knöpfe, die an der Kasse vorbeiführen

Der eigentliche Fund kam danach. Auf den Produktseiten stehen heute Schnellkauf-Knöpfe: Apple Pay, Google Pay, PayPal, TWINT. Ein Klick, bezahlen, fertig. Genau dafür sind sie da: Sie überspringen die Kasse.

Und damit auch das Formular. Mitsamt dem Feld für das Geburtsdatum.

Jeder Zahlungsanbieter ging anders damit um. Einer brach auf der Produktseite schlicht ab, weil ihm die Pflichtfelder fehlten. Der Knopf stand da und tat nichts. Ein anderer fragte gar nicht erst nach Pflichtfeldern. Dort wäre eine Bestellung ohne jedes Geburtsdatum durchgegangen.

Das Tückische daran: Man sieht es nicht. Wer im eigenen Shop testet, bestellt über die Kasse, und dort funktioniert alles. Die Lücke zeigt sich erst, wenn jemand den kurzen Weg nimmt.

Die Aufgabe drehte sich um

Die naheliegende Lösung wäre gewesen, die Schnellkauf-Knöpfe abzuschalten. Sicher, aber schade: Gerade beim spontanen Kauf auf dem Handy sind sie der bequemste Weg zur Bestellung.

Also habe ich es andersherum gelöst. Das Geburtsdatum wird dort abgefragt, wo die Knöpfe stehen, direkt auf der Produktseite. Erst wenn es gültig ist, lassen sich die Knöpfe benutzen. Geprüft wird auf dem Server, nicht im Browser, denn ein Feld im Browser lässt sich mit zwei Klicks umgehen.

Für den Knopf, der vorher ins Leere lief, hiess das sogar: Er funktioniert zum ersten Mal.

Weil sich Zahlungsplugins mit jedem Update ändern können, kam ein Sicherheitsnetz dazu. Jede verbindliche Bestellung ohne gültige Altersprüfung löst eine Meldung an den Shop aus. So lässt sich das Alter klären, bevor die Ware das Haus verlässt.

Ablaufgrafik: Bestellungen über die Kasse, über Schnellkauf-Knöpfe wie Apple Pay, Google Pay, PayPal und TWINT oder direkt über die Schnittstelle laufen alle durch eine Prüfung auf dem Server. Reicht das Alter, geht die Bestellung durch, sonst wird sie abgewiesen. Ein Sicherheitsnetz meldet Bestellungen ohne gültige Prüfung.
Egal auf welchem Weg eine Bestellung kommt: Sie muss durch die Prüfung auf dem Server.

Seit Mitte September läuft diese Lösung bei schnapsdealer.ch, und die ersten bezahlten Schnellkäufe mit TWINT kamen mit bestätigtem Alter an.

Vom Kundenprojekt zum Plugin

Beim Bauen wurde mir klar: Das Problem hat nicht nur dieser eine Shop. Jeder WooCommerce-Shop, der Alkohol, Tabak oder andere altersbeschränkte Ware verkauft und Schnellkauf-Knöpfe anbietet, hat dieselbe Lücke. Die verbreiteten Alters-Plugins lösen etwas anderes: Sie zeigen beim Öffnen des Shops ein Popup mit «Bist du über 18?». Das ist mit einem Klick erledigt und hat mit der Bestellung nichts zu tun.

Also habe ich die Lösung neu aufgebaut, diesmal für alle. Seit dem 21. September steht Blueforce Age Check for WooCommerce kostenlos im WordPress-Verzeichnis. Nach meinem Plugin für TWINT-Zahlungen ist es das zweite dort.

Version 1.1.0 folgte drei Tage später, mit einer Funktion, die ein Getränkeshop in der Praxis braucht: ein Mindestalter pro Produktkategorie. 16 für Bier und Wein, 18 für Spirituosen, keines für Mineralwasser. Liegt beides im Warenkorb, gilt die strengere Regel.

Was das Plugin kann

  • Kein Popup. Das Geburtsdatum ist ein Feld an der Kasse, im klassischen wie im Block-Checkout.
  • Geprüft auf dem Server. Wer das Feld im Browser manipuliert, kommt nicht durch. Auch direkte Bestellungen über die Schnittstelle von WooCommerce werden abgewiesen.
  • Schnellkauf-Knöpfe eingeschlossen. Für Stripe mit Apple Pay und Google Pay, für PayPal und für TWINT fragt das Plugin das Geburtsdatum direkt neben den Knöpfen ab.
  • Mindestalter pro Kategorie und pro Produkt. Das alkoholfreie Bier in der Bier-Kategorie bekommt sein eigenes Alter.
  • Sicherheitsnetz. Jede verbindliche Bestellung ohne gültige Prüfung erzeugt eine Bestellnotiz, einen Protokolleintrag und eine Mail.
  • Datensparsam. Standardmässig speichert es nur das Ergebnis und das Alter, nicht das Geburtsdatum. Im Kundenkonto landet es nie.
  • Ohne fremde Dienste. Kein Tracking, keine Verbindung zu anderen Servern.
  • Auf Deutsch, für Deutschland und die Schweiz, jeweils in Du- und Sie-Form.

Was es nicht ist

Das gehört für mich nach vorne, nicht ins Kleingedruckte: Das Plugin prüft ein Geburtsdatum, das die Kundschaft selbst eingibt. Es prüft keinen Ausweis. Wer lügen will, kann lügen.

Was es leistet, ist etwas anderes: Es macht aus einem Feld, das nur so aussah, eine Prüfung, die tatsächlich greift, und zwar auf jedem Weg zur Bestellung. Es unterstützt einen Shop bei der Alterskontrolle, es garantiert keine Rechtskonformität. Wer eine echte Ausweisprüfung braucht, nimmt dafür einen spezialisierten Dienst.

Mein Fazit

Am meisten hat mich überrascht, wie unsichtbar die Lücke war. Der Shop sah korrekt aus, das Pflichtfeld war da, jeder Test an der Kasse ging durch. Die Schwachstelle lag an einem Ort, an dem niemand ein Formular erwartet: auf der Produktseite, einen Klick vom Bezahlen entfernt.

Genau so entstehen für mich die besten Werkzeuge. Nicht am Reissbrett, sondern aus einem echten Problem in einem echten Shop, gelöst so, dass es auch anderen hilft.

Kostenlos ausprobieren

Blueforce Age Check for WooCommerce ist kostenlos. Du findest es im WordPress-Verzeichnis oder direkt in deinem Shop unter Plugins, Installieren, mit der Suche nach «Blueforce Age Check». Wenn du Hilfe beim Einrichten brauchst oder deine Bezahlknöpfe prüfen lassen willst, melde dich bei mir.

Zum Plugin im WordPress-Verzeichnis