Magento – Paypal Zahlung abgebrochen und leerer Warenkorb

Es Problem, welches von Beginn an bei Magento bestand, war der nervig leere Warenkorb nach Abbruch einer Zahlung bei einem externen Zahlungsabwickler wie z.B. PayPal.

Es läuft so ab:

Kunde füllt seinen Warenkorb und geht zur Kasse. Dort wählt er PayPal als Zahlungsmethode und schließt dann die Bestellung ab. Er wird nun zu PayPal weitergeleitet, um dort die Zahlung abzuschließen.

Nun gibt es aber leider bei PayPal ein Problem. Häufigstes Problem sind falsche Logindaten oder vergessene Daten. Wie auch immer, der Kunde bricht die Zahlung bei PayPal ab und klickt auf “Abbrechen und zurück zu [Shop]”.

Nun kommt er leider in einen leeren Warenkorb und muss die Bestellung nochmal machen.

Hier gibt es zwei Probleme:

1. Der Kunde hat den Aufwand die komplette Bestellung neu zu machen (und darauf haben leider wenig Kunden Lust)

2. Es wird eine stornierte Bestellung im Backend angelegt.

Problem 1 kann jedoch beim normalen OnePageCheckout rel. leicht gelöst werden. Es gibt mehrere Ansätze, ich habe mich für diesen hier entschieden:

Kopieren der Datei OnepageController.php aus dem Verzeichnis app/code/core/Mage/Checkout/controllers/ in das Verzeichnis app/code/local/Mage/Checkout/controllers/

Anschließend nach den Zeilen suchen

        $this->getOnepage()->getQuote()->save();
        /**
         * when there is redirect to third party, we don't want to save order yet.
         * we will save the order in return action.
         */
        if (isset($redirectUrl)) {
            $result['redirect'] = $redirectUrl;
        }

        $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
    }

und durch diese ersetzen

//        $this->getOnepage()->getQuote()->save();
/**
 * when there is redirect to third party, we don't want to save order yet.
 * we will save the order in return action.
 */
        if (isset($redirectUrl)) {
          $result['redirect'] = $redirectUrl;
          $this->getOnepage()->getQuote()->setIsActive(1) ;
          }
          $this->getOnepage()->getQuote()->save();
          $this->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
        }

Nun wird man bei Abbruch der Zahlung bei PayPal zwar nicht in den Checkout zur Auswahl einer anderen Zahlart geschickt aber immerhin in den weiterhin gefüllten Warenkorb.

Leider habe ich bislang keine Lösung für Problem 2 gefunden, somit wird bei jedem abgebrochenen Zahlungsvorgang eine stornierte Bestellung im Backend hinterlegt.

Genutzt in Magento Version 1.7. Fragen, Kommentare, Vorschläge? Gerne direkt oder als Kommentar.

Published by Covos

Seit 2009 arbeite ich nun intensiv mit Magento. Begonnen habe ich mit der Erstellung und dem Betrieb von B2C-Shops. Ausgeweitet wurde dies durch meine Tätigkeit im Logistik-Sektor. Hieraus entstanden erste spezialisierte B2E-Systeme. Heute arbeite ich tag-täglich mit spannenden B2C-, B2B- und B2E-Projekten und berichte in diesem Blog über Herausforderungen und gebe Insider-Tipps.

3 comments on “Magento – Paypal Zahlung abgebrochen und leerer Warenkorb”

  1. “Copy the OnepageController.php file from the directory app / code / core / Mage / Checkout / controllers / in the directory app / code / local / Mage / Checkout / controllers /”

    After that always, ALWAYS, when ever there is a new Magento patch released, read the patch code, check if it changes OnepageController.php and if so manually implement changes to your local version of the file.

    Better solution is to use observer.

Leave a Reply

Your email address will not be published. Required fields are marked *