Bestellabbrüche mit Billsafe: Payment ID cannot be null in Shopware/Core/s.Order.php

Hallo,

seit einigen Tagen haben wir extrem viele Bestellabbrüche über BillSafe bei uns im Shop. Wenn wir es selbst testen funktioniert alles einwandfrei. Jetzt hat uns eine Kundin mal einen Screenshot bekommen von dem was Sie erhalten hat nachdem man die Bezahlung abschließend wollte:

 

Kann mir jemand einen Hinweis geben worauf diese Fehlermeldung hindeutet?

LG
Sebb

Gibt es hier etwas neues? Haben das Problem auch. Offenbar ist bei vielen die den Fehler erhalten Kaspersky installiert?!

Hallo,

die Meldung bemängelt das paymentID nicht null sein darf. Ggf. gibt es im Shop Regelwerke die dazu führen, dass die Bestellung nicht mit einer bestimmten Zahlungsart abgeschlossen werden darf. Das System versucht dann evtl. umzustellen auf eine andere Zahlungsart, findet aber keine?!

Ich empfehle alle Einstellungen zu prüfen. Sind immer Zahlungsarten aktiv / zu Verfügung? Siehe Versandkosten, Zahlungsarten oder auch Riskmanagement

Sebastian

Zumindest bei uns sind keine solcher Regeln vorhanden.
Dazu sei gesagt, das die Zahlung bei Billsafe offenbar erfolgt ist, jedoch die Bestellung, da die PaymentId null ist, nicht gespeichert wurde. Bei Billsafe gibt es daher bei der Zahlung auch keine Bestellnummer. Im Shop kann man die Bestellung entsprechend auch nicht finden.
Es gibt auch Zahlungen via Billsafe welche völlig fehlerfrei funktionieren. 


Gemeinsamkeit der Fehlerfälle war wie gesagt kurioserweise bei allen die installierte Kaspersky Internet Security, wobei ich nicht weiß ob diese theoretisch in den Zahlvorgang im Browser eingreifen kann.

Shopwareversion ist noch 4.3.6. , BillsafePlugin 2.1.2. Problem besteht seit ca. 2 Monaten.

Hi,

gibt es bei dir denn auch solche Fehlermeldungen? Gibt’s Fehler in den Log?

Kann man das mit kaspersky nachstellen? Dann den Schutz temporär mal anhalten/deaktivieren und schauen, ob das Problem noch auftritt.

Bisher habe ich nicht in dieser Richtung gehört

Sebastian

Hallo zusammen,

 

frisch aus dem Urlaub auch eine Antwort von mir.

Ich habe selber Kaspersky auf den Rechnern und den Vorgang simuliert. Bei mir ist der Kauf 1a durchgegangen. Ansonsten genau das selbe Verhalten, im Shop abgebrochene Bestellung, bei Billsafe als Bestellung mit BTN hinterlegt, nur ohne Bestellnr…

@ ark: Habt ihr in der Zwischenzeit eine Lösung?

 

Gruß

Sebb

Hallo,

bisher keine Lösung. Gut dann scheint Kaspersky auch nicht das Problem zu sein.

Es wird im Log ein entsprechender Fehler abgelegt, z.B.:

[2016-08-07 10:18:13] core.ERROR: exception ‚Enlight_Exception‘ with message ‚Shopware Order Fatal-Error test :SQLSTATE[23000]: Integrity constraint violation: 1048 Column ‚paymentID‘ cannot be null‘ in /test/engine/core/class/sOrder.php:531
Stack trace:
#0 /test/engine/Shopware/Controllers/Frontend/Payment.php(113): sOrder->sSaveOrder()
#1 /test/engine/Shopware/Plugins/Default/Frontend/SwagPaymentBillsafe/Controllers/Frontend/PaymentBillsafe.php(244): Shopware_Controllers_Frontend_Payment->saveOrder(1446015693, ‚001d14f8958cfc9…‘, 21)
#2 /test/engine/Shopware/Plugins/Default/Frontend/SwagPaymentBillsafe/Controllers/Frontend/PaymentBillsafe.php(382): Shopware_Controllers_Frontend_PaymentBillsafe->returnAction()
#3 /test/engine/Library/Enlight/Controller/Action.php(159): Shopware_Controllers_Frontend_PaymentBillsafe->redirectAction()
#4 /test/engine/Library/Enlight/Controller/Dispatcher/Default.php(528): Enlight_Controller_Action->dispatch(‚redirectAction‘)
#5 /test/engine/Library/Enlight/Controller/Front.php(228): Enlight_Controller_Dispatcher_Default->dispatch(Object(Enlight_Controller_Request_RequestHttp), Object(Enlight_Controller_Response_ResponseHttp))
#6 /test/engine/Shopware/Kernel.php(145): Enlight_Controller_Front->dispatch()
#7 /test/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(471): Shopware\Kernel->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#8 /test/engine/Shopware/Components/HttpCache/AppCache.php(256): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward(Object(Symfony\Component\HttpFoundation\Request), true, NULL)
#9 /test/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(428): Shopware\Components\HttpCache\AppCache->forward(Object(Symfony\Component\HttpFoundation\Request), true)
#10 /test/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(328): Symfony\Component\HttpKernel\HttpCache\HttpCache->fetch(Object(Symfony\Component\HttpFoundation\Request), true)
#11 /test/engine/Shopware/Components/HttpCache/AppCache.php(178): Symfony\Component\HttpKernel\HttpCache\HttpCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true)
#12 /test/vendor/symfony/http-kernel/Symfony/Component/HttpKernel/HttpCache/HttpCache.php(192): Shopware\Components\HttpCache\AppCache->lookup(Object(Symfony\Component\HttpFoundation\Request), true)
#13 /test/engine/Shopware/Components/HttpCache/AppCache.php(113): Symfony\Component\HttpKernel\HttpCache\HttpCache->handle(Object(Symfony\Component\HttpFoundation\Request), 1, true)
#14 /test/shopware.php(109): Shopware\Components\HttpCache\AppCache->handle(Object(Symfony\Component\HttpFoundation\Request))
#15 {main} {„uid“:„9da9a6a“}

 

