我正在按照本网站上的说明为我的网站编写自定义 Magento 1.5.0.1 一页结帐:http: //inchoo.net/ecommerce/magento/magentos-onepage-checkout-in-a-nutshell/
总之,我按顺序调用这些函数:
$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错误!关于如何通过此重定向(即页面刷新)修复它的任何想法?