2014-10-27 57 views
1

我想創建一種新的付款方式。在結帳過程中,付款方式會重定向到第三方服務。我將reservedOrderId傳遞給第三方服務,並在支付成功後返回此id。我如何通過reservedOrderId獲得報價?或者需要在重定向到第三方服務之前將訂單轉換爲訂單?通過預定訂單ID獲取報價

+0

這是沒有足夠的信息來幫助你。向我們展示你的代碼,你正在使用什麼第三方服務,等等...... – vaso123 2014-10-27 14:05:09

回答

1

由於保留的順序應該是唯一的,你可以試試這個:

$quote = Mage::getModel('sales/quote')->getCollection() 
    ->addFieldToFilter('reserver_order_id', 'Your Order id') 
    ->getFirstItem(); 

if ($quote->getId()) { 
    //quote was found - $quote 
} 
else { 
    //the quote does not exist. 
} 
+1

'Mage :: getSingleton('sales/quote') - > load($ orderId,'reserved_order_id')'作品 – 2014-10-28 07:21:33

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; 
} 
0

這工作得很好:

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

謝謝到@Sergei