Не удается сохранить способ доставки в Magento One Page Checkout - PullRequest
2 голосов
/ 07 июля 2011

Я пишу пользовательский одностраничный заказ 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%если это не так, то перенаправьте его обратно на ту же страницу, на которой во 2-м запуске устанавливается метод доставки ...

это кажется такой глупой ошибкой magento!какие-либо идеи о том, как это исправить с помощью этого перенаправления (например, обновление страницы)?

1 Ответ

0 голосов
/ 07 июля 2011

Возможно, я не очень хорошо разбираюсь в magento, но я уверен, что при создании заказа вы должны использовать setShippingMethod($method) вместо saveShippingMethod($method), вы можете проверить больше здесь .

...