我正在为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。
任何想法?
答案 0 :(得分:15)
你提出的问题是不合逻辑的。
结帐时没有订单ID 。当您退房时,Magento会创建一个sales/quote
对象。此对象用于跟踪报价项目。直到结账完成后才会从报价中创建sales/order
对象。
getLastOrderId
返回空的原因是因为没有下订单。
使用您所在的结帐流程中的重点重述您的问题,以及您尝试对订单ID执行的操作可能会帮助某人提供您不需要的信息。
祝你好运!作者的解决方案:
首先从结帐/会话中获取报价ID来解决问题:
Mage::getSingleton('checkout/session')->getQuoteId();
然后按引用ID引用对象:
$quote = Mage::getModel("sales/quote")->load($quoteId);