[4.8.2 CE] Warenkorb von früherer Bestellung erscheint wieder

Hallo Oxid Community,

ich habe ein (weiteres) seltsames Problem.
Meine Kunden bestellen sehr oft wiederholt bei uns (was ja auch gut so ist), manche jeweils fast jeden Tag. Bei einigen scheint es immer mal wieder vorzukommen, das der Warenkorb direkt nach der Bestellung leer ist, aber wenn sich der Kunde das nächste mal am darauf folgenden Tag einloggt, ist der Warenkorb wieder voll mit den Artikeln vom Vortag, obwohl diese bereits bestellt wurden.
Manche bemerken das nicht und bestellen doppelt, andere müssen nachgucken ob sie nicht vielleicht vergessen haben gestern den Bestellvorgang zu starten. Alles in allem weisen uns immer mehr Kunden auf das Problem hin.

Was ich bereits getan habe:

  • Im Forum gab es ähnliche Berichte, wo das aber nicht abschließend geklärt wurde und den Threaderstellern nicht so wichtig erschien.
  • Ich habe einem Kunden gesagt er soll mich sofort anrufen, wenn der Fehler auftritt. In der Datenbank war sein Basket leer, also kommt der Warenkorbinhalt von der Sessionvariable
  • Ich habe ein Modul geschrieben, das die Sessionvariable mit dem Warenkorb nach der Bestellung zurücksetzt, so das theoretisch der Warenkorb in der Session und in der Datenbank leer sein sollte. Ohne Erfolg, es hat sich nichts geändert.
  • Ich habe in der php.ini die Cookieeinstellungen angepasst, so das sie nur ca. 4h gültig bleiben sollten. Auch das hat nichts geändert

Wo kann ich da weiter gucken? Ich bin grad ein bisschen ratlos. :frowning:

Vielen Dank!

im admin - perform…?

Nein, das kann ich leider auch nicht aktivieren, weil manche Kunden auch mehrere Tage lang Sachen im Warenkorb sammeln, um sie später zu bestellen.
Ich könnte es erstmal als Kompromiss aktivieren, aber optimal ist das leider nicht.

und wie willst du die sammler von den jägern :wink: unterscheiden?

dazu ist aber auch der merkzettel da… und net der warenkorb.

Aber das ist doch keine Konfigurationfrage, wenn längst bestellte Artikel plötzlich wieder im Warenkorb auftauchen, das ist doch eindeutig ein Bug. Und das Abschalten des Speicherns ist auch nur ein Workaround für den Bug.
Nur ist es halt ein schwer reproduzierbarer Bug, der aber auch schon länger reportet wird.

Das sich ein Shop einen Warenkorb lange merkt, sehe ich sogar als Standard an, bei Amazon und allen größeren Shops ist das ja auch so. Da haben die Kunden natürlich eine gewisse Erwartungshaltung.
Aber nach der Bestellung sollte der Warenkorb auch leer sein. Und sich vor allem nicht später wieder mit den “alten” Artikeln von selbst befüllen.

Hast du da auch Links für die Forum-Threads oder Bugreports? Dass der WK am nächsten Tag aus der Session befüllt wird ist extrem unwahrscheinlich weil die Session normalerweise nicht so lange lebt (default 24 min).
Ich kenne keinen größeren Shop bei dem beim Einloggen während des Checkouts Artikel in den WK gelegt werden wie bei Oxid, das sehe ich als potentielle Quelle für Verwirrung.

danke frank :slight_smile:

[QUOTE=leofonic;141811]Hast du da auch Links für die Forum-Threads oder Bugreports? Dass der WK am nächsten Tag aus der Session befüllt wird ist extrem unwahrscheinlich weil die Session normalerweise nicht so lange lebt (default 24 min).
Ich kenne keinen größeren Shop bei dem beim Einloggen während des Checkouts Artikel in den WK gelegt werden wie bei Oxid, das sehe ich als potentielle Quelle für Verwirrung.[/QUOTE]

Sorry, ich habe wohl mit Informationen gegeizt, (ich wollte keine Wall Of Text erzeugen :slight_smile: ).
Hier die Forenthreads mit dem selben Problem:
http://forum.oxid-esales.com/showthread.php?t=9062
http://forum.oxid-esales.com/showthread.php?t=21014

Nochmal die Kurzbeschreibung was ich meine:
Einloggen -> WK füllen -> Bestellprozess abschließen -> WK ist leer (-> ausloggen [machen bestimmt nicht alle Kunden] ) -> Shop verlassen

