Vorläufiges Speichern eines Orders vor Redirect zu Zahldienstleister

Hallo miteinander,

ich habe eine allgemeine Frage:

Die meisten Zahldienstleister empfehlen, die Bestellung vor Weiterleitung an den Zahldienstleister vorab zu sichern, falls Probleme jeglicher Art auftreten. Nun würde ich gerne wissen, wie man dabei am Besten vorgeht?!

Wenn ich vor der Weiterleitung die Methode oxorder->finalizeOrder($oBasket, $oUser) aufrufe, wird der Auftrag schon korrekt gespeichert und auch sofort eine Bestätigungs-Mail versandt, obwohl die Online-Zahlung (z.B. über QPAY oder dergleichen) vom Kunden evtl. noch gar nicht durchgeführt wurde.

Andersrum (Stand heute) ist es so, dass die Bestellung NICHT gesichert wirt. D.h., wenn es nach der Zahlung beim externen Zahldienstleister beim Redirect zurück auf den Shop Probleme gibt kann es sein, dass die Bestellung nicht mehr im Shop gespeichert wird. Der Endkunde hat somit bezahlt, erhält aber keine Ware…

Besteht zudem die Möglichkeit, beim Redirect an den Drittanbieter schon die Shop-Bestellnummer (oxordernr) zu übergeben? Wenn ja, wie?

Vielen Dank schon mal im Voraus,

Gruß Jens

Hallo Jens,

wenn ich mich recht entsinne, funktioniert es so, dass die oxorder nach Abschluss der Bestellung durch den Kunden eine race condition (Quadratur des Kreises :D) durchläuft und erst dann eine endgültige Order-Nummer wegschreibt. Damit wird es schwierig, die Order-Nummer bereits mit zum Payment-Provider zu übergeben.

Du könntest versuchen, relevante Daten bereits vor der Übergabe an den Zahlungsanbieter in eine eigene Tabelle zu schreiben, um ggf. einen Vergleich zu haben, wenn etwas schief läuft.

Gruß


Marco Steinhäuser
Community Guide
OXID eSales AG
http://twitter.com/marcosteinhaeus

Hallo Marco,

vielen Dank für Deine Antwort.

Heißt das, eine Art “Bestellung-vorab-Speichern”-Funktion ist im Shop bis dato im Standard nicht enthalten, oder?

Gruß Jens

Hallo Jens,

ein ganz eindeutiges Jein :slight_smile:

Wenn man sich die order-Klasse anschaut, wird sicher einiges klarer. Man kann hier bestimmt mit einem Modul dazwischen. Aber ich würde den Weg des geringeren Widerstandes wählen und einfach eine neue Tabelle aufbauen, die notwendige Daten vorher wegschreibt.

Gruß


Marco Steinhäuser
Community Guide
OXID eSales AG
http://twitter.com/marcosteinhaeus