在结账时获取magento支付模块中的当前orderId

时间:2012-01-12 22:02:53

标签: php magento e-commerce payment gateway

我正在为Magento实施我自己的付款模块,我在付款模式中实施了getCheckoutRedirectUrl()方法。

class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {}

此方法应该只返回用户被重定向到的支付网关的URL,但我还应该将当前的orderId附加到此URL。

问题是我无法获得orderId。我已尝试解决方案accepted here

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

但我得到空的$ orderId。所以这似乎不适用于我的方法。调用不会产生错误,所以我得到一个对象(例如Mage :: getSingleton('checkout / session') - &gt; getQuote() - &gt; getSubtotal()返回订单金额),但orderId为空。< / p>

我也尝试过:

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

再次返回空的$ orderId。

任何想法?

1 个答案:

答案 0 :(得分:15)

你提出的问题是不合逻辑的。

结帐时没有订单ID 。当您退房时,Magento会创建一个sales/quote对象。此对象用于跟踪报价项目。直到结账完成后才会从报价中创建sales/order对象。

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

使用您所在的结帐流程中的重点重述您的问题,以及您尝试对订单ID执行的操作可能会帮助某人提供您不需要的信息。

祝你好运!


作者的解决方案:

首先从结帐/会话中获取报价ID来解决问题:

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

然后按引用ID引用对象:

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