Bis hierher alles iO. Bestellt, WK leer und alles gut. Dann manchmal das:

Nächster Tag -> Einloggen -> [B]WK ist voll mit bereits bestellten Waren von gestern[/B] -> Kunde bestellt doppelt wenn er es nicht bemerkt

Wie gesagt: In der DB ist in dem Moment in der oxuserbasket kein Eintrag für den User, sein WK sollte also laut DB leer sein.

Der Kunde benutzt für alles den selben Rechner und Browser (z.B. Chrome oder FF).

Noch ein paar relevante Backgroundinfo’s zu meinem Shop die ich nach unterschlagen habe (sorry, viel mir zu spät ein :frowning: ):

  • B2B-Shop: Nur eingeloggt kann man den Warenkorb befüllen, unangemeldet werden die Bestellbuttons bei den Produkten einfach ausgeblendet.
  • Einfaches Modul: Beim ausloggen wird die Session mit oxSession::destroy() beendet -> Warenkorb leer

Was z.B. ohne Probleme geht: Einloggen -> Warenkorb vom User wird wiederhergestellt, Ausloggen -> Warenkorb leer, EInloggen -> Warenkorb vom User wird wiederhergestellt.
Das meinte ich auch mit: Das erwarten die Kunden. Deswegen haben sie ja einen Account im Shop. Und es funktioniert ja auch zu 90% für meine Kunden, bis halt bis auf besagtes Problem.

Sorry, das ich mich nicht gleich klar ausgedrückt habe.
Vielleicht hat ja noch jemand eine Idee was ich da probieren könnte :confused:

Ich habe das Problem jetzt auch im Testshop festgestellt, kann den Fehler auch so reproduzieren:

  • Kunde bestellt und meldet sich ab
  • Im Admin-Backend wird ein Artikel gelöscht
  • Kunde legt erneut einen Artikel in den Warenkorb und meldet sich an

Ergebnis: Die vorherige Bestellung (ohne den im Backend gelöschten Artikel) ist wieder im Warenkorb

Sehr gut, wir kommen der Sache näher :slight_smile:

Wir löschen zwar nicht jeden Tag Artikel, aber evtl. ist ja der Grund für den Bug der gleiche …

Ich werde das auch mal in unserem Testshop ausprobieren … nach der Mittagspause :wink:

Das stimmt, das scheint der Bug zu sein! Es genügt sogar wenn z.B. im Register Stamm nur auf Speichern geklickt wird.

Edit: es reicht auch die Registerkarte Stamm nur anzusehen.

Ich habe einen Bugreport eingetragen.
https://bugs.oxid-esales.com/view.php?id=5708

Habe einen keines Modul als Fix erstellt, bitte mal testen: https://github.com/leofonic/Fix_Userbaskets

Super. Habe es gleich im Testshop eingebaut.
Beim ersten Versuch mit einem neuen Auftrag war es ok. Beim zweiten Versuch bekam ich dann diese Fehelrmeldung:

Fatal error: oxSession::_validateBasket() [<a href=‘oxsession.-validatebasket’>oxsession.-validatebasket</a>]: The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition “oePayPalOxBasketItem” of the object you are trying to operate on was loaded before unserialize() gets called or provide a __autoload() function to load the class definition in /***/testshop/shop1/core/oxsession.php on line 718

Konnte den Shop dann erst nach deaktivieren des Moduls wieder aufrufen.
Könnte aber auch daran liegen, dass ich zwischenzeitlich das Paypal-Modul deaktiviert hatte.

Lösch mal die Cookies und schau ob der Fehler nochmal auftritt. Soweit ich weiß kommt der “incomplete object”-Fehler wenn noch ein alter basket in der Session ist.

Edit: ja das liegt daran dass du Paypal deaktiviert hast: “that the class definition “oePayPalOxBasketItem””, da war ein PayPalOxBasketItem-Objekt in der Session und wenn Paypal deaktiviert wird gibt’s die Klasse zum Objekt nicht mehr.

Sieht sehr gut aus, vielen Dank!

Ich habe es in unseren Liveshop übertragen und melde mich wenn es wieder auftritt, aber natürlich hoffe ich das Beste :smiley:

Vielen Dank an Bastelfix fürs reproduzierbar machen des Bugs und besonders Leofonic für den schnellen Fix! Sensationell! :slight_smile: