Visser Labs – WooCommerce Plugins

  1. Startseite
  2. Wissensdatenbank
  3. Checkout Guard
  4. Checkout Guard REST API Referenz

Checkout Guard REST API Referenz

Manchmal möchten Sie einen Kunden blockieren, ohne den WordPress-Admin zu öffnen. Vielleicht markiert ein Betrugsbewertungsdienst eine Bestellung, oder ein Helpdesk-Tool markiert jemanden als missbräuchlich. Checkout Guard bietet eine REST-API, damit Ihre eigenen Skripte und Tools Ihre blockierten Einträge lesen und verwalten und überprüfen können, ob ein Kunde blockiert würde.

Alle Routen befinden sich unter einem Namespace, cgfw/v1. Dieser Artikel listet jede Route für blockierte Einträge und Einstellungen auf, was sie akzeptiert, was sie zurückgibt und welche Fehler auftreten können. Der Namespace hat auch zwei Lizenzrouten, die der Einstellungsbildschirm des Plugins selbst verwendet. Dieser Artikel behandelt sie nicht.

Dies ist eine Entwicklerreferenz. Es wird davon ausgegangen, dass Sie mit HTTP-Anfragen mit einem Tool wie curl vertraut sind. Wenn Sie nur einen blockierten Eintrag von Hand hinzufügen oder entfernen möchten, gehen Sie zu WooCommerce → Checkout Guard in Ihrem Adminbereich. Informationen zu häufigen Blockierungsproblemen finden Sie im Checkout Guard-Fehlerbehebungsleitfaden.

Voraussetzungen

AnforderungDetails
PluginCheckout Guard 1.0.2 oder neuer. Die Routen /check und /entries/batch sowie die Wildcard-Übereinstimmung sind Teil von 1.0.2.
WordPress5.6 oder neuer zur Verwendung von Anwendungspasswörtern. Checkout Guard selbst unterstützt WordPress 5.2 und höher, aber Websites unter 5.2 bis 5.5 können die unten beschriebene Authentifizierungsmethode nicht verwenden.
BenutzerrolleEin Benutzer mit der Berechtigung manage_woocommerce, wie z. B. ein Administrator oder Shop-Manager.
VerbindungHTTPS. WordPress aktiviert Anwendungspasswörter nur auf HTTPS-Websites oder auf Websites, auf denen WP_ENVIRONMENT_TYPE auf local gesetzt ist.

Basis-URL und Anfrageformat

Jede Route beginnt mit der REST-Basis-URL Ihrer Website, gefolgt vom Namespace:

https://your-store.example.com/wp-json/cgfw/v1

Ersetzen Sie in jedem der folgenden Beispiele your-store.example.com durch Ihre eigene Domain.

Wenn Ihre Website einfache Permalinks verwendet, funktioniert /wp-json/ nicht. Verwenden Sie stattdessen die Form rest_route:

https://your-store.example.com/?rest_route=/cgfw/v1/entries

Senden Sie Anfragetextkörper als JSON und setzen Sie den Header Content-Type: application/json. Antworten sind ebenfalls JSON. Wenn eine URL einen 404-Fehler zurückgibt, überprüfen Sie zuerst die REST-Basis Ihrer Website.

Authentifizierung

Jede Route erfordert die Berechtigung manage_woocommerce, sodass nur Administratoren und Shop-Manager die API aufrufen können. Verwenden Sie für Skripte und andere automatisierte Aufrufer ein WordPress-Anwendungspasswort. Es meldet jede Anfrage als bestimmter Benutzer mit HTTP Basic-Authentifizierung an. Sie benötigen keinen Cookie oder Nonce.

So erstellen Sie ein Anwendungspasswort:

  1. Melden Sie sich als Administrator oder Shop-Manager an und gehen Sie zu Benutzer → Profil.
  2. Scrollen Sie nach unten zum Abschnitt Anwendungspasswörter.
  3. Geben Sie einen Namen ein, z. B. Checkout Guard Automatisierung, in das Feld Name des neuen Anwendungspassworts.
  4. Klicken Sie auf Anwendungspasswort hinzufügen.
  5. Kopieren Sie das Passwort jetzt, da WordPress es nur einmal anzeigt. Es sieht aus wie xxxx xxxx xxxx xxxx xxxx xxxx. Sie können es mit oder ohne Leerzeichen senden.

Verwenden Sie den Anmeldenamen dieses Benutzers als Benutzernamen und das Anwendungspasswort als Passwort:

