【问题标题】:How to restore a quote in Magento when returning to the Onepage checkout?返回 Onepage 结帐时如何在 Magento 中恢复报价?
【发布时间】:2010-12-20 12:23:22
【问题描述】:

我正在使用 Magento Enterprise,带有 Datacash 3D 安全支付模块。

如果在付款过程中出现错误,我希望用户在购物篮完好无损的情况下返回单页结账。目前,当用户返回结帐时,购物篮是空的,因此他们会被转发到“结帐/购物车”,因为他们没有商品。

我认为这可能是我的代码有问题,因此我将初始付款操作立即重定向到单页结帐时出现错误。

 public function redirectAction() {
  Mage::getSingleton('core/session')->addError("There was a problem with the payment gateway. Please try again");
  $session = Mage::getSingleton('checkout/session');
  return $this->_redirect('checkout/onepage/', array('_secure'=>true));
}

但是,在返回结帐页面时,购物篮是空的。将以下日志添加到单页结帐的 indexAction 中,我得到“报价”。在数据库中查看报价已将其活动状态设置为 0。

 error_log("Quote ".Mage::getSingleton('checkout/session')->getQuoteId());

我没有在标准 Magento 中遇到过这个问题,只有 Enterprise。有没有人遇到过这个问题?理想情况下,我不希望客户不得不再次将产品添加到购物篮中。它就像它与某种 Magento Enterprise 模块冲突。

提前感谢您的帮助!

【问题讨论】:

    标签: magento enterprise checkout quote


    【解决方案1】:

    基本上你回答了你自己的问题。加载报价(如果它不可用)并执行此操作:

    $yourQuote()->setIsActive(true);
    

    【讨论】:

    • 问题是需要在 onepagecheckout 上完成,但是 error_log 显示他们没有针对会话的引用。我总是可以创建一个新的会话变量来存储它并稍后引用它,但这似乎有点 hacky。理想情况下,我需要首先停止正在清除它的东西。
    • 我发现在 Mage_Checkout_Model_Type_Onepage 中,只要它开始创建订单,它就会始终将报价设置为非活动状态。您的权利只需在控制器开始时加载我的报价并将其设置为活动状态,即可在用户返回结账时保持购物篮。此外,如果用户在 3DSecure 过程中进行回击。
    • 你不能只覆盖默认的结帐操作,并在它的头部执行此逻辑,然后是 parent::checkout();还是调用什么方法?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 2013-08-03
    • 1970-01-01
    • 2016-12-29
    • 2013-04-17
    • 2023-03-21
    相关资源
    最近更新 更多