PayPal Express vs. begrenzte Versandkostenregeln

Hallo und Guten Morgen zusammen,

in einem von uns betreuten Oxid CE 4.10.7 ist das Standard-PayPal Modul installiert, die Verwendung von PayPal Express ist aktiviert.
PayPal wird durch Heidelpay abgewickelt (Modul d3heidelpay), was aber für das vorliegende Problem nicht relevant sein sollte.

In dem Shop sind die Versandkostenregeln bis zu einem gewissen Maximalgewicht hinterlegt. Übersteigt der Warenkorb dieses Gewicht, ist also eine Bestellung über den regulären Bestellvorgang nicht möglich, weil in Schritt 3 (Versand & Zahlung) die Meldung “Keine Versandarten gefunden…” kommt.
Das ist richtig und soll auch so sein; bei Überschreiten des Maximalgewichts soll keine Bestellung möglich sein - es gibt als Fallbacklösung die Möglichkeit zur Angebotsanfrage.

Das Problem ist nun, dass dies über den PayPal Express - Button umgangen werden kann. D.h. der Kunde kann bezahlen, obwohl er regulär nicht bestellen dürfte.
Gibt es eine best practice für einen solchen Fall? Mein Vorschlag wäre gewesen: PayPal Express deaktivieren.

Viele Grüße
Marco

Eine Möglichkeit wäre es ein kleines und simples Modul zu implementieren, welches den Paypal Controller “oePayPalExpressCheckoutDispatcher” und dessen Methode “setExpressCheckout” überlädt.
Dabei soll die Methode einfach kurz prüfen, ob min. eine Versandkostenregel greift:

  • falls nicht, dann wurde ja offensichtlich das Maximalgewicht überschritten, für diesen Fall z. B. in den Warenkorb oder in die “Angebotsanfrage” leiten und/oder eine entsprechende Fehlermeldung anzeigen.
  • falls alles ok ist, einfach in den Standardprozess vom überladenen PayPal Controller leiten.

So bleibt das Modul auch Update-fähig.

Ja, das wäre eine Möglichkeit. Die würde dann nach dem Klick auf den PayPal Express - Button greifen.
Ein grober Workaround wäre, das Gesamtgewicht der Warenkorbartikel zu überwachen und beim Überschreiten ein kleines Javascript-Schnipsel einzubinden, das den Express-Button (per CSS “display:none”) ausblendet.
Ist aber natürlich sehr unsauber, weil das nicht dynamisch auf vorhandene Versandkostenregeln reagieren kann, sondern die Maximalgrenze vorher bekannt sein muss. Und das würde nur funktionieren nachdem man Artikel in den Warenkorb gelegt (sprich: auf “in den Warenkorb” geklickt) hat - was für PayPal Express nicht erforderlich ist.
Aber evtl. kann man die Modul-Lösung mit dem Ausblende-Hack kombinieren.

Danke jedenfalls für den Hinweis!

Das ist das mit entscheidende, so hast du die Prüfung immer Server-seitig und es kann nichts schiefgehen.
Zusätzlich kann man natürlich auch noch den Express-Button auch Server-seitig bereits ausblenden, einfach die notwendigen Methoden überladen :wink: