Wie Paypal Express auf Benutzergruppen eingrenzen?

Hi,
ich habe wohl irgend ein problem mit paypal express (standard paypal OE modul). Beim versuch das zu testen ist mir aufgefallen, dass der paypalexpress button im Checkout immer noch angezeigt wird obwohl ich die Zahlungsart nur Benuntzergruppe “Shop admin” zugeteilt habe. Hier wird der express button allerdings “shop admins” sowie “Gästen” angezeigt. Nicht aber eingeloggten Benutzern.

Jetzt habe ich das erst einmal ausgeschaltet, dass die Kunden das nicht sehen. Aber dann kann ich es natürlich auch nicht testen Einstellen oder Sandbox aktivieren.
In meinem local testshop funktioniert das übrigens wie erwartet.

Woran kann das liegen, dass es trotzdem noch Gästen angezeigt wird?

Das die Bedingung die prüft ob Dein Benutzer in der festgelegten Benutzergruppe ist im entsprechenden Template Datei fehlt…

also er erkennt ja benutzer die nicht berichtig sind und zeigt es bei denen dann auch nicht an, was ja richtig ist.
Das modul arbeitet auch so, dass in meinem eigenem Template nichts drinne steht außer der standard block und dasTemplate von dem paypal modul übernimmt die Rechteerkennung.

oepaypalexpresscheckout.tpl
[{if $oViewConf->isExpressCheckoutEnabled() && (('user' != $oView->getClassKey()) || (('user' == $oView->getClassKey() && !$oxcmp_user)))}]

Hier habe ich das Problem erkannt, dass er bei nicht eingeloggten Benutzernt bei der funktion $oViewConf->isExpressCheckoutEnabled()
eine 1 zurück gibt, eben so wie bei erlaubten benutzern bei nicht erlaubter benutzer hingegen ‘’
Diese funktion befindet sich auch im oepaypal modul.

Viewconfig.php

    /**
     * Returns TRUE if express checkout is enabled.
     * Does payment amount or user country/group check.
     *
     * @return bool
     */
    public function isExpressCheckoutEnabled()
    {
        if ($this->expressCheckoutEnabled === null) {
            $this->expressCheckoutEnabled = false;
            if ($this->getPayPalConfig()->isExpressCheckoutEnabled()) {
                $user = $this->getUser();
                $validator = $this->getPaymentValidator();
                $validator->setUser($user);
                $validator->setConfig($this->getConfig());
                $validator->setCheckCountry(false);

                $this->expressCheckoutEnabled = $validator->isPaymentValid();
            }
        }

        return $this->expressCheckoutEnabled;
    }

Is hier nun mal wieder was an dem Paypal modul falsch oder ist da was bei mir im System kaput oder falsch eingestellt das er gäste falsch erkennt?
Ich habe mir das modul auch extra nochmal vom Composer neu laden lassen.

Kann das Verhalten reproduzieren in meinem Demo Shop CE 6.1.5 mit aktivierten PayPal Modul und Zahlungsart PayPal Benutzergruppe zugeordnet. Wenn ich eingeloggt und Benutzergruppe nicht zugeordnet ist auf Detailseite PayPal Express Button weg. Sobald ausgeloggt ist PayPal Express Button wieder da.

$user = $this->getUser();
if ($isValid && $user && $user->hasAccount()) {
  $isValid = $this->checkUserGroup();
}

Das Problem ist diese Codestelle im PaymentValidator Klasse vom PayPal Modul die Prüfung von Benutzergruppen findet nicht statt wenn $user gleich null ist.

Am besten Du reichst es unter https://github.com/OXID-eSales/paypal#bugs-and-issues als Bug ein.

1 Like

ok, danke für deinen Imput.
Bugreport ist erstellt
https://bugs.oxid-esales.com/view.php?id=7047

Ich wollte eine neuere Version des moduls testen
hier bekomme ich dann aber immer
Your requirements could not be resolved to an installable set of packages.

weil vermutlich die Version 5.2.2 spezifiziert ist in der vendor composer.json
kann ich die einfach dort abändern? (im testsystem)
Ist das überhaupt sinnvoll?

1 Like