1

由于在结帐期间与外部系统集成,我需要reservedId在某些情况下重置并为当前报价提供新报价。我尝试了几种方法,都没有成功

有谁知道如何实现这一目标?

或者,至少,如果这是不可能的,我怎样才能在不强制客户注销的情况下重置整个 Chekout 会话?我已经尝试过unsetAll(), clear()&resetCheckout()方法Mage_Checkout_Model_Session,但它们似乎没有奏效

4

2 回答 2

4

正如Zyava所建议的那样,只是做setReservedOrderId(null)了它......

我之前尝试过,但问题是(我认为)我在 Javascript 控制器流程中这样做现在我只是将一个标志作为新的会话变量放在那里,并且只是用

$this->_ajaxRedirectResponse();
return;

然后,当返回 Checkout 时,如果设置了标志,则...

Mage::getSingleton('checkout/session')->getQuote()->setReservedOrderId(null);

诀窍和 Magento 为报价创建了一个新的 reservedOrderId

于 2012-02-04T20:17:09.130 回答
1

就像 Raul 所说,放在Mage::getSingleton('checkout/session')->getQuote()->setReservedOrderId(null);结帐页面的顶部会重置reserved_order_id. 但是,为了保持为空,您必须保存报价。因此,代码将是Mage::getSingleton('checkout/session')->getQuote()->setReservedOrderId(null)-save();它在 Magento CE 1.7 上对我有用。

于 2014-09-24T07:23:48.297 回答