Gutscheineingabe im Checkout (seit 5.3.5) führt zu "Ups! Ein Fehler ist aufgetreten!..."

Hallo Jungs und Mädelz,

 

ich habe Anfang Januar einen Gutschein erstellt. Dieser hat auch bis Vorgestern funktioniert. Dann kam das Update auf 5.2.5 und ich bin der Meinung das seither das Problem besteht.

Immer wenn ich im Checkout den Gutscheincode eingebe, werde ich weitergeleitet auf die Berüchtigte Seite -> "Ups! Ein Fehler ist aufgetreten!

Wir wurden bereits über das Problem informiert und arbeiten an einer Lösung, bitte versuchen Sie es in Kürze erneut. ." 

 

 

Es scheint sich hierbei um das häufige TOKEN Problem zu handeln.

 

Ich füge hier mal das Critical Log bei:

Message:

 SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')  OR s\_articles.supplierID = '320' ) 

                 GROUP BY sessionID' at line 6

Time:

 2018-01-10T23:13:45.391511+0100

Channel:

 core

request:

 {

     "uri": "/checkout/addVoucher/sTargetAction/confirm",

     "method": "POST",

     "query": {

         "module": "frontend",

         "controller": "checkout",

         "action": "addVoucher",

         "sTargetAction": "confirm"

     },

     "post": {

         "sAGB": "0",

         "sVoucher": "FOX-FB",

         "\_\_csrf\_token": "eFbjt1qshN7weOWrjXbfGeXuOWB4SO"

     }

 }

session:

 No session data available

 

_____________________________________________________________________________________________________________________

 

Message:

 SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')  OR s\_articles.supplierID = '320' ) 

                 GROUP BY sessionID' at line 6

Time:

 2018-01-10T23:13:46.252636+0100

Channel:

 core

request:

 {

     "uri": "/checkout/addVoucher/sTargetAction/confirm",

     "method": "POST",

     "query": {

         "module": "frontend",

         "controller": "checkout",

         "action": "addVoucher",

         "sTargetAction": "confirm"

     },

     "post": {

         "sAGB": "0",

         "sVoucher": "FOX-FB",

         "\_\_csrf\_token": "eFbjt1qshN7weOWrjXbfGeXuOWB4SO"

     }

 }

session:

 No session data available

 

 

 

Ich habe zwar noch einen Error, aber den betrifft (soweit ich das deuten kann) die nicht verfügbare Zend OP.

 

Hat jemand eine Idee, woran es liegen kann? Es macht keinen unterschied ob ich einen Gutschein neu anlege, die aktuellen verändere, oder dupliziere.

Ich habe auch in der config.php die Abfrage deaktiviert. Leider ohne Erfolg. :frowning:

 

Lg Tino 

 

 

Die Fehlermeldungen die du oben gepostet hast, haben nichts mit dem CSRF-Token zu tun, sonst ständ der auch in der Fehlermeldung :wink:

Ich gehe eher davon aus, dass du Individualisierungen hast, die bei den Gutscheinen Probleme machen. Zuerst würde ich mal alle Plugins deaktivieren - ab 5.3 über den Sicherheitsmodus im Plugin-Manager möglich. Danach Cache löschen und ausprobieren. Es könnte auch bspw. individuelle Berechnungen bei den Versandkosten im SPiel sein VIelleicht hast du auch irre viele Ausschlüsse bei dem Gutschein, etc.

Da gibt es einiges was man durchtesten kann.

Hallo Moritz,

Vielen Dank für deine Antwort! :slight_smile: Ich ging davon aus das „__csrf_token“: auf eine Tokenfehler hinschließt.

 

Zu deinen Tipps. 

  1. Ich habe bereits alle aktivierten Plugins deaktiviert und wieder aktiviert. Ausser Paypal ist dort keines vorhanden welches nicht von Shopware kommt. Ich finde die Checkbox für den Sicherheitsmodus nicht. :frowning:

  2. Cache, nicht nur den Shop Cache habe ich mittlerweile x-mal gelöscht.

  3. Versandkosten nutze ich den Standard Versand, sprich den habe ich dahingehend nur preislich angepasst und VorOrt. Mit beiden tritt der Fehler auf.

  4. Was genau meinst du mit Ausschlüsse? Ich habe einen Gutschein auf ein komplettes Sortiment eiens Hersteller vergeben. Im Dezember funktionierte es ja auch. Und bis zum 09.01.2018 funktionierte es mit dem Gutschein für diesen Monat auch.

