Direkt zum Inhalt

Cookie-Einstellungen

Wählen Sie, welche Arten von Cookies Sie erlauben. Sie können Ihre Auswahl jederzeit über Cookie-Einstellungen unten auf jeder Seite ändern. Datenschutzerklärung

Notwendig

Immer aktiv

Nötig zum Einloggen, für Ihren Warenkorb und um Ihre Auswahl zu speichern. Diese sind immer aktiv.

Welche Cookies?
  • weboke_sessie, weboke_klant, weboke_remember: Ihre Sitzung und eingeloggt bleiben
  • weboke_basket: Ihr Warenkorb
  • wkBtwIncl: Preise mit oder ohne MwSt. anzeigen
  • wok_cookies: Ihre Cookie-Auswahl, 12 Monate

Misst, welche Anzeige zu einem Besuch oder einer Bestellung führt, damit wir nicht für Anzeigen zahlen, die nichts bringen.

Welche Cookies?
  • Google Ads über Google Tag Manager (_gcl_au, _gcl_aw), bis zu 90 Tage
  • OpenAI Ads, Anzeigen in ChatGPT
  • wok_aff: über welchen Partner Sie zu uns kamen (Partnerprogramm), 60 Tage

4,6

Land und Sprache

Jedes Land hat seine eigene Website, mit Preisen und MwSt. dieses Landes.

Anzeigen

Modul 2 · 2.4

Deutsch

Was Ihr Shop öffentlich zeigt

Modul 2: Installieren und einrichten · Lesezeit: 10 Minuten

Lernziel: Nach dieser Lektion können Sie erklären, was die Store API und die REST-API von WooCommerce sind, welche Daten öffentlich sein sollten und welche nicht, und wie Sie API-Schlüssel und Webhooks sicher verwenden.

Kernbegriffe: API, REST-API von WordPress, Store API (wc/store/v1), REST-API von WooCommerce (wc/v3), JSON, öffentlich und geschützt, API-Schlüssel, Lese- und Schreibrechte, minimale Rechte, Webhook, geheimer Schlüssel eines Webhooks, X-WP-Total

Ein Laden mit zwei Türen

Ein Besucher sieht Ihren Shop als Webseiten. Ihr Shop hat aber auch "Türen" für Programme: Adressen, über die ein Programm Daten abrufen oder senden kann, ohne die Gestaltung einer Seite. So eine Tür heißt API (Application Programming Interface). WordPress hat eine unter /wp-json/, die REST-API. Der WordPress-Kurs hat in Lektion 7.3 gezeigt, dass Sie dort zum Beispiel Benutzernamen abrufen können, wenn Sie nichts absichern.

WooCommerce fügt zwei eigene APIs hinzu, mit ganz unterschiedlichem Zweck:

Store APIREST-API von WooCommerce
Adresse/wp-json/wc/store/v1/.../wp-json/wc/v3/...
Für wenDen Browser eines Besuchers (die Blöcke für Warenkorb und Kasse, Lektion 2.2)Andere Programme: Buchhaltung, Lagerverwaltung, eine App, eine Anbindung an einen Marktplatz
Schlüssel nötigNein, öffentlichJa, ein API-Schlüssel eines Administrators (oder ein angemeldeter Benutzer mit Rechten)
Was enthalten istProdukte, Preise, Lagerstatus, Kategorien, Bewertungen; der Warenkorb und die Bestellung des Besuchers selbstAlles: Bestellungen aller Kunden, Kunden, Gutscheine, Einstellungen, Berichte

Die Store API ist also der Eingang zum Schaufenster: Was in Ihrem Shop auf einer Produktseite steht, steht auch dort, nur als Daten. Die REST-API von WooCommerce ist die Hintertür zum Lager: Die gehört abgeschlossen.

Die Store API: was ein Besucher (und jeder) abrufen kann

Öffnen Sie in Ihrem Browser:

https://shop.example.com/wp-json/wc/store/v1/products

