Recuperando el orden_id de una sesión de pago actual dentro de un observador en Magento

StackOverflow https://stackoverflow.com/questions/7802488

  •  22-10-2019
  •  | 
  •  

Pregunta

Estoy tratando de recuperar el order_id de un pedido que acaba de crear durante el proceso de pago (después de que se hizo clic en el botón de orden del lugar).

Tengo un observador escuchando el sales_order_place_after evento. Estoy tratando de recuperar el order_id Usando este código:

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

que devuelve el order_id del pedido anterior y no del pedido actual que se acaba de crear durante el pago. Si uso algo como esto:

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

No consigo el order_id.

La razón por la que estoy tratando de hacer esto es establecer todo el estado del pedido para mantener o pendiente cuando se creen inicialmente y cuando el usuario realizó una transacción exitosa, cambiaré el estado a procesamiento.

¿Cómo recupero la corriente? order_id ¿Para la sesión de pago en progreso dentro de un observador?

¿Fue útil?

Solución

Si inspecciona el código y GREP para el evento que está utilizando:

grep 'sales_order_place_after' app/code -rsn
app/code/core/Mage/Sales/Model/Order.php:1074:        Mage::dispatchEvent('sales_order_place_after', array('order'=>$this));

Luego ves que el objeto de pedido se pasa al evento y en tu método de observador puedes hacer

public function myCreateOrderAfterObs($observer){
    $order = $observer->getEvent()->getOrder();
    $orderEntityId = $order->getId(); 
    $orderIncrementId = $order->getIncrementId();
    //print_r($order->getData());
}

Puede solicitar todo lo que se pasa al observador y le animo a que use solo objetos que se pasan y no algunos elementos globales o de sesión, ya que podrían no estar disponibles en su contexto de observador o en el momento en que se invoca observador.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top