Transaktion: OrderInOnlineShop

Die Transaktion OrderInOnlineShop verwendet die gleichen Nachrichten und die gleichen Zustände wie die im vorherigen Abschnitt beschriebene Transaktion Order. Ein veloconnect-konformer Server, der diese Transaktion unterstützt, gibt in seinem veloconnect-Profil mit der Eigenschaft OrderInOnlineShop.TransactionID eine feste TransactionID bekannt, die diese spezielle Transaktion von den Transaktionen vom Typ Order unterscheidet.

Sinn dieser Transaktion ist es, dem Käufer die Möglichkeit zu geben, einen Warenkorb in einem vorhandenen Online-Shop-System mit einer Bestellung in seinem Warenwirtschaftssystem abzugleichen. Insbesondere folgende Szenarien sollten möglich sein:

  • Der Käufer füllt den Warenkorb im Onlineshop, da dieser zum Beispiel eine exzellente Suchmöglichkeit bietet, die sehr genau auf das angebotenen Sortiment abgestimmt ist. Bevor der Warenkorb bestellt wird, soll aus den Daten eine Bestellung im eigenen Warenwirtschaftssystem generiert werden.

  • Der Käufer hat eine Bestellung in seinem Warenwirtschaftssystem generiert und möchte noch einige Artikel hinzufügen, für die die Bestellnummern noch nicht bekannt sind. Zur Ermittlung der Bestellnummern soll der Onlineshop des Verkäufers verwendet werden, um die dort vorhandenen Suchmöglichkeiten auszunützen.

 

Um hierfür auf Serverseite die Voraussetzungen zu schaffen, muss ein veloconnect-konformer Server, der die Transaktion OrderInOnlineShop implementiert, folgende Regeln einhalten:

Regel: OrderInOnlineShop (Server)

  1. Es existiert stets eine Transaktionsinstanz mit der fixierten TransactionID.

  2. Bevor ein Request gemäß den Regeln für die Transaktion Order abgearbeitet wird, wird der Transaktionskontext mit dem Warenkorb des Käufers im Onlineshop abgeglichen. Dieser Abgleich ist so zu implementieren, dass der Warenkorb nicht verändert wird und ein Abschluß der Bestellung im Shopsystem die gleiche Bestellung auslösen würde, wie ein Abschluß der Bestellung über die veloconnect-Schnittstelle. Abhängig davon, ob der Warenkorb leer ist oder nicht, befindet sich danach die Transaktionsinstanz im Startzustand oder im Updatezustand.

  3. Nachdem der Transaktionskontext gemäß der Verarbeitung der Anfrage des Clients modifiziert wurde, ist der Warenkorb des Shopsystems mit dem Transaktionskontext abzugleichen. Dieser Abgleich ist so zu implementieren, dass der Transaktionskontext nicht verändert wird und ein Abschluß der Bestellung im Shopsystem die gleiche Bestellung auslösen würde, wie ein Abschluß der Bestellung über die veloconnect-Schnittstelle. Ist der Request ein FinishOrderRequest, so bedeutet dieser Abgleich insbesondere, dass der Warenkorb zu löschen ist. (Die Bestellung ist ja bereits erfolgt)

 

Welche der Transaktionen Order oder OrderInOnlineShop ein Server implementiert, bleibt der Entscheidung des Verkäufers überlassen. Abhängig von den Voraussetzungen kann es durchaus einfacher sein, die veloconnect-Schnittstelle auf einem vorhandenen Online-Shop aufzusetzen. Für den Implementeur eines veloconnect-Clients bedeutet das, dass er mit den Besonderheiten der Transaktion OrderInOnlineShop zurecht kommen muss. Im einzelnen ist zu beachten:

  • Auch in der Operation CreateOrder muss eine TransactionID verwendet werden, und zwar die im veloconnect-profil angegebene. Falls der Server die Transaktion Order nicht unterstützt, führt ein CreateOrderRequest ohne TransactionID zum Fehlercode 404.

  • Falls aus irgendwelchen Gründen der Warenkorb des Online-Shops nicht leer ist, schlägt die Operation CreateOrder mit dem Fehlercode 430 fehl. Analog schlägt die Operation UpdateOrder bei leerem Warenkorb mit Fehlercode 430 fehl. Es sollte also mittels der Operation GetStatus oder ViewOrder der Zustand des Warenkorbs ermittelt werden.

  • Die Operation Rollback löscht auch den Warenkorb des Online-Shops

  • Sofern dem Benutzer, die in den obigen Szenarien ausgeführte Integration des Warenwirtschaftssystems mit dem Warenkorb des Onlineshops angeboten wird, ist zu beachten: Die Implementierung des Warenkorbs im Internetbrowser des Benutzers ist im allgemeinen nicht darauf ausgelegt, dass der Warenkorb auch noch von anderen Stellen geändert werden kann. Der Benutzer sollte daher nicht zur gleichen Zeit im Online-Shop eingeloggt sein, wenn er den Warenkorb mit der Bestellung im Warenwirtschaftssystem abgleicht.