2

我正在按照本网站上的说明为我的网站编写自定义 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错误!关于如何通过此重定向(即页面刷新)修复它的任何想法?

4

1 回答 1

0

也许是我对 magento 不是非常专家,但我很确定您必须使用setShippingMethod($method)而不是saveShippingMethod($method)在创建订单时,您可以在此处查看更多信息。

于 2011-07-07T15:30:02.117 回答