Die beiden Übergabewege
Manuell über die Web-Applikation. Die XML-Daten werden als Datei zu einer Web-Applikation hochgeladen und dort verarbeitet. Die Datei heißt immerorders.xml, der Upload läuft SSL-verschlüsselt. Anwender müssen im Shop angemeldet sein und eine Berechtigung für den Bestellgenerator haben. Diese Berechtigung ist ein Flag im Kundenstamm und wird vom Shopbetreiber zugewiesen, entweder im Online-Servicebereich oder über den Kundendatenimport. In einer Datei lassen sich bis zu 1000 Aufträge auf einmal übergeben.
Funktionsumfang
Der Bestellgenerator unterstützt nicht alle Funktionen des Shops. Bei den Zahlungsarten sind nur Offline-Methoden möglich sowie Online-Methoden ohne Client-Authentifizierung, also Kreditkartenclearing Server-zu-Server und ELV. Zahlungsarten wie PayPal oder Sofortüberweisung scheiden aus, weil sie eine Authentifizierung des Kunden im Browser erfordern. Die Schnittstelle lässt sich für angemeldete Benutzer und für Gastbestellungen verwenden. Nach einer erfolgreichen Bestellung geht eine Bestätigungsmail an die übergebene E-Mail-Adresse.Aufbau der XML-Daten
Optionale Parameter können leer übergeben oder ganz weggelassen werden. Die Daten werden im Zeichensatz UTF-8 übergeben.Datentypen
Die Felddefinitionen nutzen eine kurze Typangabe, der die maximale Länge folgt.C30 steht also für ein 30-stelliges Feld mit beliebigen druckbaren Zeichen.
Direkte Übergabe ohne Web-Applikation
Bei der automatisierten Übergabe werden die Daten Blowfish-verschlüsselt. Dafür wird ein vorab vereinbarter Schlüssel aus 16 Zeichen im Shop und im externen System fest hinterlegt. Das 16-stellige Passwort dient direkt als Schlüssel. Die zu verschlüsselnde Nachricht wird auf ein Vielfaches von 8 Byte aufgefüllt, am besten mit Null-Bytes, und blockweise mit der OpenSSL-Funktion Blowfish-ECB verschlüsselt. Das externe System verschlüsselt also zuerst und kodiert das Ergebnis anschließend hexadezimal. Der Shop wird per HTTP mit der GET-Methode aufgerufen, die Anfrage darf höchstens 8000 Zeichen lang sein. Je nachdem, wie der Besteller identifiziert wird, sieht der Aufruf unterschiedlich aus. Der Parameterorderdata mit den verschlüsselten XML-Daten ist immer erforderlich.
Bei Anmeldung mit E-Mail-Adresse oder UserIndex lädt der Shop automatisch alle Daten des Benutzers, also Rechnungsadresse, optionale Lieferadresse und Benutzereinstellungen. Bei einer Gastbestellung wird weder das eine noch das andere übergeben. Dort ist die Rechnungsadresse Pflicht, und innerhalb der Rechnungsadresse ist die E-Mail-Adresse ein Pflichtfeld.
Antwort des Shops
Die Web-Applikation zeigt zu jedem generierten Auftrag Datum, Uhrzeit, ShopID, SubshopID, Auftragsnummer, Gesamtsumme, Status und im Fehlerfall die Fehlermeldung samt Fehlercode an. Bei Upload-Artikeln kommt die UploadID hinzu. Bei der direkten XML-Übergabe antwortet der Shop mit folgender Struktur:Einen ASSE-Prozess anstoßen
Der Bestellgenerator kann pro Bestellposition einen Asynchronous-Server-Side-Event auslösen. Dazu wird die Konfiguration um diese Sektion erweitert:$WS- und $DC--Tags, denn sie werden im Lauf des Bestellprozesses ersetzt. Das ASSE-Template selbst kann so aussehen:
$WS-AsseText$ wird durch den hexadezimal kodierten Inhalt des Event-Templates ersetzt. Die erzeugte Datei liegt anschließend unter <shopid>_<subshopid>_autoorderUploadFinish-<Bestellnummer>-<Positionsnummer>.asse im Verzeichnis /var/spool/wsasse.
Wann ein Auftrag erzeugt wird
Ein Auftrag entsteht nur dann, wenn alle übergebenen Daten korrekt sind. Der Bestellgenerator prüft unter anderem:- Existiert die übergebene Produktnummer oder SetID und reicht der Lagerbestand?
- Sind die übergebenen normalen Varianten korrekt?
- Werden definierte Mindest- und Maximalbestellmengen eingehalten?
- Sind definierte Stückelungen korrekt übergeben?
- Sind alle Pflichtfelder der Adressdaten und der Zahlungsart vorhanden?
- Beim Online-Clearing: Konnte die Zahlung mit Kreditkarte oder Lastschrift elektronisch durchgeführt werden?
- Wird bei einem Resellerzuschlag die Zahlungsart Nachnahme übergeben?
OK wurde der Auftrag erfolgreich erzeugt. Beim Status ERROR konnte er nicht erzeugt werden, zusätzlich wird ein Fehlercode ausgegeben.