Hallo zusammen, 

bei uns tritt der Fehler ebenfalls immer mal wieder auf.

Das Problem ist der Sicherheitsbrowser von Kaspersky. 

Nach Rücksprache mit einigen Kunden und unserem Kundenservice habe ich folgenden Ablauf erkannt:

  1. Kunde möchte per Rechnung(Billsafe) kaufen

  2. Es erscheint die Meldung von Kaspersky, ob ein “Sicherheitsbrowser” benutzt werden soll

  3. Die Kunden wählen diesen natürlich, wodurch eine seperate Browsersession geöffnet wird

  4. Zahlung wird an Billsafe übermittelt und dort angelegt

  5. Das Billsafe-Plugin versucht danach die Bestellung im Shop zu speichern. Allerdings ist durch die Öffnung des “sicheren” Browsers die Session leer (Kunde ist nicht mehr im Shop eingeloggt) und der Shop hat keinen Zugriff mehr auf die Userdaten. Dadurch kann die Bestellung im Shop nicht gespeichert werden aber die Zahlung bei Billsafe bleibt erhalten.

Um keine “verwaisten” Zahlungen mehr bei Billsafe zu haben, haben wir das Plugin so angepasst, dass die Reihenfolge für das Anlegen der Bestellung geändert wird. D.h. die Bestellung wird zuerst im Shop angelegt und danach erst an Billsafe übertragen.

Vielleicht gibt es einen “offiziellen” Workaround von @shopware‍ . Meinen kann ich leider nicht veröffentlichen, da wir noch weitere Anpassungen am Plugin vorgenommen haben.

 

Gruß

Markus

1 „Gefällt mir“

@SVH Handels GmbH schrieb:

Um keine „verwaisten“ Zahlungen mehr bei Billsafe zu haben, haben wir das Plugin so angepasst, dass die Reihenfolge für das Anlegen der Bestellung geändert wird. D.h. die Bestellung wird zuerst im Shop angelegt und danach erst an Billsafe übertragen.

Vielleicht gibt es einen „offiziellen“ Workaround von @shopware‍ . Meinen kann ich leider nicht veröffentlichen, da wir noch weitere Anpassungen am Plugin vorgenommen haben.

Es gibt ja generell zwei Möglickeiten:

  • Bestellung vor Weiterleitung anlegen
  • Bestellung nach Weiterleitung anlegen

Beides hat seine Vor- und Nachteile. Entweder hast du Zahlungen ohne Bestellung oder ggf. Bestellungen ohne Zahlung (wenn Kunde bspw. bei Billsafe abbricht). Egal wierum man das ändert, es wird immer jemand ein Problem damit haben.

Das Grundproblem ist ja eher der Sicherheitsbrowser, denn die Session ist ja nicht nur in Shopware wichtig. Andere Plugins - quasi alle die mit einer solchen Weiterleitung arbeiten, müssten ja die gleichen Probleme haben.

Hallo Moritz, 

ja das ist korrekt. Man muss dann natürlich dafür sorgen, dass die Bestellung genullt wird, wenn man nichts von Billsafe zurück bekommt oder die Bestellung abgebrochen/abgelehnt wird (ordernumber=0, status = -1 etc).

Damit hätte man zumindest die Problematik mit Billsafe erstmal behoben.

Dass der Sicherheitsbrowser ein grundsätzliches Problem darstellt, steht hier außer Diskussion.

 

Gruß

Markus

 

Hallo Moritz,

ob die Sicherheitsfunktion von Kaspersky „das eigentliche Problem“ darstellt, ist doch eigentlich irrelevant. In der Praxis ist die Kaspersky-Software weit verbreitet und man muss in Zukunft damit rechnen, dass solche Probleme öfters auftreten. Eine Option in Zahlungsplugins Bestellungen vor bestätigtem Zahlungsabschluss anzulegen, ermöglicht zumindest in den Bestellungen immer alle Interaktionen zu sehen, bei denen auf „zahlungspflichtig bestellen“ geklickt worden ist. Bleibt der Zusatzaufwand die erfolgte Zahlung bei dem Zahlungsdienstleister überprüfen zu müssen. Falls möglich kann das Plugin ja eine Warnmeldung setzen, wenn keine Bestätigung über eine erfolgreiche Zahlung vom Dienstleister kommt. 

Es wäre doch auch sinnvoll, wenn Shopware diese Option Pluginherstellern vorschreibt, um ein identisches Verhalten der unterschiedlichen Zahlungsdienstleister an dieser Stelle zu gewährleisten.