Sie erhalten eine Liste in JSON, einem Textformat für Daten. Für jedes Produkt sehen Sie unter anderem den Namen, den Slug, den Typ (einfach, variabel), die Adresse der Produktseite (permalink), die Artikelnummer (SKU), die Preise, Bilder, Kategorien, ob es vorrätig ist und ob es käuflich ist. In den Kopfzeilen der Antwort steht X-WP-Total: die Anzahl der Produkte, die der Shop Besuchern zeigt.

Einige Dinge, die Sie wissen sollten:

  • Preise stehen in Cent. Eine Teekanne für € 34,95 steht dort als "price": "3495" mit "currency_minor_unit": 2. Sie teilen durch 100. Ob das der Preis mit oder ohne Umsatzsteuer ist, hängt von Ihrer Einstellung bei "Preise im Shop anzeigen" ab (Lektion 4.1). Diese Eigenschaft nutzen wir in der Aufgabe von Lektion 4.1.
  • Nur was sichtbar ist. Produkte, die als Entwurf gespeichert, privat oder im Katalog verborgen sind, zählt die Store API nicht mit. Deshalb kann X-WP-Total niedriger sein als die Anzahl in Ihrer Verwaltung.
  • Lesen darf jeder, schreiben nicht ohne Weiteres. Etwas in den Warenkorb legen oder bezahlen über die Store API geht nur mit einem Einmalcode (Nonce) aus der Seite, und dann nur für den eigenen Warenkorb dieses Besuchers.

Ist es schlimm, dass das öffentlich ist? Nein: Es sind dieselben Daten, die auf Ihren Produktseiten stehen. Ein Wettbewerber, der Ihre Preise beobachten will, kann das auch über die normalen Seiten. Sie sollten sich aber bewusst sein: Alles, was Sie in ein Produktfeld eintragen, kann in der Store API landen. Tragen Sie niemals Einkaufspreise, Namen von Lieferanten oder interne Notizen in die kurze oder lange Beschreibung ein, "weil das Theme dieses Feld ja nicht anzeigt".

Sperren Sie die Store API auch nicht. Die Blöcke für Warenkorb und Kasse brauchen sie (Lektion 2.2). Sicherheitsplugins, die "die REST-API für Besucher abschalten", legen dadurch manchmal den Bezahlvorgang lahm. Wenn Sie die REST-API einschränken möchten, nehmen Sie die Store API davon aus.

Missbrauch der Store API gibt es durchaus, aber auf der Schreibseite: Angreifer, die mit gestohlenen Kartennummern Tausende kleiner Bestellungen versuchen. Das nennt man Card Testing; darum geht es in Lektion 6.3.

Die REST-API von WooCommerce: immer hinter einem Schlüssel

Öffnen Sie jetzt, ohne angemeldet zu sein:

https://shop.example.com/wp-json/wc/v3/orders

Die richtige Antwort ist eine Fehlermeldung mit dem Status 401 (nicht angemeldet) und einem Code wie woocommerce_rest_cannot_view. Ihr Shop sagt: "Das dürfen Sie nicht sehen." So gehört es sich. Erhalten Sie hier eine Liste mit Bestellungen, dann ist etwas ernsthaft falsch: ein Plugin, das Rechte öffnet, angepasster Code im Theme oder ein Schlüssel, der in einer öffentlichen Adresse steht. Dann haben Sie möglicherweise eine Datenpanne (WordPress-Kurs, Lektion 7.5, und Wissensdatenbank 6749).

Programme, die auf Ihre Bestellungen zugreifen müssen, erhalten einen API-Schlüssel. Den erstellen Sie unter WooCommerce > Einstellungen > Erweitert > REST-API (Advanced > REST API). Ein Schlüssel besteht aus zwei Teilen (einem Consumer Key und einem Consumer Secret) und gehört zu einem WordPress-Benutzer. Sie wählen die Rechte:

  • Lesen: Das Programm darf Daten abrufen;
  • Schreiben: Das Programm darf Daten anlegen und ändern;
  • Lesen/Schreiben: beides.

