Bestellung wird erzeugt ohne daß Paypal-Zahlung abgeschlossen ist!

Wir nutzen bei Shopware 6.1.5 das Paypal Plugin. Beim Bestellvorgang wid zwar der Paypal-Login angezeigt, die Bestellung wird aber ausgelöst bevor der Kunde die Zahlung abgeschlossen hat bzw. unabhängig davon, ob der Kunde eine Zahlung tätigt oder nicht. Paypal gab die Auskunft, daß es sich um einen Fehler im Paypal-Modul handelt, der längst korrigiert sein müßte, ode raber um eine falsche Konfiguration. Haben andere Nutzer das Problem auch und wie kann ich es beheben?

In Shopware 6 ist die Zahlung und die Bestellung komplett losgelöst voneinander. Eine Bestellung wird ausgelöst, wenn der Kunde auf “Zahlungspflichtig bestellen” klickt. Der Zahlungsstatus bleibt hier zunächst offen. Sobald der Kunde die Zahlung abgewickelt hat, ändert er sich auf komplett bezahlt. Das führt natürlich dazu, dass immer jeder Bestellversuch im System ist. Mit 6.2 haben wir hier noch einige weitere Dinge eingebaut:

  • Der Kunde kann nach fehlgeschlagener Zahlung (Zahlungsstatus offen und fehlgeschlagen) die Zahlungsart wechseln und den Zahlungsvorgang erneut starten
  • Der Kunde kann nach fehlgeschlagener Zahlung optional (Aktivierbar in den Einstellungen) die Bestellung wieder stornieren
  • Der Kunde kann nachträglich die Zahlungsart wechseln in seinem Account (Schnellbesteller per Direktlink) und bspw. von Vorkasse zu Paypal wechseln
  • Der Shopbetreiber kann Zahlungserinnerungen verschicken die direkt auf die Zahlungsseite gehen, damit der Kunde eine Zahlung anstoßen kann

Dabei fällt auch noch ein weiterer Punkt ab:

  • Schnellbesteller können ihren Bestellstatus per Direktlink einsehen

Das ist alles Teil der 6.2 die ja im Verlauf des Aprils präsentiert wird und dir wahrscheinlich schon den großtei der Probleme behebt.

In der Vergangenheit war das hier immer eine Grundsatzentscheidung: Soll eine Bestellung vor Zahlung angelegt werden (= Es kann passieren, dass eine Zahlung vorliegt, aber keine Bestellung im System ist) oder soll eine Bestellung vor der Zahlung angelegt werden (= Es kann passieren, dass eine Bestellung vorliegt, aber keine Zahlung). Erster Punkt war immer deutlich komplexer, denn wenn die Bestellung nicht im System ist, bekommt man die relativ schwer nachträglich rein. 

Viele Grüße
Moritz Naczenski

 

1 „Gefällt mir“

@Moritz Naczenski schrieb:

In Shopware 6 ist die Zahlung und die Bestellung komplett losgelöst voneinander. Eine Bestellung wird ausgelöst, wenn der Kunde auf „Zahlungspflichtig bestellen“ klickt… Erster Punkt war immer deutlich komplexer, denn wenn die Bestellung nicht im System ist, bekommt man die relativ schwer nachträglich rein. 

Das stimmt, danke euch dafür! Wir dachten auch erst, es sei nicht so sinnig. Aber im Nachhinein muss ich sagen, haben wir doch jeden Kunden wo Paypal warum auch immer abgebrochen ist, noch dazu bekommen dann per Überweisung zu zahlen oder direkt per Paypal an uns das Geld zu sammeln. Ist die Bestellung nicht durch und bekommt der Kunde keine Bestellbestätigung, auch wenn Paypal nicht geklappt hat, wird es wirklich sehr schwierig.

Wird es denn auch die Möglichkeit geben, alle oder optional 2 Zahlungsarten direkt abzubilden? Wir mussten auf Vorkasse umstellen, weil viele einfach zu schnell waren und Paypal in der Voreinstellung übersehen haben. Einige von den Kunden hatten kein Paypal und haben Paypal deswegen abgebrochen. In Shopware 5 waren ja beide Zahlungsmöglichkeiten aufgezeigt.

@Moritz Naczenski schrieb:

In Shopware 6 ist die Zahlung und die Bestellung komplett losgelöst voneinander. Eine Bestellung wird ausgelöst, wenn der Kunde auf „Zahlungspflichtig bestellen“ klickt. Der Zahlungsstatus bleibt hier zunächst offen. Sobald der Kunde die Zahlung abgewickelt hat, ändert er sich auf komplett bezahlt.

Ich dachte, dass steuert die Plugin Konfig „Zahlungsabschluss“.
Mh - dann die Frage: Komme ich irgendwie einfach an den Impuls, wann die Zahlung erfolgreich gesetzt wurde?
Unsere Kunden möchten eig. immer erst die PayPal Bestellung importieren, wenn diese abgeschlossen ist.
Bisher sehe ich nur den Weg über OrderEvents::ORDER_WRITTEN_EVENT ein Aufschluss, wann die Bestellung gespeichert wird - das ist ja anscheinend nun unzureichend für meinen Fall.

EDIT 1: Habe noch in die Events geguckt.
Frage ist, wie generell Zahlungsarten (Plugins) das lösen - ich würde ungern in die Schnittstelle für jede Zahlungsart da extra Logik einbauen.
Idee wäre, Bestellungen von bestimmt markierten Zahlungsarten erst einmal parken und per Plugin sich aufschließen, wenn was an den passiert.
Frage ist dann wirklich, was z.B. PayPal macht: Status Änderung, eine Transaktion schreiben, … und ja, wie der best practice hier auch bei anderen Payment Anbietern ist.

EDIT 2: PayPal löst es hier wohl aus: https://github.com/shopwareLabs/SwagPayPal/blob/master/src/Payment/PayPalPaymentHandler.php#L178
Das löst folgendes aus: https://github.com/shopware/platform/blob/master/src/Core/Checkout/Order/Aggregate/OrderTransaction/OrderTransactionStateHandler.php#L116
Damit landen wir hier: https://github.com/shopware/platform/blob/master/src/Core/System/StateMachine/StateMachineRegistry.php#L156

Meine Idee wäre da auf ein Event zu hören und zu checken, ob es sich um eine „ACTION_PAY“ Transition von PayPal handelt.
Wäre das deiner Meinung nach der richtige Weg? Wie gesagt - ich bin an einer Lösung interessiert, die eig. alle Payment Dienstleister erschlägt, die diese Art von async. Abschluss haben.

Schöne Grüße,
Niklas

Das Problem ist nicht auf PayPal beschränkt, das gleiche Problem gibt es zum Beispiel mit der Mollie-Zahlungsschnittstelle.

Ausgelöst wird die Bestellbestätigungs-E-Mail durch den Eintrag in der Tabelle “event_action”: bei “checkout.order.placed” wird der event “action.mail.send” ausgelöst. Dieser schickt dann die E-Mail.

Der sauberste Weg wäre es meiner Meinung nach demnach, diesen Eintrag zu entfernen. Dann mt einem eigenen Listener auf den checkout.order.placed Event zu hören und nur dann die Bestellbestätigung zu schicken, wenn es sich nicht  um eine Gateway-Zahlungsart wie PayPal oder jeder Kreditkartenanbieter handelt. Also zB. Vorauskassa oder Nachnahme.

Zusätzlich natürlich dann noch auf den richtigen “Die Bestellung ist jetzt bezahlt” Event hören und dort die Bestellbestätigung senden, falls es sich um keine Gateway-Zahlungsart handelt.

@Moritz Naczenski schrieb:

  • Der Kunde kann nachträglich die Zahlungsart wechseln in seinem Account und bspw. von Vorkasse zu
    Paypal wechseln

kann man diese Funktion abschalten ?

Das müsstest du bei der jeweiligen Zahlart unter Einstellungen → Zahlarten ändern können.

1 „Gefällt mir“

vielen Dank ! das hat geholfen

Ich habe bei beiden Zahlungsarten (PayPal, Vorkasse) hinterlegt, dass diese nicht nachträglich änderbar sind.

Trotzdem (unter 6.4.1.0) folgendes Szenario: Bestellung erstellt (PayPal) > Zahlung abgebrochen > Rückkehr in den Shop > Möglichkeit, die Zahlungsart zu ändern und abzuschließen.

Wenn da so ist, bräuchte ich ein Event, auf das ich lauschen kann.
Aber an sich verstehe ich es so, dass das eig. so nicht sein sollte? …

Schöne Grüße,
Niklas

