2010-12-20 83 views
0

我正在使用Magento Enterprise和Datacash 3D安全支付模块。如何在返回Onepage结帐时恢复Magento中的报价?

如果在付款过程中发生错误,我希望用户返回到Onepage结帐时保持其购物篮完好无损。目前,当用户返回结帐时,购物篮是空的,因此他们会被转发到“结帐/购物车”,因为他们没有物品。

我认为这可能是我的代码有问题,所以我将第一次付款操作直接重定向到一个错误返回到onepage结帐。

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)); 
} 

但是,在返回到结账页面时,篮子是空的。将以下日志添加到onepage checkout的indexAction中,我会看到“Quote”。展望数据库中的报价已经有了它的活动状态设置为0。

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

我还没有碰到过这个问题来了与标准Magento的只有企业。有没有人遇到过这个问题?理想情况下,我不希望客户再次将产品添加到篮子中。就像它与某种Magento Enterprise模块冲突一样。

在此先感谢您的帮助!

回答

4

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

+0

问题是需要在onepagecheckout上完成,但是error_log显示它们没有对会话引用。我总是可以创建一个新的会话变量来存储它,稍后再引用它,但这看起来有点不方便。理想情况下,我需要停止首先清理它的事情。 – woot586 2010-12-20 12:54:23

+0

我发现在Mage_Checkout_Model_Type_Onepage开始创建订单后,总是将报价设置为非活动状态。您的权利只需在我的控制器启动时加载我的报价并将其设置为有效,即可在用户返回结帐时保持购物篮的状态。此外,如果用户在3DSecure过程中回退。 – woot586 2010-12-20 14:54:01

+0

难道你只是重写默认的检出操作,并在它的头部做这个逻辑,其次是parent :: checkout();或者任何方法被称为? – ajameswolf 2014-10-28 18:43:44

相关问题