Regeln, die Sie immer befolgen:

  1. Minimale Rechte. Eine Buchhaltungsanbindung, die nur Bestellungen abholt, erhält nur Lesen. Eine Lageranbindung, die Bestände aktualisiert, braucht Schreiben, ein Berichtswerkzeug aber nicht.
  2. Ein Schlüssel pro Anbindung, mit einer klaren Beschreibung ("Buchhaltung, nur lesen, 2026"). Endet eine Anbindung, widerrufen Sie nur diesen Schlüssel.
  3. Verknüpfen Sie den Schlüssel mit einem Benutzer mit passenden Rechten. Ein Schlüssel eines Administrators kann alles, was ein Administrator kann. Legen Sie besser einen eigenen Benutzer mit der Rolle Shop-Manager an (Lektion 6.2).
  4. Bewahren Sie den geheimen Teil sicher auf. Sie sehen ihn nur einmal beim Erstellen. Er gehört in die Einstellungen des Programms oder in einen Passwortmanager, nicht in eine E-Mail, ein geteiltes Dokument oder ein öffentliches Code-Repository.
  5. Räumen Sie auf. Unter REST-API sehen Sie pro Schlüssel, wann er zuletzt verwendet wurde. Einen Schlüssel, der monatelang nicht verwendet wurde, widerrufen Sie.

Webhooks: Ihr Shop ruft ein anderes Programm an

Eine API wartet, bis jemand fragt. Ein Webhook funktioniert umgekehrt: Bei einem Ereignis in Ihrem Shop (eine neue Bestellung, ein geändertes Produkt) sendet WooCommerce selbst eine Nachricht an eine Adresse, die Sie angeben. So erfährt Ihr Versandprogramm sofort von einer Bestellung, ohne jede Minute nachzufragen. Sie richten Webhooks unter WooCommerce > Einstellungen > Erweitert > Webhooks ein.

Drei Dinge, auf die Sie achten sollten:

  • Die Nachricht enthält personenbezogene Daten. Ein Webhook bei einer neuen Bestellung sendet Name, Adresse und bestellte Produkte mit. Senden Sie das nur an eine Adresse über https und an einen Empfänger, der in Ihrer Datenschutzerklärung und Ihrem Verarbeitungsverzeichnis steht (Lektion 5.5).
  • Der geheime Schlüssel. Bei einem Webhook tragen Sie einen geheimen Schlüssel ein. Damit kann das empfangende Programm prüfen, dass die Nachricht wirklich von Ihrem Shop stammt und nicht von jemandem, der die Adresse erraten hat. Lassen Sie ihn nicht leer und teilen Sie ihn nur mit dem Empfänger.
  • Fehlgeschlagene Zustellung. Ist die empfangende Adresse eine Zeit lang nicht erreichbar, kann WooCommerce den Webhook nach wiederholten Fehlern deaktivieren. Prüfen Sie nach einer Störung unter Webhooks, ob sie noch aktiv sind.

Verwechseln Sie das nicht mit dem Webhook Ihres Zahlungsanbieters (Lektion 4.4). Der funktioniert umgekehrt: Der Anbieter meldet Ihrem Shop, dass eine Zahlung erfolgreich war.

In der Praxis: So sieht es in WooCommerce aus

Bei anderen Hostern funktioniert es genauso; das sind Bestandteile von WooCommerce selbst.

  1. Öffnen Sie in einem privaten Fenster /wp-json/wc/store/v1/products in Ihrem (Test-)Shop. Suchen Sie ein Produkt und rechnen Sie den Preis um.
  2. Öffnen Sie im selben privaten Fenster /wp-json/wc/v3/orders. Sie sollten den Status 401 sehen.
  3. Gehen Sie zu WooCommerce > Einstellungen > Erweitert > REST-API. Sehen Sie sich an, welche Schlüssel es gibt, zu welchem Benutzer sie gehören und mit welchen Rechten. Widerrufen Sie Schlüssel, die Sie nicht (mehr) kennen.
  4. Sehen Sie unter Webhooks nach, welche Webhooks es gibt und an welche Adresse sie gehen.
  5. Haben Sie ein Sicherheitsplugin, das die REST-API einschränkt, prüfen Sie, dass die Store API ausgenommen ist.

