2012-01-12 1 views
5

Я реализую свой собственный платежный модуль для Magento, где я применил метод getCheckoutRedirectUrl() в моей платежной модели.Получить текущий orderId в модуле оплаты magento во время оформления заказа

class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {} 

Этот метод должен возвращать только URL платежного шлюза, где пользователь перенаправляется, но я должен также добавить текущий OrderId к этому URL.

Проблема не в состоянии получить orderId. Я попробовал решение, как уже accepted here

$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId(); 

, но я получаю пустой $ OrderId. Так что это не работает в моем методе. Вызов не вызывает ошибки, поэтому я получаю объект (например, Mage :: getSingleton ('checkout/session') -> getQuote() -> getSubtotal() возвращает сумму заказа), но orderId пуст.

Я также попытался:

$order = Mage::getModel('sales/order'); 
$order->load(Mage::getSingleton('sales/order')->getLastOrderId()); 
$orderId = $order->getIncrementId(); 

который снова возвращает пустой $ OrderId.

Любые идеи?

ответ

15

Ваш вопрос, как написано, нелогичен.

Идентификационный номер во время Оформить заказ. Пока вы проверяете, Magento создает объект sales/quote. Этот объект используется для отслеживания позиций котировок. Пока не будет завершена проверка, создается объект sales/order из цитаты.

Причина, по которой getLastOrderId возвращается пустым, заключается в том, что заказ не был размещен.

Повторяя свой вопрос с точки зрения процесса оформления заказа, в котором вы находитесь, и то, что вы пытаетесь сделать с идентификатором заказа, может помочь кому-то придумать часть информации, которую вы не знаете, что вам нужно ,

Удачи вам!


Авторское решение:

Проблема была решена первым получать цитатой ID из Checkout/сессии:

Mage::getSingleton('checkout/session')->getQuoteId(); 

, а затем цитаты объекта по цитатой ID:

$quote = Mage::getModel("sales/quote")->load($quoteId); 
+0

Это был мой заказ догадки еще не существует, спасибо за разъяснение этого мне, я думал, что заказы уже сохранены в db ранее. Но мне нужен какой-то идентификатор, с помощью которого я могу получить информацию о заказе (например, сумму) в отдельном независимом запросе (без куки-файлов), который шлюз оплаты делает в фоновом режиме. Может быть, я могу передать идентификатор сеанса и задать сеанс, чтобы у меня был доступ к котировке (заказ в корзине)? – KoviNET

+3

Котировки и позиции котировок сохраняются и в базе данных. Вот как пурпурно отслеживает заброшенные тележки. Я бы сосредоточился на использовании этих объектов, чтобы получить нужную вам информацию. –

+3

Я решил свою проблему, передав quoteId на платежный шлюз (Mage :: getSingleton ('checkout/session') -> getQuoteId();), а затем я смог получить данные котировки по отдельному запросу: $ quote = Mage: : getModel ("продажи/цитата") -> нагрузка ($ quoteId); Благодаря! – KoviNET

Смежные вопросы