curl https://your-store.example.com/wp-json/cgfw/v1/entries \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx"

Die API antwortet auf Authentifizierungsprobleme auf zwei Arten:

  • Keine Anmeldeinformationen: Sie erhalten 401 Unauthorized.
  • Gültige Anmeldeinformationen, aber dem Benutzer fehlt manage_woocommerce: Sie erhalten 403 Forbidden. Ein Anwendungspasswort für ein Kunden- oder Redakteurskonto wird zwar ordnungsgemäß angemeldet, aber dennoch abgelehnt.

Der Checkout Guard Admin-Bildschirm verwendet dieselben Routen. Er authentifiziert sich mit Ihrem angemeldeten Sitzungscookie plus einem X-WP-Nonce-Header. Sie benötigen diesen Ansatz nur, wenn Ihr eigener Code innerhalb des WordPress-Adminbereichs ausgeführt wird.

Routenübersicht

Pfade sind relativ zu /wp-json/cgfw/v1.

MethodeRouteZweck
GET/entriesBlockierte Einträge auflisten, optional gefiltert.
POST/entriesEinen Eintrag erstellen. Wiederholungen sind sicher.
POST/entries/batchViele Einträge in einer Anfrage erstellen und löschen.
PUT/entries/{id}Einen Eintrag aktualisieren.
DELETE/entries/{id}Einen Eintrag löschen.
POST/checkHerausfinden, ob ein Kunde blockiert würde.
GET/settingsDie Plugin-Einstellungen lesen.
POST/settingsDie Plugin-Einstellungen aktualisieren.

Wie ein blockierter Eintrag funktioniert

Jeder blockierte Eintrag hat diese Felder:

FeldTypDetails
IDstringEine UUID, die Checkout Guard bei der Erstellung des Eintrags zuweist.
VornamestringOptional. Unterstützt einen *-Platzhalter, z. B. jo*.
NachnamestringOptional. Unterstützt einen *-Platzhalter, z. B. sm*th.
E-MailstringOptional. Unterstützt einen *-Platzhalter, z. B. *@example.com.
IP-AdressestringOptional. Eine einzelne IPv4- oder IPv6-Adresse oder ein IPv4-Platzhalter wie 192.168.1.*.
notizenstringOptional. Auf 140 Bytes begrenzt, was 140 Zeichen für einfachen lateinischen Text und weniger für andere Schriftsysteme bedeutet.
created_by_user_idintegerDer Benutzer, der den Eintrag erstellt hat.
quellestringapi, wenn der Eintrag mit einem Anwendungspasswort erstellt wurde, andernfalls admin.

Sie müssen mindestens eine der Angaben first_name, last_name, email oder ip_address senden. Ein Name blockiert nur, wenn der Eintrag sowohl einen Vor- als auch einen Nachnamen hat.

Ein Eintrag blockiert einen Kunden, wenn eine der folgenden Bedingungen zutrifft:

  • Sein Vor- und Nachname stimmen mit dem Namen des Kunden überein.
  • Seine E-Mail-Adresse stimmt mit der E-Mail-Adresse des Kunden überein.
  • Seine IP-Adresse stimmt mit der IP-Adresse des Kunden beim Checkout überein.

Die Übereinstimmung von Name und E-Mail ignoriert Groß- und Kleinschreibung. Die Übereinstimmung der IP-Adresse ist exakt.

Checkout Guard liest die IP-Adresse des Kunden so, wie es WooCommerce tut, und folgt daher gängigen Proxy-Headern.

Wildcard-Regeln

Namen und E-Mail-Werte können * verwenden, um null oder mehr Zeichen abzugleichen. Die Übereinstimmung ist am gesamten Wert verankert, sodass john* mit johnny übereinstimmt, aber nicht mit ajohn. Jedes andere Zeichen, einschließlich ., wird buchstäblich abgeglichen.

IP-Adressen akzeptieren Wildcards nur in IPv4-Form. Verwenden Sie genau vier Segmente, wobei jedes Segment entweder nur aus Ziffern oder genau * besteht und mindestens ein Segment eine Ziffer ist.

Jedes Ziffernsegment muss 0 bis 255 ohne führende Nullen sein, daher werden 192.168.01.* und 256.1.1.* mit 400 abgelehnt.

WertErgebnis
192.168.1.*, 192.168.*.1, 192.*.*.1Akzeptiert
*.*.*.*Abgelehnt mit 400. Kein Ziffernsegment.
19*.168.1.1Abgelehnt mit 400. Gemischtes Segment.
1.2.3.*.5Abgelehnt mit 400. Fünf Segmente.
2001:db8::*Abgelehnt mit 400. IPv6-Wildcards werden nicht unterstützt.

