Leider haben viele Magento-Shops das Problem, das Magento und PayPal die Preise unterschiedlich darstellen/berechnen. Nachlesen kann man die Probleme im Magento Forum unter dem Topic Probleme mit Paypal Bestellbetrag oder Probleme mit PayPal –> Suspected Fraud.
Problemerklärung zum PayPal Rundungsfehler
Das Runden in Magento ist nicht wie oft geschrieben falsch, sondern lediglich auf Grundlage einer bestimmten Berechnungsmethode. Magento nutzt das sogenannte summenerhaltende Runden. Infos dazu findet man unter http://de.wikipedia.org/wiki/Rundung#Summenerhaltendes_Runden. Magento hat beispielsweise einen Betrag von 29,99 Euro ermittelt, PayPal errechnet mit Hilfe der Netto-Preise aber 30,00 Euro. Ist dies der Fall meldet Magento eine Fehlermeldung wie folgt:
IPN "Completed". Order is suspended as its capture amount 29,99 € is suspected to be fraudulent.
PayPal Rundungsfehler beheben
Es gibt mehrere Möglichkeiten dem PayPal Rundungsfehler den Garaus zu machen. Die erste Möglichkeit ist in der Datei
/ app / code / local / Mage / Core / Model / Store.php
die Rundung von 2 auf 4 Stellen zu erweitern. Dazu den Code in folgenden ändern:
public function roundPrice($price) { return round($price, 4); }
Allerdings kann es bei der Übermittlung zu PayPal weiterhin zu Problemem kommen.
Eine andere Möglichkeit ist, wenn man nicht selbst programmieren möchte, eine Modul zu installieren. Das Modul überschreibt einen Block von Mage_Paypal um die gerundeten Werte der Bestellung zu ändern. Zudem deaktiviert es die Funktionalität, Bestell-Aufträge mit PayPal zurückerstatten zu können. Eine Read Me Anleitung und die Dateien sind auf Github unter PaypalRoundBugfix bereit gestellt worden.
Und zu guter letzt bliebe noch eine dritte Möglichkeit, den PayPal Rundungsfehler zu beheben. Dazu muss im Magento Backend unter System -> Konfiguration -> Verkäufe -> PayPal -> Website Payments Standard Einstellungen -> Artikel des Warenkorbs übertragen auf Nein setzen. Dann werden nicht mehr die einzelnen Artikel übertragen, sondern nur der Endbetrag. Der Kunde hat dann zwar nicht mehr eine schöne Übersicht über die einzelnen Produkte, aber wer den Fehler abstellen möchte, sollte damit leben können.