2012-01-12 20 views
5

Estoy implementando mi propio módulo de pago para Magento, donde implementé el método getCheckoutRedirectUrl() en mi modelo de pago.Obtenga el ID de pedido actual en el módulo de pago de magento durante el pago

class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {} 

Este método se supone que acaba de regresar URL de la pasarela de pago donde se redirige al usuario, pero también hay que añadir orderId actual a esta dirección URL.

El problema es que no puedo obtener orderId. Probé solución como ya accepted here

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

pero consigo vacía $ orderId. Entonces esto no parece funcionar en mi método. La llamada no produce un error, así que obtengo un objeto (por ejemplo, Mage :: getSingleton ('checkout/session') -> getQuote() -> getSubtotal() devuelve el importe de la orden), pero orderId está vacío.

También probé:

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

que de nuevo vuelve vacía $ orderId.

¿Alguna idea?

Respuesta

15

Su pregunta, tal como está escrita, es ilógica.

No hay pedido ID durante pago y envío. Mientras haces el check out, Magento crea un objeto sales/quote. Este objeto se utiliza para realizar un seguimiento de los elementos de la cita. No es hasta que se complete el pago que se crea un objeto sales/order a partir de la cotización.

El motivo getLastOrderId está volviendo vacío es porque no se ha realizado ningún pedido.

Al reenviar su pregunta con el punto en el proceso de finalización de la compra que se encuentra, y lo que está tratando de hacer con la ID del pedido puede ayudar a alguien a encontrar la información que no sabe que necesita .

¡Buena suerte! solución


del autor:

El problema fue resuelto por primera conseguir Identificación cita de pago y envío/sesión:

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

y luego cita objeto por ID cita:

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

Se fue mi orden de adivinar que aún no existe, gracias por aclararme esto, pensé que las órdenes ya se guardaron en db antes. Pero necesito algún tipo de identificador por el que pueda obtener información de la orden (como el monto) en una solicitud independiente separada (sin cookies) que la pasarela de pago realiza en segundo plano. ¿Tal vez podría aprobar la Id. De la sesión y establecer la sesión, para poder tener acceso a la cita (orden en el carro)? – KoviNET

+3

La cita y los elementos de cita también se conservan en la base de datos. Así es como magento rastrea los carros abandonados. Me concentraría en usar esos objetos para obtener la información que desea. –

+3

Resolví mi problema al pasar quoteId a la pasarela de pago (Mage :: getSingleton ('checkout/session') -> getQuoteId();) y luego pude obtener los datos de cotización en la solicitud separada: $ quote = Mage: : getModel ("sales/quote") -> load ($ quoteId); ¡Gracias! – KoviNET

Cuestiones relacionadas