Einige weitere Einschränkungen gelten für jedes Feld:

  • Keine reinen Wildcards. Ein Wert, der alles abgleicht, wie z. B. *, **, *@* oder *.*, wird mit 400 abgelehnt. *@example.com ist in Ordnung, da noch literaler Text übrig bleibt.
  • Maximal 5 Wildcards. Ein Wert mit 6 oder mehr *-Zeichen wird mit 400 abgelehnt.
  • Batch-Erstellungen überspringen ungültige Werte. In einer Batch-Anfrage wird ein abgelehnter Eintrag nicht gespeichert. Er wird in der skipped-Gesamtzahl gezählt, und die Anfrage selbst gibt immer noch 200 zurück.
  • Lookups bleiben literale. Wenn Sie GET /entries filtern oder eine wiederholte Erstellung senden, wird * als normales Zeichen behandelt. Eine Wildcard-Regel und ein literaler Wert mit denselben Zeichen sind immer separate Einträge.

Endpunkte

Eintragsliste

GET /entries gibt ein Array von Einträgen zurück. Fügen Sie email, first_name, last_name oder ip_address als Query-Parameter hinzu, um die Liste zu filtern. Namens- und E-Mail-Filter sind exakte, nicht beachtete Übereinstimmungen. Der ip_address-Filter ist eine exakte Übereinstimmung. Mehrere Filter werden mit AND kombiniert. Eine ungültige email oder ip_address gibt 400 zurück.

Jeder Eintrag in der Liste enthält auch created_by_display_name und created_by_edit_url, wenn der erstellende Benutzer noch existiert.

curl https://your-store.example.com/wp-json/cgfw/v1/entries \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx"

# Look up one email
curl "https://your-store.example.com/wp-json/cgfw/v1/[email protected]" \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx"

Antwort:

[
  {
    "id": "11112222-3333-4444-5555-666677778888",
    "first_name": "",
    "last_name": "",
    "email": "[email protected]",
    "ip_address": "",
    "notes": "chargeback fraud",
    "created_by_user_id": 2,
    "source": "api",
    "created_by_display_name": "Shop Manager",
    "created_by_edit_url": "https://your-store.example.com/wp-admin/user-edit.php?user_id=2"
  }
]

Eintrag erstellen

POST /entries erstellt einen Eintrag und gibt ihn zurück. Das Wiederholen derselben Anfrage erstellt kein Duplikat. Wenn ein Eintrag mit derselben email bereits existiert, aktualisiert Checkout Guard ihn mit allen nicht leeren Feldern, die Sie senden, und gibt ihn zurück. Wenn Sie keine E-Mail senden, wird nach demselben Vor- und Nachnamen gesucht. Wenn Sie keines von beiden senden, wird nach derselben ip_address gesucht.

curl -X POST https://your-store.example.com/wp-json/cgfw/v1/entries \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","notes":"chargeback fraud"}'

Antwort:

{
  "id": "11112222-3333-4444-5555-666677778888",
  "first_name": "",
  "last_name": "",
  "email": "[email protected]",
  "ip_address": "",
  "notes": "chargeback fraud",
  "created_by_user_id": 2,
  "source": "api"
}

Um nur nach IP-Adresse zu blockieren, senden Sie {"ip_address":"203.0.113.42","notes":"repeat spammer"}. Eine nicht leere ip_address, die ungültig ist, gibt 400 zurück.

Massenhaft erstellen und löschen

POST /entries/batch ermöglicht es Ihnen, eine ganze Liste in einer Anfrage zu synchronisieren. Senden Sie ein create-Array, ein delete-Array von Eintrags-IDs oder beides. Checkout Guard verarbeitet zuerst die Creates, jeder davon über denselben wiederholungsfreien Pfad wie ein einzelner Create. Dann verarbeitet es die Deletes. Mindestens eines der beiden Arrays muss etwas enthalten, sonst erhalten Sie 400.

curl -X POST https://your-store.example.com/wp-json/cgfw/v1/entries/batch \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "create": [
      { "email": "[email protected]", "notes": "ring leader" },
      { "first_name": "Jane", "last_name": "Doe" }
    ],
    "delete": [ "99998888-7777-6666-5555-444433332222" ]
  }'

Antwort:

