DARUM gibt es den Paypal Error: Amount cannot be zero

Um noch mal auf den Titel dieses Posts Bezug zu nehmen:

WARUM gibt es den Paypal Error?
Szenario bei mir: Es erfolgt keine Zahlung und Status bleibt offen. Seltsamer Weise geht trotzdem die Bestellbestätiung an den Kunden.
Den Fehler konnten ich noch nicht reproduzieren.

plugin.ERROR: PayPal: Could not create payment for plus payment wall due to a communication failure {"message":"Client error response [url] https://api.paypal.com/v1/payments/payment [status code] 400 [reason phrase] Bad Request","payload":"{\"name\":\"VALIDATION_ERROR\",\"details\":[{\"field\":\"transactions[0].amount\",\"issue\":\"Amount cannot be zero\"}],\"message\":\"Invalid request - see details\",\"information_link\":\"https://developer.paypal.com/docs/api/payments/#errors\",\"debug_id\":\"XXXXXXX\"}"} {"uid":"XXXXXX"}

 

Genau das selbe Problem bei uns :frowning: Die Kundin hat seit Januar 2019 165 Abbrüche dieser Art bei PayPal.

Hier die letzten Fehlermeldungen aus dem Log:

[2019-04-20 08:51:45] plugin.ERROR: PayPal: Could not process express-checkout due to a communication failure {„message“:„Client error response [url] https://api.paypal.com/v1/payments/payment [status code] 400 [reason phrase] Bad Request“,„payload“:"{„name“:„VALIDATION_ERROR“,„details“:[{„field“:„transactions[0].amount“,„issue“:„Amount cannot be zero“}],„message“:„Invalid request - see details“,„information_link“:„https://developer.paypal.com/docs/api/payments/#errors",„debug_id“:„fdc8344989275“}"} {„uid“:„0b91391“}
[2019-04-20 10:05:39] plugin.ERROR: PayPal: Could not create payment for plus payment wall due to a communication failure {„message“:„Client error response [url] https://api.paypal.com/v1/payments/payment [status code] 400 [reason phrase] Bad Request“,„payload“:“{„name“:„VALIDATION_ERROR“,„details“:[{„field“:„transactions[0].amount“,„issue“:„Amount cannot be zero“}],„message“:„Invalid request - see details“,„information_link“:„https://developer.paypal.com/docs/api/payments/#errors",„debug_id“:„b899122918ec4“}"} {„uid“:„18ed941“}
[2019-04-20 10:05:59] plugin.ERROR: PayPal: Could not create payment for plus payment wall due to a communication failure {„message“:„Client error response [url] https://api.paypal.com/v1/payments/payment [status code] 400 [reason phrase] Bad Request“,„payload“:“{„name“:„VALIDATION_ERROR“,„details“:[{„field“:„transactions[0].amount“,„issue“:„Amount cannot be zero“}],„message“:„Invalid request - see details“,„information_link“:„https://developer.paypal.com/docs/api/payments/#errors",„debug_id“:„73e5027530bc3“}"} {„uid“:„22daf93“}
[2019-04-20 10:06:02] plugin.ERROR: PayPal: Could not create payment for plus payment wall due to a communication failure {„message“:„Client error response [url] https://api.paypal.com/v1/payments/payment [status code] 400 [reason phrase] Bad Request“,„payload“:“{„name“:„VALIDATION_ERROR“,„details“:[{„field“:„transactions[0].amount“,„issue“:„Amount cannot be zero“}],„message“:„Invalid request - see details“,„information_link“:„https://developer.paypal.com/docs/api/payments/#errors",„debug_id“:„e8ef26acd2dac“}"} {„uid“:„abee675“}
[2019-04-20 10:06:04] plugin.ERROR: PayPal: Could not create payment for plus payment wall due to a communication failure {„message“:„Client error response [url] https://api.paypal.com/v1/payments/payment [status code] 400 [reason phrase] Bad Request“,„payload“:“{„name“:„VALIDATION_ERROR“,„details“:[{„field“:„transactions[0].amount“,„issue“:„Amount cannot be zero“}],„message“:„Invalid request - see details“,„information_link“:"https://developer.paypal.com/docs/api/payments/#errors",„debug_id“:„5d2e3484ad13e“}"} {„uid“:„eb6e6e3“}
 

Jemand eine Idee was hier los ist oder wie man das beheben kann?

1 Like

Hab auch zwei Issue Tickets gefunden hierzu:

https://issues.shopware.com/issues/PT-10076?search=Amount%20cannot%20be%20zero&swversion=Not%2520Scheduled%2520%2528Plugin%2529&status=1,3,10001,4,10010,10025,10017

https://issues.shopware.com/issues/PT-9724

1 Like

Das betrifft uns auch. Der selbe Fehler. 

@purpix schrieb:

Hab auch zwei Issue Tickets gefunden hierzu:

https://issues.shopware.com/issues/PT-10076?search=Amount%20cannot%20be%20zero&swversion=Not%2520Scheduled%2520%2528Plugin%2529&status=1,3,10001,4,10010,10025,10017

https://issues.shopware.com/issues/PT-9PT-97

 Dem Ticket-Status nach zu Urteilen, wird sich Shopwareseitig nicht so schnell was tun.

Hallo zusammen,

ich konnte einen Workflow herausfinden, wie sich der “Amount cannot be zero” Fehler nachstellen lässt. 

  • PayPal Plus ist aktiv
  • Bestellnummer mitsenden ist auch aktiv
  • Bestellung mit PayPal durchführen
  • nach der Bestätigung auf PayPal Seite wird man zurück zu Shopware geleitet und es wird ein execute auf das Payment ausgeführt
  • dabei einen Fehler provozieren, z.B. mit https://developer.paypal.com/docs/api/request-headers/#enable-negative-testing
  • da nun ein Fehler auftritt wird man auf die shippingPayment Seite geleitet
  • hier wiederum versucht das Plugin nun die Payment Wall für PPPlus zu erstellen
  • zu diesem Zeitpunkt existiert aber kein Warenkorb mehr, da durch die Option Bestellnummer mitsenden schon eine Bestellung angelegt und der Warenkorb geleert wurde
  • kein Warenkorb ->  “Amount cannot be zero”

Kann das jemand bestätigen? 

Eine Lösung wäre z.B. nun nicht auf die shippingPayment Seite zu leiten, sondern auf die finish Seite, weil die Bestellung ja schon angelegt ist (s.o.). Dort könnte man dann eine Meldung ausgeben, dass während des Zahlungsprozesses ein Fehler aufgetreten ist. Desweiteren einen Button, um noch mal zu PayPal zu leiten und den Zahlungsprozess noch mal zu triggern. Oder der Kunde soll ich sich beim Shopbetreiber zu melden, um ggf. eine andere Zahlungsart zu nehmen. Was würdet ihr davon halten?

Viele Grüße aus Schöppingen

cool Michael Telgmann

Die Lösung klingt gut. Bitte einbauen.

Weiterhin hatte ich es schon mal in den entsprechenden Tickets erwähnt: Ein solcher Button zum Durchführen der Zahlung, wäre auch in den Bestelldetails (im Shop, im Kundenkonto) eine tolle Idee. Dann könnte man dem Kunden eine sinnvolle E-Mail schicken mit dem Hinweis “Hier können Sie Ihre Zahlung unkompliziert nachholen”.

1 Like

Hallo Michael,

bei deiner Beschreibung würde, wenn ich das richtig verstehe, dennoch eine Zahlung an PayPal erfolgt sein. Das wiederum findet bei unseren Kunden nicht statt. Die Zahlung kommt definitv nicht an.

 

Viele Grüße

David Schaller

@FFWD‍ Hast Du falsch verstanden. Die Bestellung ist bereits da, die Zahlung aber nicht. Trotzdem landet man auf der finish-Seite und kann vor dort aus die Zahlung abschließen.

Weitere Quelle für “Amount can not be zero”: https://forum.shopware.com/discussion/53205/checkout-trotz-leerem-warenkorb-moeglich-paypal-amount-cannot-be-zero

Der Aufruf von /checkout/shippingPayment mit leerem Warenkorb erzeugt bei mir reproduzierbar den Amount-Zero Eintrag im Plugin-Log.

Ich habe den Fehler auch noch ab und an, aber sehr selten, seit ich die “Bestellnummer übertragen” deaktiviert habe. Diesen Monat 2 Einträge in den Logs.  Es kommt auch, wohl deswegen, keine Bestellung rein die nicht bezahlt ist. 

Schaut doch mal nach ob Ihr in der Grundeinstellung die Zahlungs-ID des neuen Plugins eingetragen habt und deaktiviert mal die Bestellnummer übertragen. Vielleicht reduziert es die Fehlermeldungen. Nach einer Lösung sollte trotzdem weitergesucht werden.

@artep‍ Wird wohl so sein, dass dann weniger Fehlermeldungen erzeugt werden. Meiner Meinung nach maskiert das nur das eigentliche Problem.

Wir haben jetzt auch mal testweise die Übertragung der Bestellnummer deaktiviert, weil es mir einfach auf den Keks geht.

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍

Das Problem habe ich schon seit März beim Entwickler Support liegen und in der Diskussion. Es liegt defintiv am Abschluss der Bestellung. Das von dir skizzierte Vorgehen bei einer Fehlerhaften Zahlung ist suboptimal. Wir haben unsere Kunden befragt bei denen der Fehler auftrat. Die überwiegende Mehrheit hat uns mitgeteilt, dass sie bewusst bei PayPal abgebrochen haben weil sie nicht darüber bezahlen wollten.

In meinen Augen wäre die vernünftigste Lösung:

  1. Beim speichern der Order im Plugin wird keine Bestellbestätigungsmail ausgelöst.

  2. Die Ordernumber wird an PayPal übertragen

3.  a) Im Erfolgsfall: Den Execute des PayMents ausführen und jetzt die Bestellbestätigung versenden

3 b) Im Fehlerfall: “Aufräumen” d.H. die Order und ihre Bestandteile löschen, Den Basket wiederherstellen und den Kunden mit einer Fehlermeldung auf die Zahlartseite weiterleiten. Dort soll der Kunde erneut eine Zahlart auswählen.

 

Naja, dann hast du aber Sprünge in den Nummernkreisen der Bestellung, bzw. inkonsistenzen. So wird es ja von anderen Zahlungsanweisen gemacht und führt immer wieder zu Problemen. 

Wenn man keine Bestellung vorher will, kann man ja die Übertragung anschalten und die Transaktionsnummer zur Identifizierung verwenden. Das ist ja der Ablauf den du beschreibst. Anders geht es nur sauber wenn die Bestellung im System bleibt.

 

Wir werden für den Case den Michael beschrieben hat dann eine Zahlung auf der finnish Seite anbieten.

@Moritz Naczenski schrieb:

Naja, dann hast du aber Sprünge in den Nummernkreisen der Bestellung, bzw. inkonsistenzen. So wird es ja von anderen Zahlungsanweisen gemacht und führt immer wieder zu Problemen. 

Wenn man keine Bestellung vorher will, kann man ja die Übertragung anschalten und die Transaktionsnummer zur Identifizierung verwenden. Das ist ja der Ablauf den du beschreibst. Anders geht es nur sauber wenn die Bestellung im System bleibt.

 

Wir werden für den Case den Michael beschrieben hat dann eine Zahlung auf der finnish Seite anbieten.

Soll das zeitnah umgesetzt werden? 

Hallo, wir haben auch massive Probleme mit diesem Fehler. Allerdings nicht nur weil eine Zahlung noch nicht bestätigt wurde. Paypal bleibt einfach hängen. Das ganze ist massiv geschäftsschädigend, weil viele Kunden einfach frustriert wo anders bestellen, nachdem Paypal hängen bleibt. Wir stellen regelmäßig abgebrochene Bestellungen wieder her, schreiben dann die Kunden an und wissen aus den Reaktionen (und das ist nur ein Bruchteil, weil ja die meisten zu bequem sind zu antworten), dass Kunden dann in anderen Shops bestellt haben. Auch durch unsere Stammkunden wissen wir, dass das mit Paypal oft nicht klappt. Wenn - wie man es früher einstellen konnte - wenigstens erst die Bestellung abgeschlossen würde, bevor nach Paypal weitergeleitet wird, hätte der Kunde zumindest eine Bestellbestätigung. Das mit der Zahlung kann man auch später noch regeln. So denkt er aber, jetzt habe ich in 2 Stunden 60 Artikel zusammen gesucht (wir haben Perlen und Schmuckzubehör zum BastelnI) und jetzt kann ich wieder von vorne anfangen. Im Log steht aber nicht nur dieser zero fehler, sondern immer auch ein communication fehler. Ist das bei Euch auch so?

So sieht das bei uns aus, täglich gibts einen log: [2019-05-15 14:44:17] plugin.ERROR: PayPal: Could not process checkout due to a communication failure {„message“:„Server error response [url] https://api.paypal.com/v1/payments/payment/PAYID-LTOASSA76R043385E8602112/execute [status code] 500 [reason phrase] Internal Server Error“,„payload“:"{„name“:„INTERNAL_SERVICE_ERROR“,„message“:„An internal service error has occurred“,„information_link“:„https://developer.paypal.com/docs/api/payments/#errors",„debug_id“:„40f04abb3ddfd“}"} {„uid“:„2ddbe63“}
[2019-05-15 14:44:19] plugin.ERROR: PayPal: Could not create payment for plus payment wall due to a communication failure {„message“:„Client error response [url] https://api.paypal.com/v1/payments/payment [status code] 400 [reason phrase] Bad Request“,„payload“:“{„name“:„VALIDATION_ERROR“,„details“:[{„field“:„transactions[0].amount“,„issue“:„Amount cannot be zero“}],„message“:„Invalid request - see details“,„information_link“:„https://developer.paypal.com/docs/api/payments/#errors",„debug_id“:„6430fc0cbf594“}"} {„uid“:„e4d2644“}
[2019-05-15 17:49:13] plugin.ERROR: PayPal: Could not create payment for plus payment wall due to a communication failure {„message“:„Client error response [url] https://api.paypal.com/v1/payments/payment [status code] 400 [reason phrase] Bad Request“,„payload“:“{„name“:„VALIDATION_ERROR“,„details“:[{„field“:„transactions[0].amount“,„issue“:„Amount cannot be zero“}],„message“:„Invalid request - see details“,„information_link“:"https://developer.paypal.com/docs/api/payments/#errors",„debug_id“:„988eb90722cf1“}"} {„uid“:„3b1c060“}

@roland3‍ Wir haben ehrlich gesagt recht wenig Fehler im Log zu PayPal – an manchen Tagen gar keine.

Am häufigsten sind noch diese beiden (häufig im Sinn von 0 bis maximal 3 pro Tag):

  • Could not create payment for plus payment wall due to a communication failure
  • Could not patch address, payer info, item list and amount due to a communication failure

Wobei der erste wahrscheinlich dann auftritt, wenn der PayPal-Server gerade nicht schnell genug bzw. überhaupt antwortet. Bei dem zweiten bin ich überfragt. Tippe auf irgendeine Fehleingabe seitens des Kunden. (Selbst 3 Stück an einem Tag sehe ich in diesem Fall wenig kritisch, da davon auszugehen ist, dass ein Kunde mehrfach den gleichen Fehler ausgelöst hat.)

Das Abstellen der Übermittlung der Bestellnummer sorgt also bei uns erst mal für einen gewissen Seelenfrieden, da der Support-Aufwand trotz Automatisierung an manchen Tagen nicht unerheblich war. Wir haben nach den neusten Updates noch nicht probiert diese Option wieder zu aktivieren. In den Changelogs konnte ich nicht lesen, dass die von [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski “Moritz Naczenski”)‍ in Aussicht gestellten Änderungen bereits umgesetzt wären.

Hallo,

wir haben soeben die Version 2.2.2 released. Nun sollte ein besseres Error-Handling stattfinden.
PayPal | Bestellprozess (Checkout) | Erweiterungen | Shopware Community Store
Bitte testen, ob die Fehler nun weniger werden. 
Wenn die Bestellnummer mitgesendet wird, wird nun immer zur Finish Seite weitergeleitet. Die Bestellbestätigung wird nur noch verschickt, wenn die Zahlung ok war. Sollte ein Fehler beim execute des Payments auftreten, bekommt der Kunde nun eine Fehlermeldung auf der Finish Seite zu sehen. Der Zahlungsstatus verbleibt auf offen, der Bestellstatus wird auf “Klärung notwendig gesetzt”. Ebenso wird im Fehlerfall die “transactionID” gelöscht. 

Desweiteren wurde ein Fehler behoben, der Plus auf der shippingPayment Seite geladen hat, obwohl kein Warenkorb vorhanden war. Dies war meist die Ursache für den “Amount cannot be zero” Fehler

Viele Grüße aus Schöppingen

cool Michael Telgmann

[@Michael Telgmann](http://forum.shopware.com/profile/17553/Michael Telgmann “Michael Telgmann”)‍ Kurze Frage zum Fix: Der Kunde hat auf der Finish-Seite dann eine einfache Möglichkeit die Zahlung erneut zu versuchen? (Oder eine andere Zahlungsart zu wählen, wenn wir schon mal dabei sind.) Wäre ja doof, wenn das trotzdem eine Art “dead end” wäre.

Nein, da gibt es bisher keine Funktionen. Er bekommt den Hinweis sich an den Shopbetreiber zu wenden. 
Eine Möglichkeit wäre es, generell offene Bestellungen aus dem Kunden Account heraus zu bezahlen. Dafür müsste aber vermutlich Shopware selbst angepasst werden. Dafür kannst du gerne ein Ticket anlegen  Smile

Viele Grüße aus Schöppingen

cool Michael Telgmann