mm_mathiasmm_mathias MemberComments: 14 Received thanks: 1 Member since: November 2017

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

 

Answers

  • puhaspuhas MemberComments: 120 Received thanks: 40 Member since: November 2011

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

    Das Interesse hielt sich aber in Grenzen Halo

  • mm_mathiasmm_mathias MemberComments: 14 Received thanks: 1 Member since: November 2017

    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

     

  • puhaspuhas MemberComments: 120 Received thanks: 40 Member since: November 2011

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

    Mit "shopware sofortüberweisung kundennummer" kommt er bei mir hingegen an erster Stelle ...

Sign In or Register to comment.