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.