Merhaba arkadaşlar,
Bugün sizlere Magento e-ticaretlerde karşılaşılan bir sorundan bahsedeceğim. Magento mağazalarınızda PayPal ile ödemelerinizde kabul ettiğiniz ödemelerde sık karşılaşılan bir problem!
Müşteriniz ödemeyi PayPal ile yaptı. Siz yönetici panelinden kontrol ettiğinizde sipariş durumundan “Suspected Fraud” ibaresini yani dolandırıcılık ibaresini gördünüz. Çok şaşırdınız. Aslında bu bir dolandırıcılık değil fakat Magento bunu öyle değerlendirmiş olabilir. Belki de gerçekten dolandırıcılık girişimidir.
Müşterinin ödemesi gereken tutar 165.68 TL iken müşteriniz PayPal kanalıyla 165.69 TL veya 165.67 TL ödemiş olabilir. Bu durumda Magento 1 kuruş için yorgan yakabiliyor ve suspected fraud olarak işaretliyor siparişi. Bunun sebebi ise Magento ile PayPal’ın yuvarlama kıstaslarının birbirinden farklı oluşudur. Yani korkulacak bir durum değildir. Bununla ilgili kontrol şöyle yapılırsa çözüme kavuşulmuş olur.
app/code/core/Mage/Sales/Model/Order/Payment.php dosyasını açın. Bu dosyada aşağıdaki satırı bulun:
1 |
if ($orderGrandTotal == $this->_formatAmount($this->getBaseAmountPaid(), true) + $amountToCapture) { |
ve şu şekilde güncelleyin:
1 |
if (abs($orderGrandTotal - ($this->_formatAmount($this->getBaseAmountPaid(), true) + $amountToCapture)) <= 0.01) { |
Bu güncellemeden sonra bu problemi bir daha yaşamayacaksınız. Bu çözüm Magento 1.6.0.2 sürümünde test edilmiştir.
Magento 1.5.0.1 kullananlar aşağıdaki çözümü kullanabilir. Yine aynı dosyayı açın ve aşağıdaki iki satırı bulun:
1 2 |
$orderGrandTotal = sprintf('%.4F', $this->getOrder()->getBaseGrandTotal()); if ($orderGrandTotal == sprintf('%.4F', ($this->getBaseAmountPaid() + $amountToCapture))) { |
Bu iki satırı şu şekilde değiştirin:
1 2 |
$orderGrandTotal = $this->getOrder()->getBaseGrandTotal(); if (abs($orderGrandTotal - ($this->getBaseAmountPaid() + $amountToCapture)) <= 0.01 ) { |
Umarım faydalı olur, Magento siteleriniz için destek almak isterseniz bana ulaşın.
İyi çalışmalar,
Yorumlar