我已经设置了一个模块,我可以在其中以编程方式将产品添加到购物车。我发誓我有它的工作,但最近发现它不是。背景是,我们的客户有第三方产品,客户可以访问他们网站上的页面,查看该第三方拥有的产品并将商品添加到我们的购物车。第三方服务通过 iframe 放在我们的页面上。我将他们需要的信息传递给他们,他们发回回复,我创建了一个产品,然后将该产品添加到购物车。
一切正常,除了如果用户在他们的购物车中有其他东西,然后添加来自第三方的产品之一,它会从购物车中删除这些产品。我知道这是一个 session 问题,我已经设置了 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()
,它看起来是正确的,但如果您查看 session 对象,它仍然在 visitor_data
数组中说 sessionId 是旧的。
最佳答案
试试这个:
Mage::getSingleton('core/session', array('name'=>'frontend'));
关于php - Magento 尝试设置 session ID 以编程方式添加到购物车,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2495387/