2010-12-20 81 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

相關問題