Lg Tino

 

Ich habe etwas getestet. 

Der Fehler tritt nur auf wenn ich den Gutschein, wie gewollt, auf einen Hersteller begrentze.

Die Suche geht weiter.

Lg Tino

 

Leider bin ich nicht weiter gekommen. Es betrifft nur die Konstellation Hersteller - Gutschein. :frowning:

Ein Rollback auf 5.3.4 brachte leider keinen gewünschten Erfolg.

Lg Tino

Niemand eine Idee? :frowning:

 

Schade, Lg Tino

Die Hoffnung stirbt zu letzt.

Auch das Update auf 5.3.7 brachte keine Verbesserung.

Lg Tino

Aktiviere mal bitte das erweiterte Error Debugging in deiner config und schaue dann, was für eine Fehlermeldung im Frontend erscheint - damit lässt sich sicherlich mehr sagen:

http://community.shopware.com/Fehlermeldungen-in-Shopware-debuggen_detail_1880.html 

LG Andre

Hey,

ich habe nochmal im Issue Tracker geschaut und konnte hier ein Ticket finden was zu deiner Situation passen könnte:

Sollte in 5.3.8 behoben sein.

LG Andre

Hallo Andre,

 

ich Danke Dir für deinen Post. :slight_smile:

 

Jetzt hab ich den kompletten Fehlerlog im Frontend und der sieht folgendermaßen aus:

 

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘) OR s_articles.supplierID = ‘320’ ) GROUP BY sessionID’ at line 6 in engine/Library/Zend/Db/Statement/Pdo.php on line 224

Stack trace:

 #0 engine/Library/Zend/Db/Statement.php(297): Zend\_Db\_Statement\_Pdo-\>\_execute(Array) #1 engine/Library/Zend/Db/Adapter/Abstract.php(470): Zend\_Db\_Statement-\>execute(Array) #2 engine/Library/Zend/Db/Adapter/Pdo/Abstract.php(232): Zend\_Db\_Adapter\_Abstract-\>query('SELECT SUM(quan...', Array) #3 engine/Library/Enlight/Components/Db/Adapter/Pdo/Mysql.php(96): Zend\_Db\_Adapter\_Pdo\_Abstract-\>query('SELECT SUM(quan...', Array) #4 engine/Library/Zend/Db/Adapter/Abstract.php(744): Enlight\_Components\_Db\_Adapter\_Pdo\_Mysql-\>query('SELECT SUM(quan...', Array) #5 engine/Shopware/Core/sBasket.php(266): Zend\_Db\_Adapter\_Abstract-\>fetchRow('SELECT SUM(quan...', Array) #6 engine/Shopware/Core/sBasket.php(748): sBasket-\>sGetAmountRestrictedArticles(Array, '320') #7 engine/Shopware/Controllers/Frontend/Checkout.php(561): sBasket-\>sAddVoucher('fox-fb') #8 engine/Library/Enlight/Controller/Action.php(159): Shopware\_Controllers\_Frontend\_Checkout-\>addVoucherAction() #9 engine/Library/Enlight/Controller/Dispatcher/Default.php(530): Enlight\_Controller\_Action-\>dispatch('addVoucherActio...') #10 engine/Library/Enlight/Controller/Front.php(223): Enlight\_Controller\_Dispatcher\_Default-\>dispatch(Object(Enlight\_Controller\_Request\_RequestHttp), Object(Enlight\_Controller\_Response\_ResponseHttp)) #11 engine/Shopware/Kernel.php(191): Enlight\_Controller\_Front-\>dispatch() #12 vendor/symfony/http-kernel/HttpCache/HttpCache.php(484): Shopware\Kernel-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #13 engine/Shopware/Components/HttpCache/AppCache.php(268): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL) #14 vendor/symfony/http-kernel/HttpCache/HttpCache.php(251): Shopware\Components\HttpCache\AppCache-\>forward(Object(Symfony\Component\HttpFoundation\Request), true) #15 vendor/symfony/http-kernel/HttpCache/HttpCache.php(268): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>pass(Object(Symfony\Component\HttpFoundation\Request), true) #16 engine/Shopware/Components/HttpCache/AppCache.php(143): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>invalidate(Object(Symfony\Component\HttpFoundation\Request), true) #17 vendor/symfony/http-kernel/HttpCache/HttpCache.php(199): Shopware\Components\HttpCache\AppCache-\>invalidate(Object(Symfony\Component\HttpFoundation\Request), true) #18 engine/Shopware/Components/HttpCache/AppCache.php(116): Symfony\Component\HttpKernel\HttpCache\HttpCache-\>handle(Object(Symfony\Component\HttpFoundation\Request), 1, true) #19 shopware.php(118): Shopware\Components\HttpCache\AppCache-\>handle(Object(Symfony\Component\HttpFoundation\Request)) #20 {main}

