我正在开发自定义付款网关。它使用OrderIncrementID来识别付款的订单。在下订单后(即结帐后),我可以运行所有功能,但结帐页面本身除外。
在结帐页面上,未创建订单,获取OrderIncrementID似乎非常困难。我们必须覆盖结帐中的订单创建,以便将在选择付款方式之后创建订单,这听起来很复杂,而且覆盖流程很危险。一种替代方法是使用QuoteID,但是要权衡的是我必须实现从QuoteID到OrderIncrementID的转换。
在这种情况下,我该怎么办才能在结帐页面中获取OrderIncrementID?特别是选择付款方式后
回答:如果有帮助,您可以获取报价的保留订单ID。尝试这个:
$incrementId = $quote->getReservedOrderId();
或者,您可以获取如下所示的订单增量ID:
$quote->reserveOrderId();
根据该方法的注释,这将:
/**
* Generate new increment order id and associate it with current quote
*
* @return Mage_Sales_Model_Quote
*/
public function reserveOrderId()
另外,如果您愿意,也可以挂接到事件:sales_model_service_quote_submit_before
然后在事件处理程序中获取incidenceId,如下所示:
public function doSomething($observer){//observer for the event
$quote = $observer->getEvent()->getQuote();
$incrementId = $quote->getReservedOrderId();
//do stuff
}