OXID-Bestellnummer mit WaWi-Bestellnummer synchronisieren

Hallo.

Ich habe folgendes Problem:

Ich registriere eine Bestellung vor dem Payment-Prozess in einem WaWi. Dazu muss ich selbst eine Bestellnummer generieren, die ich dem WaWi als Refernz übergebe, da die Bestellung zu dem Zeitpunkt noch keine hat. Auch ist der Datensatz der Bestellung noch nicht in der Datenbank gespeichert.

Jetzt hab ich das Problem, dass ich dadurch natürlich zwei Bestellnummern rumfahren habe. Für das Backend ist das nicht so wichtig, da ohnehin das WaWi benutzt wird, um Bestellungen einzusehen, aber der Kunde braucht die WaWi-Bestellnummer.

Jetzt kann ich natürlich alle Stellen im Code, in denen die Bestellnummer ausgegeben wird (Thankyou-Template, E-Mails, Bestellstatus, ?) umschreiben und \oxOrder um eine Funktion erweitern, die die WaWi-Nummer ausliest und diese dann zurück gibt.

Schöner wäre allerdings, wenn ich es hinkriegen würde, wenn beide System die gleiche Nummer verwenden. Einfach in beiden Systemen den gleichen Startwert funktioniert nicht, da Reservierungen nicht zu einer Bestellung führen, falls der Kunde den Payment-Prozess abbricht oder der letzte Schritt des Bestellprozesses aufgrund technischer Probleme unterbrochen wird.

Jetzt wäre eine Möglichkeit \oxOrder::_setNumber() zu überschreiben, oder den \oxCounter::getNext() mit dem entsprechenden $sIdent. Letzteres in der Annahme, dass die aktuelle Bestellung immer aus der Session ausgelesen werden kann, wenn diese Methode aufgerufen wird (was noch genau zu prüfen wäre).

Meine Frage ist jetzt, ob sich das mit den Payment-Modulen verträgt (derzeitige verschlüsselte, sowie mögliche zukünftige). Da die Bestellnummer in der DB keinen PK mit auto increment hat, ist es wahrscheinlich, dass jede Payment-Methode auf den Counter zugreift und diesen nicht selbst nachbaut, aber eine Sicherheit gibt es halt nicht.

Eine viel einfachere Option wäre natürlich, im Warenkorb nach der Registrierung einfach die Order-ID per setOrderId() zu setzen. Da hab ich allerdings überhaupt keinen Anhaltspunkt, ob die Payment-Module eine bereits gesetzte Order-ID nicht einfach ignorieren.

Wie habt ihr das gelöst? Ist ja sicher ein Standard-Problem.

Ein paar Ergebnisse:

[ul]
[li]\oBasket::setOrderId() funkt nicht, da hier die ID der bestellung gemeint ist, nicht die Benstellnummer (wie der Name ja schon sagt…)[/li][li]Der Counter scheint kein verlässlicher Ansatzpunkt, schließlich wird z.B. in \oxOrder::_insert() eine Methode update() des Counters aufgerufen, mit dem man dem Counter einen Wert gibt.[/li][li]Das Basket-Objekt, das in der Order verfügbar ist, wird dort neu gebaut, kommt also nicht aus der Session und kann daher auch keine zusätzlichen Infos enthalten. Macht ja auch Sinn. In finalizeOrder() steht der Warenkorb aus der Session zur Verfügung, allerdings ist es fraglich, ob jedes Payment-Modul, diese Methode benutzt (habe hier im Forum gelesen, dass darauf nicht zu vertrauen ist…).[/li][/ul]