我在Magento Community Edition 1.8商店遇到了一个问题。问题在于,尽管用户已选择Paypal作为付款方式,但有时Magento会将订单总额加上现金交付费。只有当用户选择Paypal作为付款方式并且很少发生时,才会发生这种情况。有时甚至通过Paypal和Magento的物品数量都不合规。联系Paypal支持无用。
任何帮助都将不胜感激 在此先感谢所有人
亲切的问候 钢结构媒体解决方案
答案 0 :(得分:1)
我觉得自己像是一个坏死因子,但我想分享一些关于解决这个问题的想法。
最近我遇到了同样的问题:用户已选择PayPal作为付款方式,但收取了现金支付方式。经过一番调查,我发现货到付款模块本身就是罪魁祸首。
问题在于模块的逻辑:当选择COD付款方式时,它会增加COD费用,但是当付款方式更改为另一个时,它不会从报价中清除该费用。因此,在创建订单时,具有COD费用的字段将按原样复制。并且客户收取任何费用。
在这种情况下最糟糕的是你没有看到结账时收取的费用。它只是按顺序弹出。
例如,MSP_CashOnDelivery模块中有一部分代码:
if (
($_helper->getQuote()->getPayment()->getMethod() == $_model->getCode()) &&
($address->getAddressType() == Mage_Sales_Model_Quote_Address::TYPE_SHIPPING)
) {
$address->setGrandTotal($address->getGrandTotal() + $amount);
$address->setBaseGrandTotal($address->getBaseGrandTotal() + $baseAmount);
$address->setMspCashondelivery($amount);
$address->setMspBaseCashondelivery($baseAmount);
$address->setMspCashondeliveryInclTax($amountInclTax);
$address->setMspBaseCashondeliveryInclTax($baseAmountInclTax);
$quote->setMspCashondelivery($amount);
$quote->setMspBaseCashondelivery($baseAmount);
$quote->setMspCashondeliveryInclTax($amountInclTax);
$quote->setMspBaseCashondeliveryInclTax($baseAmountInclTax);
}
要解决此问题,您需要在下面添加以下代码:
if ($_helper->getQuote()->getPayment()->getMethod() != $_model->getCode())
{
$address->setMspCashondelivery(0);
$address->setMspBaseCashondelivery(0);
$address->setMspCashondeliveryInclTax(0);
$address->setMspBaseCashondeliveryInclTax(0);
$quote->setMspCashondelivery(0);
$quote->setMspBaseCashondelivery(0);
$quote->setMspCashondeliveryInclTax(0);
$quote->setMspBaseCashondeliveryInclTax(0);
}
答案 1 :(得分:0)
如上面的答案所述,将字段设置为零可以完美地工作。但是,它会在发票和订单中添加一行,零费用,这对客户来说可能听起来很奇怪。所以只需添加一个简单的if条件来检查所有Totals.php块文件中的电荷是否为零。
$amt = $this->getSource()->getServiceCharge();
$nameAmt = $this->getSource()->getServiceChargeName();
if ($amt && $amt!=0) {
$this->addTotalBefore(new Varien_Object(array(
'code' => 'service_charge',
'value' => $amt,
'base_value'=> $this->getSource()->getBaseServiceCharge(),
'label' => $nameAmt,
)), 'service_charge');
}