Kov*_*NET 4 php payment gateway magento e-commerce
我正在为Magento实现我自己的支付模块,我在我的支付模型中实现了getCheckoutRedirectUrl()方法.
class My_Module_Model_Payment extends Mage_Payment_Model_Method_Abstract {}
Run Code Online (Sandbox Code Playgroud)
该方法应该只返回用户被重定向到的支付网关的URL,但我也应该将当前的orderId附加到此URL.
问题是我无法获得orderId.我尝试过这里已经接受的解决方案
$orderId = Mage::getSingleton('checkout/session')->getLastRealOrderId();
Run Code Online (Sandbox Code Playgroud)
但我得到空的$ orderId.所以这似乎不适用于我的方法.调用不会产生错误,所以我得到一个对象(例如Mage :: getSingleton('checkout/session') - > getQuote() - > getSubtotal()返回订单金额),但orderId为空.
我也尝试过:
$order = Mage::getModel('sales/order');
$order->load(Mage::getSingleton('sales/order')->getLastOrderId());
$orderId = $order->getIncrementId();
Run Code Online (Sandbox Code Playgroud)
它再次返回空的$ orderId.
有任何想法吗?
Ala*_*orm 15
你写的问题是不合逻辑的.
没有订单ID 时结账.当你退房时,Magento会创建一个 sales/quote对象.此对象用于跟踪报价项目.直到结账完成后才能sales/order从报价中创建对象.
原因getLastOrderId是返回空是因为没有下订单.
通过您所在的结账流程中的重点重述您的问题,以及您尝试对订单ID执行的操作可能会帮助某人提供您不需要的信息.
祝好运!
作者的解决方案:
首先从结帐/会话中获取报价ID,解决了这个问题:
Mage::getSingleton('checkout/session')->getQuoteId();
Run Code Online (Sandbox Code Playgroud)
然后按引用ID引用对象:
$quote = Mage::getModel("sales/quote")->load($quoteId);
Run Code Online (Sandbox Code Playgroud)