Ваш звонок на
Mage::getSingleton('sales/order')
не возвращает объект. Попробуйте
var_dump(Mage::getSingleton('sales/order'));
для подтверждения.
Я недавно не углублялся в код проверки, но я уверен, что это потому, что sales/order
выполнит заказ. Как только заказ размещен, он больше не выполняется.
«Правильный» способ сделать это - создать наблюдателя для одного из событий, которые Magento запускает во время проверки.
checkout_onepage_controller_success_action
Событие
должно быть достаточным, если вы не сделали слишком много настроек процесса оформления заказа.
Есть краткое объяснение того, как это сделать на вики (для другого события)
Как только вы настроите свое событие и ответите, выполните
$event = $observer->getEvent();
var_dump($event->getData());
чтобы узнать, какая у вас информация. Скорее всего, там есть объект заказа, который позволит вам получить идентификатор, который вы ищете.