Magento支付模块:购买购物车中的所有商品

时间:2014-02-06 10:05:10

标签: php magento payment-gateway

我正在Magento 1.8上创建支付网关模块 在我的Model代码中,我正在尝试以正确的格式构建一个字符串,以便为SOAP请求做好准备。

我需要收集订单产品,我正在使用以下代码:

$order_string = "";
$quote = Mage::getSingleton('checkout/session')->getQuote();
$items = $quote->getAllVisibleItems();
foreach ($items as $item) {
    $order_string .= "prod=" . $item->getName() . ",item_amount=" . $item->getPrice() . 'x' . $item->getQty() . ';';
}

我面临的问题是$items变量始终为空。 我尝试了很多获取此信息的变体:

$items = Mage::getSingleton('checkout/cart')->getAllItems();
$items = Mage::helper('checkout/cart')->getAllItems();
$items = Mage::helper('checkout/cart')->getCart()->getAllItems();
$items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();

如果我尝试Mage::log任何此类信息,我将面临错误:

User Error: Some transactions have not been committed or rolled back  in /Users/[Username]/Sites/[Site Name]/lib/Varien/Db/Adapter/Pdo/Mysql.php on line 3865

如果我使用->getItemsCount();作为后缀而不是getAllItems()getAllVisibleItems(),我似乎正确地返回了项目数。

我只想返回一个项目数组,但实际上,我需要的只是名称,价格和数量,所以如果有另一种方法可以返回该信息,我会对它开放。

1 个答案:

答案 0 :(得分:1)

我刚才面临同样的问题。

$cartItems = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();
foreach ($cartItems as $item) {
    echo Mage::getModel('catalog/product')->load($item->getProduct()->getId())->getShortDescription();
    echo $item->getPrice();
    echo $item->getSku();
    echo $item->getQty();
}

发现于: http://www.kathirvel.com/magento-custom-attributes-of-products-in-the-cart/

如果无法正常工作,那么您的活动会让您感到沮丧。如果你通过控制器运行它,可以很好地工作。

使用Magento社区版本1.9.0.1