{
  "created": [
    {
      "id": "aaaa1111-2222-3333-4444-555566667777",
      "first_name": "",
      "last_name": "",
      "email": "[email protected]",
      "ip_address": "",
      "notes": "ring leader",
      "created_by_user_id": 2,
      "source": "api"
    }
  ],
  "deleted": [ "99998888-7777-6666-5555-444433332222" ],
  "not_found": [],
  "skipped": 0
}
AntwortfeldBedeutung
erstelltDie Einträge, die erstellt oder aktualisiert wurden.
gelöschtDie IDs, die entfernt wurden.
nicht_gefundenIDs löschen, die keinem Eintrag entsprachen.
übersprungenWie viele Erstellungselemente ignoriert wurden. Ein Element wird übersprungen, wenn es keinen Namen, keine E-Mail oder IP-Adresse hat oder wenn es eine ungültige IP-Adresse oder ein Wildcard-Zeichen hat.

Einen Eintrag aktualisieren oder löschen

PUT /entries/{id} ändert einen Eintrag. Senden Sie nur die Felder, die Sie ändern möchten. Die Antwort ist der vollständige aktualisierte Eintrag. Sie können nicht jedes identifizierende Feld löschen. Der Eintrag muss mindestens eines der Felder Name, E-Mail oder IP behalten, sonst erhalten Sie 400.

DELETE /entries/{id} entfernt einen Eintrag und gibt { "success": true } zurück. Wenn die ID keinem Eintrag entspricht, geben beide Routen 404 zurück.

curl -X PUT https://your-store.example.com/wp-json/cgfw/v1/entries/11112222-3333-4444-5555-666677778888 \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{"notes":"confirmed fraud"}'

curl -X DELETE https://your-store.example.com/wp-json/cgfw/v1/entries/11112222-3333-4444-5555-666677778888 \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx"

Einen Kunden prüfen

POST /check teilt Ihnen mit, ob ein Kunde beim Checkout blockiert würde. Es verwendet dieselbe Abgleichlogik wie der Live-Checkout, sodass die Antwort mit dem übereinstimmt, was eine echte Bestellung erhalten würde. Senden Sie mindestens eine der Angaben email, first_name, last_name oder ip_address, sonst erhalten Sie 400.

Diese Route ist streng bei Wildcards. Die von Ihnen gesendeten Werte sind die Details eines echten Kunden, kein Muster. Ein * in einem beliebigen Feld gibt 400 zurück.

curl -X POST https://your-store.example.com/wp-json/cgfw/v1/check \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]"}'

Antwort:

{
  "blocked": true,
  "matched_entry": {
    "id": "11112222-3333-4444-5555-666677778888",
    "first_name": "",
    "last_name": "",
    "email": "[email protected]",
    "ip_address": "",
    "notes": "chargeback fraud",
    "created_by_user_id": 2,
    "source": "api"
  }
}

Wenn kein Eintrag übereinstimmt, ist blocked false und matched_entry ist null.

Einstellungen lesen und aktualisieren

GET /settings gibt die Plugin-Einstellungen zurück. Die einzige Einstellung ist checkout_denial_message, welche die Nachricht ist, die ein blockierter Kunde beim Checkout sieht. POST /settings ändert sie und gibt die gespeicherten Einstellungen zurück. Die Nachricht darf nicht leer sein, sonst erhalten Sie 400.

curl https://your-store.example.com/wp-json/cgfw/v1/settings \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx"

curl -X POST https://your-store.example.com/wp-json/cgfw/v1/settings \
  --user "shopmanager:xxxx xxxx xxxx xxxx xxxx xxxx" \
  -H "Content-Type: application/json" \
  -d '{"checkout_denial_message":"Sorry, you cannot place an order right now."}'

Antwort:

{ "checkout_denial_message": "Sorry, you cannot place an order right now." }

Fehlerantworten

Fehler verwenden das Standard-WordPress-Format mit einem code, einer message und einem HTTP-Status.

StatusCodeWann es passiert
400invalid_entryEin Create oder Update hat keinen Namen, keine E-Mail-Adresse oder keine IP-Adresse.
400invalid_checkEine /check-Anfrage hat keines der Felder email, first_name, last_name oder ip_address.
400invalid_batchEine Batch-Anfrage hat leere create- und delete-Arrays.
400invalid_ip_addressEine IP-Adresse oder ein IP-Wildcard ist ungültig.
400invalid_wildcard_valueEin Wildcard-Wert ist ein reiner Wildcard oder hat mehr als 5 *-Zeichen.
400invalid_settingsDie Nachrichteneinstellung ist leer.
400rest_invalid_paramEin Abfrage- oder /check-Parameter ist ungültig, z. B. eine ungültige E-Mail-Adresse oder ein * in einem /check-Feld.
401rest_forbiddenDie Anfrage hat keine Anmeldeinformationen.
403rest_forbiddenDer Benutzer hat nicht die Berechtigung manage_woocommerce.
404entry_not_foundKein Eintrag entspricht der ID in der URL.

Ein 404 ohne Code bedeutet, dass die REST-Basis-URL Ihrer Website von der von Ihnen verwendeten abweicht.

Datenschutz

Blockierte Einträge sind personenbezogene Daten. Wenn Sie Kunden-E-Mails, Namen oder IP-Adressen speichern, sind Sie für deren Handhabung gemäß Ihren Datenschutzverpflichtungen, wie z. B. der DSGVO, verantwortlich.

Fehlerbehebung

Ich erhalte eine 403, obwohl mein Anwendungspasswort korrekt ist
Das Passwort wurde angemeldet, aber der Benutzer, zu dem es gehört, hat nicht die Berechtigung manage_woocommerce. Erstellen Sie das Anwendungspasswort stattdessen unter einem Administrator- oder Shop-Manager-Konto.
Der Abschnitt Anwendungspasswörter fehlt in meinem Profil
Anwendungspasswörter benötigen WordPress 5.6 oder neuer und eine HTTPS-Website oder eine Website, auf der WP_ENVIRONMENT_TYPE auf local gesetzt ist. Überprüfen Sie Ihre WordPress-Version und stellen Sie sicher, dass Ihre Shop-URL mit https:// beginnt. Wenn Ihre Website auf 5.2 bis 5.5 läuft, aktualisieren Sie WordPress zuerst.
Ich erhalte eine 401 Unauthorized
Die Anfrage erreichte die API ohne Anmeldeinformationen oder WordPress hat diese nicht akzeptiert. Stellen Sie sicher, dass Sie den Benutzernamen des Benutzers und das vollständige Anwendungspasswort senden. Stellen Sie außerdem sicher, dass Ihr Server den Authorization-Header an WordPress weiterleitet.
Die URL gibt eine 404 zurück
Ihre Website verwendet wahrscheinlich einfache Permalinks oder eine benutzerdefinierte REST-Basis. Versuchen Sie die ?rest_route=/cgfw/v1/entries-Form oder fragen Sie Ihren Hoster, was Ihre REST-Basis ist.

Häufig gestellte Fragen

Kann ich * in einer /check-Anfrage verwenden?
Nein. /check erwartet die Details eines echten Kunden, daher gibt ein * in einem beliebigen Feld 400 zurück. Verwenden Sie Wildcards nur, wenn Sie Einträge erstellen oder aktualisieren.
Warum gibt ein wiederholtes Erstellen denselben Eintrag zurück?
POST /entries ist darauf ausgelegt, wiederholbar zu sein. Wenn ein Eintrag mit derselben E-Mail-Adresse bereits existiert, aktualisiert Checkout Guard ihn, anstatt ein Duplikat hinzuzufügen. Das gilt auch für denselben Namen oder dieselbe IP-Adresse, wenn keine E-Mail gesendet wird.
Was bedeutet skipped in einer Batch-Antwort?
Es zählt die Erstellungselemente, die Checkout Guard ignoriert hat. Ein Element wird übersprungen, wenn es keinen Namen, keine E-Mail-Adresse oder keine IP-Adresse hat oder wenn es eine ungültige IP-Adresse oder einen nicht erlaubten Wildcard enthält. Die Anfrage selbst ist trotzdem erfolgreich.
Woran erkenne ich, welche Einträge von der API stammen?
Überprüfen Sie das Feld source. Einträge, die mit einem Anwendungspasswort erstellt wurden, haben source auf api gesetzt. Einträge, die im Admin-Bildschirm hinzugefügt wurden, haben admin.

Benötigen Sie Hilfe?

Checkout Guard ist ein lizenziertes Plugin. Wenn Sie immer noch nicht weiterkommen, öffnen Sie ein Support-Ticket und fügen Sie die Route, die gesendete Anfrage und die erhaltene Antwort bei. Das hilft unserem Team, Ihre Einrichtung direkt zu überprüfen.

War dieser Artikel hilfreich?

Verwandte Artikel

Ressourcen & Hilfe