Zum Hauptinhalt springen
Mit der Account-API legen Sie einzelne Kundenkonten an und aktualisieren sie, unabhängig von einem ERP- oder Warenwirtschaftssystem. Zusätzlich lässt sich ein Kunde über diese Schnittstelle im Shop anmelden. Welche Bereiche der Kundendaten ein Zugang lesen und schreiben darf, konfigurieren Sie pro Konnektor.
Die Account-API ersetzt nicht den regulären Kundendatenimport. Wenn Sie komplette Kundendatensätze in den Shop importieren wollen, verwenden Sie WS-SFTP-Kunden-Pro.
Jeder Datensatz, der über die Account-API eingeht, wird vom Shop so behandelt, als hätte der Kunde die Änderung selbst vorgenommen. Der Datensatz wird deshalb als geändert markiert und taucht beim Abruf der Adressdatenänderungen per SOAP auf.

Technische Grundlagen

Die Schnittstelle hat einen einzigen Zugangspunkt. Die Daten werden als Payload in einem JSON-WebToken per POST übergeben. Der Aufruf ist nur per SSL möglich. Eine Authentifizierung über ein Berechtigungstoken gibt es nicht, stattdessen validiert der Shop die Signatur des JSON-WebTokens. Dafür ist pro Konnektor ein eigenes SharedSecret hinterlegt. Die Berechtigungen des Konnektors konfiguriert WEBSALE. Jeder Aufruf muss mit der zugehörigen Shop-Domain erfolgen, denn über die Domain ermittelt der Shop den Subshop, dessen Konfiguration für die Prüfung der Adressdaten gilt. Die Freischaltung der Account-API erfolgt auf Antrag des Shopbetreibers durch die WEBSALE AG. Dabei wird festgelegt, wie viele Konnektoren verwendet werden dürfen. Diese Anzahl lässt sich später per Antrag erhöhen oder senken. Die Konfiguration der einzelnen Konnektoren nehmen Sie selbst vor. Die Nutzung der Account-API erhöht den Leistungsverbrauch des Shops.

Verhalten der Schnittstelle

Werden Adressdaten oder Kundenkontodaten übergeben, prüft der Shop zuerst, ob der Konnektor für jedes einzelne Feld die nötige Berechtigung hat. Fehlt sie auch nur für ein Feld, führt der Shop keine Aktion aus und gibt einen Fehler zurück. Teilweise Updates gibt es nicht. Ein Kundenkonto lässt sich auf zwei Arten adressieren. Über die E-Mail-Adresse. Existiert bereits ein Konto mit dieser Adresse, führt der Shop die gespeicherten Daten mit den übergebenen zusammen, wobei die übergebenen Werte die bestehenden überschreiben. Anschließend validiert er die Adressdaten gegen die im Shop konfigurierten Prüfungen. Nur wenn diese Prüfung bestanden ist, werden die Daten in der Kundendatenbank aktualisiert. Existiert noch kein Konto, legt der Shop nach erfolgreicher Prüfung ein neues an und kann dabei die in der Konnektor-Konfiguration hinterlegten Werte vorbelegen, beispielsweise einen eigenen Rabattsatz pro Konnektor. Über den UserIndex. Hier ist nur die Aktualisierung oder Prüfung eines bestehenden Kontos möglich, ansonsten gilt dasselbe wie bei der Adressierung über die E-Mail-Adresse. Mehrfachkonten, also mehrere Konten zu einer E-Mail-Adresse, lassen sich über die Account-API nicht anlegen. Update und Login sind für Mehrfachkonten nur über den UserIndex möglich. Grundsätzlich gilt: Nach dem Zusammenführen der übergebenen und der vorbelegten Daten mit den vorhandenen Daten muss ein gültiger Datensatz entstehen. Ist das nicht der Fall, übernimmt der Shop keine Daten, legt keinen neuen Datensatz an und gibt einen Fehlercode zurück. Das betrifft auch die Vorbelegung: Soll bei einer Neuanlage eine Adresse vorbelegt werden, muss aus der Kombination von übergebenen und vorbelegten Werten eine gültige Adresse entstehen.

Berechtigungen

