Php 结帐期间在magento付款模块中获取当前订单ID

Php 结帐期间在magento付款模块中获取当前订单ID,php,magento,e-commerce,payment,gateway,Php,Magento,E Commerce,Payment,Gateway,我正在为Magento实现我自己的支付模块,我在支付模型中实现了getCheckoutRedirectUrl()方法 class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {} 这个方法应该只返回用户重定向到的支付网关的URL,但我还应该将当前orderId附加到这个URL 问题是我无法获取orderId。我已经试过了 但是我得到了空的$orderId。所以这在我的方法中似乎不起作用。调用不会产生错误,

我正在为Magento实现我自己的支付模块,我在支付模型中实现了getCheckoutRedirectUrl()方法

class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {}
这个方法应该只返回用户重定向到的支付网关的URL,但我还应该将当前orderId附加到这个URL

问题是我无法获取orderId。我已经试过了

但是我得到了空的$orderId。所以这在我的方法中似乎不起作用。调用不会产生错误,因此我得到一个对象(例如Mage::getSingleton('checkout/session')->getQuote()->getSubtotal()返回订单金额),但orderId为空

我还尝试:

$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$orderId = $order->getIncrementId();
它再次返回空的$orderId


有什么想法吗?

你写的问题不合逻辑

签出期间没有订单id。当您签出时,Magento会创建一个
sales/quote
对象。此对象用于跟踪报价项。直到签出完成,才会从报价中创建
销售/订单
对象

getLastOrderId
返回空的原因是没有下订单

在结帐过程中重复你的问题,以及你试图对订单id做些什么,可能会帮助某人提供你不知道你需要的信息

祝你好运


作者的解决方案:

通过首先从签出/会话获取报价ID,问题得以解决:

Mage::getSingleton('checkout/session')->getQuoteId(); 
然后按引号ID引用对象:

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

这是我的猜测订单还不存在,谢谢你向我澄清这一点,我想订单已经保存到数据库早些时候。但我需要某种标识符,通过这种标识符,我可以在支付网关在后台发出的单独独立请求(无cookie)中获取订单信息(如金额)。也许我可以传递会话Id并设置会话,这样我就可以访问quote(购物车中的订单)?quote和quote项也会持久化到数据库中。这就是magento追踪废弃手推车的方式。我会集中精力使用这些对象来获取您想要的信息。我通过将quoteId传递给支付网关(Mage::getSingleton('checkout/session')->getQuoteId();)解决了我的问题,然后我能够在单独的请求中获取报价数据:$quote=Mage::getModel(“sales/quote”)->load($quoteId);谢谢我在一个模块中尝试在observer中捕获quote对象。但不是从事件中得到的$evt->getQuote()@MACMAN是传入的观察器拥有这些对象——试试var_dump($observer->getData());
$quote = Mage::getModel("sales/quote")->load($quoteId);