Durch die höhere Rundungsgenauigkeit im Magento kann es nun aber leider passieren das PayPal einen Betrugsverdacht (Suspected Fraud) an Magento zurück meldet.
Der Magento Rundungsfehler bei Zahlungen mit PayPal geschieht immer dann, wenn der Netto-Wert und der MwSt.-Betrag unterschiedlich gerundet werden. Dabei kommt es dann zu einer Differenz zwischen dem übermittelten Betrag von Magento an PayPal und dem Wert, den PayPal selber errechnet.
Wie Fabian Kröger in seinem Blog bereits beschrieben hat, gibt es eine Reihe von Lösungsansätzen.
Die Kurzfassung: In der Datei "Mage/Paypal/Model/Ipn.php" wird der von Paypal verarbeitete Betrag entgegengenommen und mit der Rechnung abgeglichen. Dies geschieht in unserer Magento-Version (1.9.1.0) in der Methode _registerPaymentCapture(). Diese Lösung sollte für alle Magentos zwischen 1.7 und 1.9 funktionieren. Dort wird geprüft ob der erwartete Betrag ungefähr dem von Paypal gelieferten entspricht. Wieviel Differenz ihr zugestehen wollt, hängt von euch ab, in diesem Beispiel ist uns eine Nachkommastelle genug. Wenn dem so ist, ersetzen wir den von Paypal gelieferten durch den von Magento erwarteten Betrag. Damit bekommt Magento genau das, was es will, und stellt keinen Betrugsverdacht mehr fest.
- Die Datei "Mage/Paypal/Model/Ipn.php" von "app/code/core/" nach "app/code/local" ableiten
- Folgenden Code in Zeile 474 (Magento 1.9.1.) in der Methode "registerPaymentCapture" ganz am Anfang einsetzen