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.