Zusammenfassung

  • Die Store API (wc/store/v1) ist öffentlich und enthält, was auch auf Ihren Produktseiten steht; die Blöcke für Warenkorb und Kasse brauchen sie.
  • Tragen Sie keine internen Daten in Produktfelder ein: Sie können über die Store API sichtbar werden.
  • Die REST-API von WooCommerce (wc/v3) sollte ohne Schlüssel eine 401 liefern; eine Liste mit Bestellungen ohne Schlüssel ist eine mögliche Datenpanne.
  • API-Schlüssel: minimale Rechte, einer pro Anbindung, mit einem passenden Benutzer verknüpft, geheim aufbewahrt, ungenutzte widerrufen.
  • Webhooks senden personenbezogene Daten an ein anderes Programm: nur über https, mit einem geheimen Schlüssel, an einen Empfänger aus Ihrem Verarbeitungsverzeichnis.

Quiz

1. Welche Daten sollten über die Store API öffentlich sein?



2. Sie öffnen ohne Anmeldung /wp-json/wc/v3/orders und erhalten eine Liste mit Bestellungen. Was bedeutet das?



3. Ein Buchhaltungsprogramm muss nur Bestellungen abholen. Welchen API-Schlüssel erstellen Sie?



4. Ein Sicherheitsplugin sperrt die gesamte REST-API für Besucher. Danach können Kunden nicht mehr bezahlen. Warum?



5. Warum tragen Sie bei einem Webhook einen geheimen Schlüssel ein?



Aufgabe

Aufgabe A2.4: Was zeigt Ihr Shop öffentlich? Geben Sie die Adresse Ihres (Test-)Shops ein und die Anzahl der Produkte, die in Ihrem Shop sichtbar sind. Das Programm führt drei Abfragen durch, ohne Cookies und ohne Schlüssel, nur lesend:

  1. /wp-json/wc/store/v1/products?per_page=1 (die Store API, über die REST-Adresse, die Ihre Website selbst angibt);
  2. /wp-json/wc/v3/orders?per_page=1;
  3. /wp-json/wc/v3/customers?per_page=1.

Aufgabe A2.4: Was zeigt Ihr Shop öffentlich?



Was Sie eingeben und was wir finden, speichern wir nicht. Ihr Browser merkt sich Ihre Antworten und ob Sie die Aufgabe bestanden haben. Sind Sie angemeldet, speichern wir in Meine Kurse nur, dass Sie die Aufgabe (fast) richtig hatten; auch das können Sie dort löschen.

Gut ist: Die Store API antwortet mit Status 200 und einer JSON-Liste; die Kopfzeile X-WP-Total entspricht der Anzahl, die Sie eingegeben haben; orders und customers liefern 401, 403 oder 404.

Orange: X-WP-Total weicht ab (Produkte als Entwurf, privat oder verborgen zählen nicht mit); die Store API liefert 401 oder 403, meist wegen eines Sicherheitsplugins, wodurch die Kassenblöcke nicht funktionieren.

Rot: Die Store API ist nicht erreichbar, obwohl auf Ihrer Website WooCommerce läuft; oder orders oder customers liefern eine Liste zurück. Letzteres ist ernst: Sperren Sie den Zugriff sofort, prüfen Sie Ihre API-Schlüssel und Plugins und klären Sie, ob Sie eine Datenpanne melden müssen. Das Programm speichert in diesem Fall nur den Statuscode, niemals den Inhalt.

Sehen Sie danach selbst unter REST-API und Webhooks nach: Welche Schlüssel und Webhooks gibt es, und wissen Sie bei jedem, wofür er dient?

Weiterführende Informationen

Einen Moment bitte…

Richten Sie Ihre Domains ein

Legen Sie für jede Domain die Nameserver, die Verknüpfung mit Ihrem Hosting und den künftigen Inhaber fest.

Ihre Domains werden geladen…