php - Magento 尝试设置 session ID 以编程方式添加到购物车

标签 php magento

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

相关文章:

php自定义日程日历无法在日期单元格中显示客户姓名

javascript - 告知正在使用的浏览器版本 + 是否正在使用屏幕阅读器

php - 如何根据来自mysql数据库中两个表的数据禁用动态选择框选项

php - 在 Magento 之外但在同一域中获取购物车内容

magento - 在保存付款方式之前如何获取报价总额?

magento - 当平面目录产品数据打开时如何从 magento EAV 表中选择

xml - 如何将 Magento 页面标题移动到侧边栏上方

Magento 版本兼容

php - Google Cloud App Engine app.yaml php72 路由问题

php - 如果 php 文件中有文本,Ajax 不会返回 json