Die Berechtigungen werden pro Konnektor festgelegt und müssen immer explizit gesetzt werden. Sie decken drei Bereiche ab. Neuanlage und Update eines Accounts. Dazu gehören die Liste der zulässigen Domains für die E-Mail-Adresse des Kontos (die auch für Updates per UserIndex gilt), kundenabhängige Rabattsätze, Subshop-Berechtigungen und Hauptsubshop, die Kundennummer, Zahlungsarten, die SuperUserID, die Nutzung des Bestellgenerators, das Setzen eines neuen Passworts und die Änderung der E-Mail-Adresse. Rechnungsadressdaten, mit Ausnahme von E-Mail-Adresse und Kundennummer. Hier gibt es eine generelle Berechtigung, Adressdaten überhaupt zu übergeben, und darunter eine Berechtigung auf Feldebene, entweder für einzeln benannte Felder oder für alle Felder über eine Wildcard. Datenabfrage. Der Konnektor darf einen Login-Deeplink abfragen, über den ein Kunde mit automatischer Anmeldung in den Shop weitergeleitet wird. Unabhängig von diesen Berechtigungen lassen sich Datenfelder festlegen, die bei Neuanlage oder Update automatisch gesetzt werden: der kundenabhängige Rabattsatz, Subshop-Berechtigungen und Hauptsubshop, Zahlungsarten, die Nutzung des Bestellgenerators sowie beliebige Werte pro Adressdatenfeld.

Konfiguration

Die Konnektoren werden in der globalen Konfigurationsdatei account-api-access.config.json angelegt. Die Datei enthält ein JSON-Array, in dem jeder Zugang durch ein Zugangsobjekt beschrieben wird.

Zugangsobjekt

Berechtigungsobjekt

Mit ignorechecksoncreate und ignorechecksonupdate können inkonsistente Datensätze entstehen, weil sämtliche Adressprüfungen übergangen werden. Setzen Sie die beiden Schalter nur, wenn Ihr vorgelagertes System die Adressen selbst zuverlässig prüft.
Wildcards in alloweddomains. Jeder durch einen Punkt getrennte Teil der Domain kann durch einen Stern ersetzt werden. Wildcards in fields. Am Ende einer Feld-ID kann ein Stern stehen. FirstName berechtigt für den Vornamen, Suffix* für alle Suffixfelder und * für alle Felder. Der letzte Fall schließt auch kritische Felder mit ein.

Datenaktualisierungsobjekt

Das Objekt data hat zwei gleich aufgebaute Zweige. preset belegt Daten bei der Neuanlage eines Kundenkontos vor, overwrite aktualisiert Daten bei Update oder Abfrage eines bestehenden Kontos. Beide enthalten jeweils ein accountdata- und ein addressdata-Objekt. Im accountdata-Objekt wird hier nur ein Teil der Felder unterstützt, die der Payload kennt. Die Adressdatenfelder entsprechen denen der Payload.

Beispiel

Der Aufruf

Endpunkt und JSON-WebToken

Die REST-API wird mit einer POST-Anfrage an den Endpunkt /_api/shop/Account aufgerufen. Als POST-Daten wird ein JSON-WebToken mit der Payload übergeben. Der Header verwendet den Signaturalgorithmus HS256 und den Typ JWT. Die Signatur entsteht aus
Ein Beispiel mit der Payload { "hello": "world" } und dem SharedSecret geheim ergibt dieses dekodierte Token:
Kodiert sieht dasselbe Token so aus und wird genau in dieser Form als POST-Daten übergeben:

Payload

Das folgende Beispiel aktualisiert das Kundenkonto mit der E-Mail-Adresse test@domain.de, setzt 5 Prozent Kundenrabatt und das Feld Suffix12 der Rechnungsadresse auf conA und fordert den Login-Link an:

Antwort

Im Erfolgsfall antwortet die Schnittstelle mit dem HTTP-Statuscode 200 und einem JSON-Objekt, das einen Code und optional ein return-Objekt mit den angefragten Daten enthält.
Im Fehlerfall antwortet die Schnittstelle, soweit zutreffend, mit den HTTP-Statuscodes 401 oder 403, ansonsten mit 400. Zusätzlich kommt ein JSON-Objekt mit Fehlercode und gegebenenfalls einer Fehlermeldung zurück.

Verwandte Themen