Magento尝试将会话ID设置为以编程方式添加到购物车

时间:2010-03-22 20:14:11

标签: php magento

我已经设置了一个模块,我以编程方式将产品添加到购物车。我发誓我有它的工作,但最近发现它不是。背景是,我们的客户有一个第三方产品,客户可以访问他们网站上的页面,查看该第三方拥有的产品,并将项目添加到我们的购物车。第三方服务使用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是旧的。

2 个答案:

答案 0 :(得分:1)

试试这个:

Mage::getSingleton('core/session', array('name'=>'frontend'));

答案 1 :(得分:0)

将其放在magento

根目录下的index.php中
header('P3P: CP="CAO PSA OUR"');