Der Käufer bestellt ein Artikel aus dem Shop und wählt Zahlung mit paypal nach dem Klick auf „Zahlungspflichtig bestellen“ bekommt er per Mail eine Bestellbestätigung? :face_with_diagonal_mouth:
Obwohl er noch nicht bezahlt hat? Und das ist so gewollt? (habe ich gerade in Shopware v6.3.2.0 getestet und ja, ist tatsächlich so).
Viele sind deswegen irritiert und brechen die Bezahlung ab. Nach ein Paar Tagen meldet sich der Käufer bei dem Shopbetreiber:
Käufer: - Wo sind die Sachen???
Shopbetreiber: - Sie haben nicht bezahlt…
Käufer: - klar doch, ich habe doch hier meine Bestellbestätigung

Wenn das so gewollt ist, dann bleibe ich noch sehr lange Zeit bei Shopware 5.

Der Shopbetreiber hat im Backend mitlerweile 10 mal „offener Zahlungstatus“ und fragt sich was hier falsch läuft. Paypal kaputt? …

2 „Gefällt mir“

Verhalten ist korrekt.
Die Bestellung kommt per Gesetz durch den Klick auf „Zahlungspflichtig bestellen“ zustande - unabhängig davon, ob die Zahlung erfolgreich ist, oder nicht. Eine Bestellbestätigung ist keine Bestätigung der Zahlung.
Wie würde das denn nach Deiner Logik mit „Vorkasse“ funktionieren? Schickst Du erst die Bestellbestätigung raus, wenn Geld auf dem Konto ist? Dafür gibt es die verschiedenen Status.

Das Verhalten mag korrekt sein, ist aber nicht das, was ein normaler Kunde erwartet!

Vom Warenkorb zu Paypal und dann

  • klingelt es an der Tür,
  • das Kind will was
  • oder der Kunde selbst will noch etwas nachschauen, hat etwas vergessen oder, oder …

Lauter gute Gründe die Zahlung abzubrechen und zum Shop zurückzukehren!
Und hier will der Kunde den Warenkorb wiederfinden und nicht eine Bestellung.

Und wir wollen keine Kunden, die sich gedrängt fühlen oder gar mit dem Hinweis auf „Zahlungspflichtig bestellen“ zur Zahlung genötigt werden.
Der Vergleich mit der Vorkasse ist nicht zutreffend.

Vorschlag:

  • Versenden der EMails über den Flowbuilder nur bei Erfolg
  • Bei Abbruch von Zahlungen (kann pro Zahlungsart eingestellt werden) wird aus der Bestellung wieder ein Warenkorb und die Bestellung wird ersatzlos gelöscht.

Das entspricht der Erwartungshaltung von Kunden und Shopbetreibern - und wer es so machen möchte, wie Shopware vorschlägt, kann das ja tun.

Für uns ist das jedenfalls ein Showstopper und wir können erst von 5 auf 6 Migrieren, wenn wir dafür eine Lösung haben.

1 „Gefällt mir“

Wir sind von Magento auf Shopware gewechselt und unsere Kunden tun sich damit auch absolut schwer, weil es einfach nicht intuitiv ist. Jetzt ist unser Kind in den Brunnen gefallen und wir können nicht zurück - In Kombination mit der unbrauchbaren Backendsuche wären wir niemals auf SW gewechselt wenn wir das vorher gewusst hätten.
Jetzt müssen wir das Beste draus machen und hoffen, dass die SW-Entwickler da irgenwie noch weitere Möglichkeiten implementieren.
Dieses Thema „Bestellung generieren vor Zahlung“ hat bis jetzt jeden SW-6 Betreiber gestört mit dem ich gesprochen habe. Mir ist kein Fall bekannt, dass sich jemand darüber gefreut hat.

3 „Gefällt mir“

Hallo,
ich habe einen Eintrag im Issue-Tracker gemacht.
Bitte voten, wenn das für Euch auch ein Problem ist.
Abgebrochene Zahlung - Warenkorb

Es gibt auch schon ein Plugin für die Wiederherstellung des Warenkorbes nach fehlgeschlagener Kaufabwicklung.

Jetzt betreiben wir Shopware 6 seit 18 Monaten und ich darf mich immer und immer wieder bei unserem Auftraggeber rechtfertigen, warum ich dieses Shopsystem empfohlen habe. Ein „Feature“, das niemand braucht und um das niemand gebeten hat. Unzufriedene Kunden und ein Wust an Bestellungen von Rechnungskauf Betrügern, der nervt und alles verfälscht.

Gibt es ein Plugin, das die SW5 Funktionalität (und die aller anderen Shopsysteme) komplett wieder herstellt? Würde sicher weggehen wie warme Semmeln.