Sofortüberweisung leitet nicht auf Bezahlseite sondern account weiter. Inklusiv Lösung.

Hallo Community,

wir setzen in unserem Shop (Version 5.5.1) das Plugin von Sofortüberweisung ein.

Die derzeit eingesetzte Version ist die 1.0.0.

Leider konnten wir bisher nicht updaten, da die neue Version des Plugins (1.1.2) bei uns bisher nicht funktioniert hat.

Immer wenn man im Checkout auf zahlungspflichtig bestellen klickt, landet man auf dem account und nicht auf der PaymentPage von Sofort.

Nachdem keine neue Version erschienen ist und der Hersteller für das Plugin keinen Support anbietet, haben wir uns jetzt mal den Quelltext angesehen und die Ursache rausgesucht.

In custom/plugin/SofortPay/Controllers/Frontend/SofortPayment.php git es die Methode preDispatch().

In dieser wir über die Methode getCustomerNumber() (liegt in der selben Datei) versucht die Kundennummer zu holen.

   public function preDispatch()
    {
        $this->service = $this->container->get('sofort_pay.components.payment_service');
        $this->config = $this->service->getConfig();
        $this->logger = Shopware()->Container()->get('sofort_pay.sofort_logger');

        if (in_array($this->Request()->getActionName(), ['notify'])) {
            Shopware()->Plugins()->Controller()->ViewRenderer()->setNoRender();
        } else {
            $this->customerNumber = $this->getCustomerNumber();
			//	Hier wird geprüft, ob eine Kundennummer vorliegt. Wenn nicht, dann redirect auf account.
			//	Erklärt sich nicht, weil
			//	1. Gastbesteller haben keine Kundennummer
            //	2. In Grundeinstellungen->Storefront->Anmeldung/Registrierung kann das Generieren von Kundennummern abgeschaltet werden.
            //	In unserem Fall übernimmt das ERP die Generierung der Kundennummern.
            //	Daher die Methode getCustomerNumber() umgestellt auf user->id.
	            if (empty($this->customerNumber)) {
	                $this->redirect(['controller' => 'account']);
	            }
        }

        $this->sofortPay = Shopware()->Container()->get('kernel')->getPlugins()['SofortPay'];
    }

wie in den Kommentaren beschrieben führt dies in unserem Fall dazu, dass der Kunde immer in seinem Account landet, sofern es seine erste Bestellung ist und er noch keine Kundenummer hat oder er als Gast bestellt. Er gelangt niemals zur PaymentPage von Sofort.

 

Als Lösung haben wir daher die Methode getCustomerNumber() wie folgt angepasst.

    protected function getCustomerNumber()
    {
        $user = $this->getUser();
        //	$user['additional']['user']['customernumber'] ist eine schlechte Wahl, um Kunden zu identifizieren/den Login sicherzustellen oder warum auch immer das abgefragt wird.
        //	Die Vergabe von Kundennummern kann in den Grundeinstellungen->Storefront->Anmeldung/Registrierung
        //	abgeschaltet werden. Außerdem haben Gastbesteller keien Kundennummer. (Bei uns vergibt das ERP System die Kundennummern).
        //	In Folge dessen würde die Method preDispatch immer nur auf den Account weiterleiten.
        //	Alternativ auf user->id umgestellt.
	        // $customerNumber = $user['additional']['user']['customernumber'];
	        $customerNumber = $user['additional']['user']['id'];
        
...

 

Es wäre schön, wenn Ihr hier Feedback geben könntet, ob irgendwas dagegen spricht, die userId zu nehmen.

Eventuell hat auch jemand anderes das selbe Problem und kann es so lösen.

 

Viele Grüße

Mathias

 

Hatten wir auch neulich: https://forum.shopware.com/discussion/59958/sofortueberweisung-vs-kundennummer

Das Interesse hielt sich aber in Grenzen Halo

Ich hab mir die Finger wund gegoogelt.

Warum finde ich denn Deinen Beitrag nicht, wenn ich shopware, sofortüberweisung, weiterleitung, account eingebe.

Trotzdem vielen Dank.

Dann hab ich jetzt auf jeden Fall schon mal Rückmeldung, dass es (ohne Garantie) funktioniert.

VG

Mathias

 

Jo, stimmt. Mit deinen Suchbegriffen ist mein Beitrag nicht auffindbar Frown

Mit “shopware sofortüberweisung kundennummer” kommt er bei mir hingegen an erster Stelle …

Nur mal so zur Info.

Es gibt ja zwischenzeitlich ein Update von diesem PlugIn. Da gibt es dann auch einen Kommentar eines erleichterten Users, zu dem Teil, der das funktionieren bescheinigt. Ich habe das Update eingespielt und schon ging nichts mehr.

Da ich mich nicht mehr an die gemachten Änderungen, die ich im PlugIn aufgrund dieses Thrats gemacht hatte erinner konnte, habe ich wie kann es anders sein, die Welt nicht mehr verstanden, warum das jetzt nicht mehr funktioniert.

Nach langen hin und her, habe ich diesen Threat über Google wiedergefunden und ich musste tatsächlich die Änderungen erneut vornehmen.

Jetzt funktioniert es wieder.

Warum ich hier überhaupt schreibe ist, darauf hinzuweisen, das das Update vielleicht andere Probleme lösen kann, aber sicher das alte Weiterleitungsproblem wieder hervorbringt, so das man die Änderungen erneut vornehmen muss.

Irgendwie eine ganz schwache Nummer von den PlugIn Programmierern.

Gruß Joachim