Jump to content

PS 1.6.1.6 - Cart cannot be loaded or an order has already been placed using this cart


Drzewko

Recommended Posts

Witam wszystkich,

     Mam problem z mim sklepem, w logach zapisuje się taki błąd: 
Frontcontroller::init - Cart cannot be loaded or an order has already been placed using this cart
Skala: 1 albo 4
typ obiektu: Cart
 

Błąd powstaje podczas ostatniego etapu zamawiania i co najgorsze nie zawsze! Czasami zamówienie przejdzie bez problemu a czasami wyświetla się pusta strona z powyższym zapisem (Cart cannot ...) adres przeglądarki wskazuje wtedy:  "https://www.lcdk.pl/lcdk_shop/module/universalpay/validation"

Poczyniłem kilka kroków, reinstalacja sklepu - nic nie dała
Aktualizacja modułów - nic nie dało
Przestawienie funkcji wysyłania e-maili z phpmail() na smtp - nic nie pomogło
 

- Od strony backoffice zadarza się że wyświetla się nowe zamówienie ale do klienta nie została wysłana żadna wiadomość e-mail
- Klienci twierdzą że kupili produkt ale brak zamówienia w karcie klienta jest natomiast jego adres i to co niby kupił w koszyku.

Ktoś ma jakieś pomysły jak rozwiązać ten problem? Może odinstalować moduł universalpay i zainstalować inny ale jaki?

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 months later...
  • 1 year later...

Nie jest to do końca problem.

Przewijanie się tego komunikatu w logach sklepu wynika z działania samej presty. Praktycznie przy każdym odświeżeniu strony sklepu (bo dzieje się to w głównym Front Controllerze), presta sprawdza czy w ciasteczku jest ustawione ID koszyka. Jeżeli tak to wykonuje kolejne sprawdzenie czy dla tego ID koszyka nie istnieje przypadkiem już zamówienie.

Jeżeli okaże się, że zamówienie istnieje to znaczy, że koszyk trzeba wyczyścić i presta to robi, a skutkiem ubocznym jest ten właśnie komunikat. Czyli w większości przypadków to co się dzieje to druga część tego komunikatu, czyli "order has already been placed using this cart". Robiłem testy rozbijając warunek na dwa i przypadek "Cart cannot be loaded" nie pojawił mi się nigdy, zawsze chodziło tylko o fakt że zamówienie już istnieje.

Dlaczego tak się dzieje, że zamówienie istnieje i jeszcze istnieje dla niego koszyk? Winne są tutaj moduły płatności.

Może to być zachowanie celowe lub wynikające z lenistwa autorów tych modułów. W momencie gdy moduł płatności robi swoje, często przekierowuje klienta do jakiegoś zewnętrznego systemu płatności. Tylko teraz pytanie - czy klient dokona płatności poprawnie i wróci, czy nie dokona płatności, czy może coś tam jeszcze się dziwnego wydarzy, nad czym sklep już nie ma kontroli? Pojawia się więc dylemat programisty - czyścić koszyk czy nie? Jeżeli wyczyścimy koszyk, a klient przy płatności się rozmyśli i wróci na sklep to trafi na pusty koszyk i może już mu się nie chcieć kompletować zamówienia ponownie. Jeżeli nie wyczyścimy i klient wróci z błędem, to może spróbować raz jeszcze zapłacić.

Jeżeli nie wyczyścimy koszyka, a klientowi zamówienie utworzy się poprawnie to wówczas zauważy to presta i za nas koszyk wyczyści. Więc można z lenistwa nie przejmować się w ogóle czyszczeniem koszyka i zrzucić wszystko na to że presta i tak tego pilnuje.

Komunikat jest trochę mylący i mówi o dwóch rzeczach, co jest ewidentnym błędem programistów presty, bo tak naprawdę to nie informuje jednoznacznie co się stało, jednak doświadczenie pokazuje, że na 99% to co się stało to po prostu klient wrócił z systemu płatności (lub klepnął zamówienie w jakimś prostym module płatności typu przelew), presta zauważyła ten fakt i wyczyściła koszyk, przy okazji zostawiając ślad w logach.

Jeżeli więc ten komunikat widzimy w momencie gdy w sklepie zostało złożone poprawnie jakieś zamówienie to zupełnie nie ma się czym przejmować i jedyne co można zalecić to go zignorować. Co innego gdyby występował w jakimś innym momencie bo to by raczej oznaczało niemożliwość utworzenia koszyka na podstawie ID zapisanego w cookie, ale gwarantuję że o takiej sytuacji szybko poinformowali by klienci zgłaszając, że sklep w trakcie zakupów sam wyczyścił koszyk lub po prostu pierwsza z brzegu osoba testująca sklep by to zauważyła.

Jeżeli natomiast klienci zgłaszają nam problemy ze złożeniem zamówienia a ten komunikat jest, to znaczy że klientowi wysypało się coś w module płatności i nie doszło do końca, ale zamówienia na sklepie zostało jednak utworzone. Następnie klient odświeżył stronę i zobaczył ten komunikat, czyli znów zadziałał opisany wyżej mechanizm sprawdzający presty. W takiej sytuacji jednak błędu trzeba szukać gdzie indziej, w samym module płatności który nie wykonuje do końca swojej pracy.

Edited by Daresh (see edit history)
  • Like 2
Link to comment
Share on other sites

  • 9 months later...

Jak mam dokładnie ten problem z modułem przelewy24.

W logach przewija się ten komunikat, gdy klient próbuje złożyć zamówienie płacąc przez bramkę. Tylko do płatności nie dochodzi a klientowi kasowany jest koszyk. Za to w sklepie pojawia się nowe zamówienie nieopłacone .

Czy takiej sytuacje , dobrym rozwiązaniem byłoby usunięcie wszystkich koszyków nie zrealizowanych w sklepie ?

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...