Zahlreiche PayPal Fehler über den Tag

Hallo,

wir haben hier über den Tag verteilt zehalreiche PayPal Fehler. Shopware 5.5.7 und PayPal 2.2.1.

Im Shopware Log steht entweder

  1. PayPal Plugin Error (nichts weiter)

  2. oder das: PayPal: Could not create payment for plus payment wall due to a communication failure {“message”:"Client error response

Heute alleine fast 30 Einträge!

Was können wir machen? Woran liegt das?

Bestellnummer an PayPal übertragen mal deaktiviert?

In der Regel wird so ein log erzeugt wenn man mit leerem Warenkorb auf die Zahlungsauswahl-Seie kommt. Das passiert entweder wenn PayPal die Zahlung ablehnt (=Bestellung offen im backend) oder der Kunde ohne etwas im Warenkorb zur Kasse geht. Das wird mit 5.5.9 verhindert.

In der Regel kann man das umgehen indem die Bestellung nicht vor Weiterleitung angelegt wird. Das erreicht man durch Deaktivierung der Option. 

Hi,

ja Funktion ist deaktiviert :;(

Ich habe hier noch in Context Modus verwenden aktiviert. Nützt es was, dass vielleicht zu deaktivieren?

Solche Fehler stehen häufiger im Server Log:

2019/05/27 14:24:19 [error] 23181#23181: *4591274 FastCGI sent in stderr: “PHP message: PHP Fatal error:  Uncaught TypeError: Argument 1 passed to SwagPaymentPayPalUnified\Components\Services\Validation\SimpleBasketValidator::validate() must be of the type array, null given, called in /var/www/clients/client1/web4/web/custom/plugins/SwagPaymentPayPalUnified/Controllers/Frontend/PaypalUnified.php on line 468 and defined in /var/www/clients/client1/web4/web/custom/plugins/SwagPaymentPayPalUnified/Components/Services/Validation/SimpleBasketValidator.php:18
Stack trace:
#0 /var/www/clients/client1/web4/web/custom/plugins/SwagPaymentPayPalUnified/Controllers/Frontend/PaypalUnified.php(468): SwagPaymentPayPalUnified\Components\Services\Validation\SimpleBasketValidator->validate(NULL, NULL, Object(SwagPaymentPayPalUnified\PayPalBundle\Structs\Payment))
#1 /var/www/clients/client1/web4/web/custom/plugins/SwagPaymentPayPalUnified/Controllers/Frontend/PaypalUnified.php(213): Shopware_Controllers_Frontend_PaypalUnified->validateBasketSimple(Object(SwagPaymentPayPalUnified\PayPalBundle\Stru” while reading response header from upstream, client: 87.163.93.133, server: xxx.de, request: “GET /PaypalUnified/return/plus/1/basketId/plus?paymentId=PAYID-LTV5NHA9SD93663P7806350G&token=EC-1MX80387EM878225V&PayerID=Y9RX63XLME52N HTTP/1.1”, upstream: “fastcgi://unix:/var/lib/php5-fpm/web4.sock:”, host: “www.xxx.de”, referrer: “PayPal

Kannst du das denn reproduzieren, wenn du ohne etwas im Warenkorb zur Kasse gehst und einen Benutzer anlegst? 

Ich komme gar nicht zur Kasse ohne etwas im Warenkorb.

Wenn ich mich registriere und zur Kasse klicke, dann fährt der offcanvas Warenkorb rein mit dem Hinweis, Ihr Warenkorb ist leer, weiter einkaufen.

–> https://www.kiesundco.de

Also die Fehlermeldung sagt zumindest, dass getBasket() NULL ist.

Wenn ich in deinem Shop /checkout/confirm aufrufe ohne Login, kann ich mich registrieren und lande auf /checkout/shippingPayment. Dort wird die PaymentWall nicht angezeigt, da ich keinen Basket habe. Schau einfach mal ins Log so gegen 7:10, ob es da den gleichen Fehler gibt, denn dann habe ich den erzeugt. Dieser Case wäre also harmlos und wird mit der 5.5.9 unterbunden: Merge pull request #7692 in SW/shopware from sw-23642/5.5/disable-che… · shopware/shopware@e90052f · GitHub

Hi und Guten Morgen,

habe den Fehler hier um 7:11. Scheint wirklich das Problem zu sein.

Nochmal zum Verständnis: Du hast den Fehler ja direkt über die checkout/confirm usw. reproduziert. Wie entsteht der Fehler denn im täglichen Geschäft?

Normalerweise klickt der Kunde ja erst einen Artikel in den Warenkorb und registriert sich dann.

Naja, das ist ja jetzt die Frage.

Du kannst ja anhand des Access-Logs schauen, welchen Klickweg ein spezifischer Kunde genommen hat. I.d.R. kann man das so etwas besser nachvollziehen, indem man sich die Einträge zu dem einen Fehler aus dem Access-Log herausfiltert.

Vielleicht legen die Leute auch etwas in den Warenkorb, warten sehr lange bis die Session ausläuft und klicken dann auf “zur Kasse”. Da es die Session nicht mehr gibt, ist der Warenkorb dann leer. Sind aber alles Vermutungen.

Ok, wäre zumindest eine Idee :slight_smile:

Kann man die Session irgendwie verlängern?

Die Session-Zeit kannst du über deine PHP-Einstellungen hochsetzen. Im Standard sind das glaube ich immer 120 Minuten. Dafür das PHP-Setting „session.gc_maxlifetime“ verantwortlich. Du könntest es auch über die config.php versuchen, da greift das aber nicht auf jedem System:

 [
   ...
  ],
  'session' => [
      'gc_maxlifetime' => 14400, //bspw. für 240 Minuten 
  ],
);

Im Standard wird einfach der PHP-Value benutzt.

ok super Danke