Magento 1.9.x:如何在以编程方式将商品添加到购物车时添加额外费用?

时间:2017-04-06 14:31:59

标签: php magento magento-1.9

我也在这里问https://magento.stackexchange.com/questions/167982/magento-1-9-x-how-to-add-an-extra-fee-to-order-while-adding-item-to-cart-progra但是还没有得到任何答案,所以我在这里问。

我正在以编程方式将项目添加到购物车(下面的代码)中,并希望为订购添加额外费用。我在这里发现了很多结果,但由于我是magento的新手,因此无法遵循。任何人都可以分享创建文件的位置(观察者,带有路径的config.xml等)以及该文件的名称应该是什么?下面的代码是将商品成功添加到购物车,但我无法为完成订单添加费用。

任何帮助都会非常明显。

提前致谢。我的代码是:

$productId = 13114;
$price_extra = 50.00;
$product_model = Mage::getModel('catalog/product');
$code = Mage::app()->getStore()->getCode();
$_product = Mage::getModel('catalog/product')->load($productId);
$_product->setMinimalPrice($price_extra);

$cart = Mage::getSingleton('checkout/cart');
$cart->init();
$params = array(
    'product' => $productId,
    'related_product' => null,
    'qty' => 1,
    'options' => array(
        2 => array('7', '8', '9', '10', '11', '12'),
        1 => array('1', '2', '3', '4', '5', '6'),
    )
);
$customer = Mage::getSingleton('customer/session')->getCustomer();
$storeId = $customer->getStoreId();

$cart->addProduct($_product, $params);
$cart->save();
Mage::getSingleton('checkout/session')->setCartWasUpdated(true);

2 个答案:

答案 0 :(得分:0)

加载产品后,您可以设置该产品的价格,替换此行

$_product->setMinimalPrice($price_extra);

用这个

$_product->setPrice($_product->getPrice()+$price_extra);

答案 1 :(得分:0)

您需要使用事件观察者设置自定义价格

使用此活动。 sales_quote_add_item 1. config.xml

< frontend>
< events>
< sales_quote_add_item>
< observers>
< mymodule_observer>
< type> singleton< /类型>
< class> MyCompany_MyModule_Model_Observer< / class>
< method> updateCartPrice< / method>
< / mymodule_observer>
< / observers>
< / sales_quote_add_item>
< / events>
< / frontend>

  1. Observer.php
  2. class MyCompany_Mymodule_Model_Observer {

    public function updateCartPrice(Varien_Event_Observer $observer) {
        $event = $observer->getEvent();
        $quoteItem = $event->getQuoteItem();
        $product = $item->getProduct();
    
        $extraPrice = 100;
        $customPrice = $product->getFinalPrice() + $extraPrice;
        $quoteItem->setOriginalCustomPrice($customPrice);
        $quoteItem->setCustomPrice($customPrice);
        $quoteItem->save();
    }
    

    }

    试试这个。它会对你有用。