Я настроил модуль, в котором я программно добавляю товар в корзину. Клянусь, у меня это работало, но недавно я обнаружил, что это не так. Предыстория этого заключается в том, что у нашего клиента есть сторонний продукт, на который покупатель может перейти на страницу своего сайта, просмотреть продукты, которые есть у этого стороннего поставщика, и добавить товар в нашу корзину. Сторонний сервис размещается на нашей странице с помощью 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
, что идентификатор сеанса является старым.