470
技術社區[雲棲]
magento -- 關於更新訂單狀態的API接口函數
做Magento和其他係統的對接時需要調用Magento的Api,原以為更新一個訂單的狀態這樣的函數Magento默認肯定自帶有,一開始卻找不到,打開官網看order部分提供的接口函數列表也沒找到。
按說明,從上到下依次為批量獲取訂單,獲取單個訂單,給訂單添加備注,鎖定訂單,解鎖訂單和取消訂單。在我認為不存在這個函數準備自己寫一個的時候,看代碼發現其實addComment這個函數已經提供了更新訂單狀態的功能,而不僅僅是添加備注,看代碼
public function addComment($orderIncrementId, $status, $comment = null, $notify = false) { $order = $this->_initOrder($orderIncrementId); $order->addStatusToHistory($status, $comment, $notify); try { if ($notify && $comment) { $oldStore = Mage::getDesign()->getStore(); $oldArea = Mage::getDesign()->getArea(); Mage::getDesign()->setStore($order->getStoreId()); Mage::getDesign()->setArea('frontend'); } $order->save(); $order->sendOrderUpdateEmail($notify, $comment); if ($notify && $comment) { Mage::getDesign()->setStore($oldStore); Mage::getDesign()->setArea($oldArea); } } catch (Mage_Core_Exception $e) { $this->_fault('status_not_changed', $e->getMessage()); } return true; }
addStatusToHistory這個函數可以同時修改訂單狀態和添加訂單備注,並且添加一條訂單曆史記錄,要比直接修改訂單的狀態值要合理。同時addComment這個接口還可以發送訂單更新郵件給客戶,是否發送取決於$notify這個參數。
也就是說,Magento提供的更新訂單的接口還是挺完整的,可惜文檔裏沒體現出來,會誤導人。
最後更新:2017-04-02 06:51:33