Habe dafür mal einen Pull-Request angelegt: Fix vouchers with conditions by mnaczenski · Pull Request #1476 · shopware/shopware · GitHub
Kannst du ja mal testen, sollte das Problem beheben.

Entschuldige die Ausdrucksweise,

Aber Du Geiler. Es geeeeht. Wuhu! Dickes Danekschön!

 

Was genau hat sich dadurch geändert, oder wo lag das Problem?

Lg Tino

1 Like

@PoWeRcOrSa schrieb:

Was genau hat sich dadurch geändert, oder wo lag das Problem?

Das Problem ist, dass die Prüfung vorher mit is_array immer true war, obwohl sie false sein müsste in diesem Case. Statt zu prüfen, ob die Variable ein Array ist, prüfe ich jetzt, ob die leer ist. Wollte mir morgen noch ansehen, wann das kaputt gegangen ist, also wo genau das herkommt. 

Guten Morgen,

uns ist gerade das gleiche Problem aufgefallen, aber ich habe jetzt ehrlich gesagt nicht verstanden, was ich machen muss, um den Fehler zu beheben.

@shoppilein schrieb:

Guten Morgen,

uns ist gerade das gleiche Problem aufgefallen, aber ich habe jetzt ehrlich gesagt nicht verstanden, was ich machen muss, um den Fehler zu beheben.

 

Da steht alles.

 

Zieh Dir deine sBasket.php vom FTP und ändere den Inhalt der rot (!is_array) markieren Zeile in das was in den grün (empty) markierten Zeile steht. 

Hallo,

 

habe ebenfalls das Problem:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘) OR s_articles.supplierID = ‘6’ ) GROUP BY sessionID’ at line 6 in engine/Library/Zend/Db/Statement/Pdo.php on line 224

 

Einige Tests zeigen, dass es nur auftritt, wenn ich den Gutschein auf Hersteller/Shops/Artikel eingrenze UND zusätzlich den Haken bei “Rabatt nur auf definierte Artikel/Hersteller” setze. Was ja notwendig ist, denn andernfalls greifen die Limitierungen nicht.

 

Gibt es hier eine Lösung?

@Moritz Naczenski schrieb:

Habe dafür mal einen Pull-Request angelegt: https://github.com/shopware/shopware/pull/1476
Kannst du ja mal testen, sollte das Problem beheben.

Lösung steht da ja schon. 

Wurde gemacht. Das ist nicht die Lösung.

 

@Moritz Naczenski schrieb:

@Moritz Naczenski schrieb:

Habe dafür mal einen Pull-Request angelegt: https://github.com/shopware/shopware/pull/1476
Kannst du ja mal testen, sollte das Problem beheben.

Lösung steht da ja schon. 

Weitere Ideen?

Wenn ich zusätzlich noch die Artikel alle auswähle, dann gehts. Geht es denn nicht, dass man pauschal alle Artikel vom Hersteller X rabattiert?

@smugo schrieb:

Weitere Ideen?