У меня есть код в кассе, где я устанавливаю ключ в сеансе, если этот ключ установлен на false в любом месте проверки, которую мне нужно отправить на страницу фактуры. У меня есть код для него, но у меня также не может быть кода, который обычно запускается после наблюдателя, потому что он вызовет службу третьей стороны и вернется как ошибочный из-за этого ключа, отсутствующего в сеансе
Вот мой код, у меня есть все, что я хочу, но мне нужно, чтобы ответ был незамедлительным и бесполезным после того, как отправленная строка события была запущена только в ответ, отправленный обратно в браузер.
public function checkForOrdKey(Varien_Event_Observer $observer)
{
$controllerAction = $observer->getControllerAction();
$request = $controllerAction->getRequest();
$controllerName = $request->getControllerName();
$stepData = $this->_getCheckoutSession()->getStepData();
$ordKeyRemoved = $this->_getCheckoutSession()->getOrdKeyRemoved();
// if it is the checkout onepage controller or inventory controller don't do anything
if (isset($controllerName) && $controllerName === "onepage" && $stepData['shipping']['complete'] && $ordKeyRemoved) {
$this->_getCheckoutSession()->setStepData('shipping', 'complete', false);
$result['goto_section'] = 'billing';
Mage::app()->getResponse()->setBody(Mage::helper('core')->jsonEncode($result));
$this->_getCheckoutSession()->setOrdKeyRemoved(false);
}
}