Подтвердить что ты не робот

Идентификатор увеличения заказа в Magento

Я пытаюсь получить идентификатор Order Increment Id в Magento на странице success.phtml, чтобы использовать его для отслеживания веток.

Я использую следующий код, но он дает ошибку во второй строке;

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

Ошибка:

Неустранимая ошибка: вызов функции-члена getIncrementId() для не-объекта в строке 34: $LastOrderId = $order- > getIncrementId();

Мне было интересно, есть ли у кого-нибудь идеи о том, как получить Идентификатор увеличения заказа? Это ссылочный номер, видимый в админе, обычно что-то вроде: # 1000123

4b9b3361

Ответ 1

Если вы специально делаете это на странице успеха проверки - в файле success.phtml - тогда код, чтобы получить идентификатор инкремента заказа, уже доступен в шаблоне, так как он отображается клиенту.

Вам просто нужно следующее:

$orderId = $this->getOrderId();

Обратите внимание, что это не будет работать на других страницах, поэтому для них вам нужно будет использовать:

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

Ответ 2

$order в вашем коде - это последний идентификатор заказа... как следует из названия функции. Если это не значение, которое вы хотите, используйте его для загрузки заказа, а затем используйте геттер на нем:

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

Ответ 3

Это будет отлично работать, теперь я запускаю этот модуль в своем модуле.

$last_order_increment_id = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();

Надеюсь, это поможет.:)

Ответ 4

Ваш вызов

Mage::getSingleton('sales/order')

не возвращает объект. Попробуйте

var_dump(Mage::getSingleton('sales/order'));

для подтверждения.

Я недавно не нырнул в код проверки, но я уверен, что, поскольку sales/order получит ваш заказ. Как только заказ был помещен, он больше не работает.

"Правильный" способ сделать это - создать наблюдателя для одного из событий, которые Magento срабатывает во время проверки.

checkout_onepage_controller_success_action

должно быть достаточно, если вы не сделали слишком большой настройки процесса оформления заказа.

Там краткое объяснение того, как это сделать на Wiki (для другого события)

Как только вы получите настройки своего мероприятия и ответите, сделайте

$event = $observer->getEvent();
var_dump($event->getData());

чтобы узнать, какую информацию у вас имеется. Скорее всего, там есть объект заказа, который позволит вам получить идентификатор, который вы после него.

Ответ 5

Мне пришлось использовать...

$_order = Mage::getModel('sales/order')->loadByIncrementId($this->getOrderId());

В шаблоне success.phtml. Вместо load() я использовал loadByIncrementId - тогда мой объект заказа больше не был пустым.

Ответ 6

Если вы находитесь в режиме администратора - попробуйте следующее:

$orderModel = Mage::getModel('sales/order'); $orders = $orderModel->getCollection()->setOrder('increment_id', 'DESC')->setPageSize(1)->setCurPage(1); $orderId = $orders->getFirstItem()->getIncrementId();

Ответ 7

getRealOrderId() появляется, чтобы вернуть номер заказа, представленный в сетях данных. getId() вернет внутренний идентификатор строки в базе данных, который вам, вероятно, не нужен.

Ответ 8

Вы можете получить идентификатор инкремента с помощью этого фрагмента кода:

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

Теперь вы можете выполнить эхо в переменной $Incrementid и увидеть идентификатор инкремента.

Надеюсь, это поможет.

Ответ 9

$lastOrderIncrementId = Mage::getModel("sales/order")->getCollection()->getLastItem()->getIncrementId();

Ответ 10

$shipmentID = $shipment->increment_id;

$order   = $shipment->getOrder();
$orderID = $order->increment_id;