我想创建一种新的付款方式。在结账过程中,付款方式重定向到第三方服务。我将reservedOrderId传递给第三方服务,并在付款成功时返回此ID。如何通过reservedOrderId获取报价?或者我需要在重定向到第三方服务之前将报价转换为订单吗?
答案 0 :(得分:3)
由于保留订单应该是唯一的,您可以尝试:
$quote = Mage::getModel('sales/quote')->getCollection()
->addFieldToFilter('reserved_order_id', 'Your Order id')
->getFirstItem();
if ($quote->getId()) {
//quote was found - $quote
}
else {
//the quote does not exist.
}
答案 1 :(得分:2)
这很好用:
Mage::getSingleton('sales/quote')
->load($orderId, 'reserved_order_id')
感谢@Sergei
答案 2 :(得分:0)
在发送给第三方之前,您最好将报价转换为订单。它将允许您拥有订单的正确状态(已取消,已付款,欺诈......)。
如果您确实需要在之后创建订单,则可以覆盖mage_sales_model_quote和mage_sales_model_resource_quote以创建相应函数loadByReservedOrderId(),该资源具有对数据库的调用以及允许您在控制器上调用它的模型。
对于资源,就像那样。
public function loadByReservedOrderId($id){
$select = $this->_getReadAdapter()->select()->from(array('main_table'=>$this->getMainTable()), 'entity_id')
->where('main_table.reserved_order_id = ?', array($id));
return $this->_getReadAdapter()->fetchOne($select);
}
为模型:
public function loadByReservedOrderId($id)
{
if ($id == null){
return false;
}
$order_id = $this->_getResource()->loadByReservedOrderId($id);
$this->load($order_id);
return $this;
}