按预订订单ID获取报价

问题描述 投票:3回答:3

我想创建一种新的付款方式。在结账过程中,付款方式重定向到第三方服务。我将reservedOrderId传递给第三方服务,并在付款成功时返回此ID。如何通过reservedOrderId获取报价?或者我需要在重定向到第三方服务之前将报价转换为订单?

magento
3个回答
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.
}

2
投票

这很好用:

Mage::getSingleton('sales/quote')
     ->load($orderId, 'reserved_order_id')

感谢@Sergei


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;
}
© www.soinside.com 2019 - 2024. All rights reserved.