PayPal网关已拒绝请求。购物车项目金额的总计与订单金额不匹配。 Magento
问题描述:
我对发生了什么事情很有头脑。我不知道如何解决这个问题。由于我要求paypal包含订单项,因此它会计算总订单项,但它们与总计项不匹配。PayPal网关已拒绝请求。购物车项目金额的总计与订单金额不匹配。 Magento
config.xml中
<sales>
<quote>
<totals>
<biddiscount>
<class>winints/biddiscount</class>
<before>subtotal</before>
</biddiscount>
<globaldiscount>
<class>winints/globaldiscount</class>
<before>subtotal</before>
</globaldiscount>
</totals>
</quote>
</sales>
GlobalDiscount类
<?php
/**
* Created by PhpStorm.
* User: numerical25
* Date: 5/17/14
* Time: 7:49 PM
*/
class Superior_WinInts_Model_Globaldiscount extends Mage_Sales_Model_Quote_Address_Total_Subtotal {
protected $amount = 0;
protected $set = 0;
public function collect(Mage_Sales_Model_Quote_Address $address) {
if ($address->getData('address_type') == 'billing')
return $this;
$discount = Mage::app()->getRequest()->getParam('global_discount_amount');
$grandTotal = $address->getGrandTotal();
$baseGrandTotal = $address->getBaseGrandTotal();
if(Mage::getSingleton('customer/session')->isLoggedIn() && $discount) {
$customer = Mage::getModel('customer/customer')->load(Mage::getSingleton('customer/session')->getId());
$credit = Mage::getModel("winints/wallet")
->getCustomerStoreCreditTotal($customer->getId());
if($credit >= $discount) {
$this->amount = $discount;
}
Mage::getSingleton('core/session')->setGlobalDiscount($discount);
$totals = array_sum($address->getAllTotalAmounts());
$baseTotals = array_sum($address->getAllBaseTotalAmounts());
//You have to set Grand and Base Grand Total for this crap to work
$address->setDiscountAmount(-$discount);
$address->setBaseDiscountAmount(-$discount);
$address->setGrandTotal($grandTotal - $discount);
$address->setBaseGrandTotal($baseGrandTotal - $discount);
$address->setSubtotal($baseGrandTotal - $discount);
} else if (Mage::getSingleton('core/session')->getGlobalDiscount()) {
$discount = Mage::getSingleton('core/session')->getGlobalDiscount();
$this->amount = Mage::getSingleton('core/session')->getGlobalDiscount();
$address->setDiscountAmount(-$discount);
$address->setBaseDiscountAmount(-$discount);
$address->setGrandTotal($grandTotal - $discount);
$address->setBaseGrandTotal($baseGrandTotal - $discount);
$address->setSubtotal($baseGrandTotal - $discount);
}
return $this;
}
public function fetch(Mage_Sales_Model_Quote_Address $address)
{
if(Mage::getSingleton('core/session')->getGlobalDiscount()) {
if(!$this->set) {
$address->addTotal(array(
'code'=>$this->getCode(),
'title'=>Mage::helper('catalog')->__('Global Discount (-)'),
'value'=> $this->amount
));
$this->set = 1;
}
}
return $this;
}
}
我所做的一切,该教程告诉我,我尝试更新基本综合,总计,小计,应有尽有。它仍然没有正确匹配
我是做错了什么?
还有其他帖子,但他们不清楚。很明显,行项目计算的总数不正确。 。
答
找出它并且在线参考是错误的。
在你的配置XML
<globaldiscount>
<class>winints/globaldiscount</class>
<before>subtotal</before>
</globaldiscount>
变化之前,和值在标签内应该是“grand_total”
<after>grand_total</after>
如果你之前或大部切除术后放置它,你的折扣将不采取因为总计是最后计算的,所以总计的通知。
因此,您的代码可能会计算小计,但不会计算可能给paypal带来不准确估计的总计