2011-07-07 125 views
2

我寫一個自定義的Magento 1.5.0.1一頁簽出我的網站下面這個網站上說明: http://inchoo.net/ecommerce/magento/magentos-onepage-checkout-in-a-nutshell/不能在Magento一頁saveShippingMethod結帳

總之,我爲了調用這些函數:

$checkout = Mage::getSingleton(‘checkout/type_onepage’); 
$checkout->saveCheckoutMethod(‘guest’); 
$checkout->saveBilling($billingAddress, false); 
$checkout->saveShipping($shippingAddress, false); 
$checkout->saveShippingMethod(‘flatrate_flatrate’); 
$checkout->savePayment(array(‘method’=>’checkmo’)); 
// Extra part not on the site but saw it in the original magento onpage checkout controller 
$checkout->getQuote()->getPayment()->importData(array(‘method’=>’checkmo’)); 
// 
$checkout->saveOrder(); 
// Extra part not on the site but saw it in the original magento onpage checkout controller 
$checkout->getQuote()->save(); 
// 

問題是,當代碼第一次運行時,運輸方法沒有被設置,我得到一個錯誤,說沒有設置運輸方法。但是,刷新頁面會使訂單通過。

一種解決方案是設置與saveShippingMethod的送貨方式,檢查它是否與設置之後:

Mage::getSingleton('checkout/type_onepage')->getQuote()->getShippingAddress()->getShippingMethod(); 

哪個時間的100%它不是,然後重定向它返回到相同的頁面,這在第二次運行的運輸方式設置...

這似乎是這樣一個愚蠢的magento錯誤!有關如何使用此重定向修復它的任何想法(即頁面刷新)?

+0

您是否找到解決方案,因爲我有同樣的問題? – Orhan

回答

0

也許這是我對magento並不是非常專業,但我很確定您在創建訂單時必須使用setShippingMethod($method)而不是saveShippingMethod($method),您可以查看更多here