我已经设置了一个模块,我以编程方式将产品添加到购物车。我发誓我有它的工作,但最近发现它不是。背景是,我们的客户有一个第三方产品,客户可以访问他们网站上的页面,查看该第三方拥有的产品,并将项目添加到我们的购物车。第三方服务使用iframe放在我们的页面上。我向他们传递了他们需要的信息,他们发回了我创建产品的回复,然后将该产品添加到购物车中。
除了用户在购物车中有其他东西,然后从第三方添加其中一件产品从购物车中擦除它们之外,所有内容都可以找到。我知道这是一个会话的事情,我已经设置了sessionId,因为这是我设置的参数之一并传递给第三方并且他们发回。这是我的代码示例。
$checkoutSession = Mage::getSingleton('core/session');
$checkoutSession->setSessionId($sessionId); // which is my session ID I get back from the third party and is the customers session id
$product = Mage::getSingleton('catalog/product');
$product->load($productId);
$check = $product->isSalable();
$cart = Mage::getModel('checkout/cart');
$cart->init();
try {
$cart->addProduct($product, array('qty' => $qty));
$cart->save();
}
catch (Exception $ex) {
//Handle the error
}
您会认为这就是您所需要的一切,但它不起作用。我以为它一次正在工作,但我猜不是。如果我调试并说getSessionId()它看起来是正确的但是如果你看看会话对象,它仍然在visitor_data数组中说sessionId是旧的。
答案 0 :(得分:1)
试试这个:
Mage::getSingleton('core/session', array('name'=>'frontend'));
答案 1 :(得分:0)
将其放在magento
根目录下的index.php中header('P3P: CP="CAO PSA OUR"');