江西應(yīng)用技術(shù)職業(yè)學(xué)院 彭 霖
江西應(yīng)用科技學(xué)院 彭忠全
江西應(yīng)用技術(shù)職業(yè)學(xué)院 譚倩妮
Odoo是一個(gè)輕量級的開源ERP系統(tǒng),相比同類產(chǎn)品而言,有著軟件體積小、系統(tǒng)要求低、支持多平臺、便于部署、多種軟件架構(gòu)、可擴(kuò)展模塊、快速二次開發(fā)等特點(diǎn)[7]。目前,Odoo暫無對接各大電子商務(wù)平臺的開源模塊,原生Odoo的訂單只能從自帶的網(wǎng)店平臺獲取或手工錄入,要實(shí)現(xiàn)與各大電子商務(wù)平臺的對接,必須自定義對接模塊,實(shí)現(xiàn)包含獲取訂單、訂單發(fā)貨、商品更新、退換貨處理、回復(fù)評價(jià)等功能,使其符合國內(nèi)電子商務(wù)銷售模式。本文以蘇寧開放平臺為例,實(shí)現(xiàn)與Odoo系統(tǒng)的對接。
Odoo是一個(gè)高度模塊化、低耦合的跨平臺開源ERP系統(tǒng),頂層功能由“網(wǎng)站應(yīng)用管理、銷售管理、財(cái)務(wù)管理、運(yùn)營管理、生產(chǎn)管理、人力資源管理”構(gòu)成,提供一站式解決方案,其中涵蓋了幾乎所有常見的業(yè)務(wù)需求,不再需要不同軟件之間的接口,模塊化的設(shè)計(jì)使得各個(gè)應(yīng)用彼此之間完美集成。同時(shí),開源模式讓開發(fā)人員可以自由的定制自己的應(yīng)用,為在所有應(yīng)用中擴(kuò)展提供了頂級可用性[8]。
為了滿足Odoo對接電子商務(wù)開放平臺,實(shí)現(xiàn)訂單在Odoo系統(tǒng)內(nèi)的操作與平臺同步,Odoo對接模塊應(yīng)當(dāng)包含以下基本功能(如圖1所示):
圖1
訂單獲取:主要包含訂單定時(shí)批量獲取、單筆訂單查詢等功能。如果獲取的是新訂單信息,將從電子商務(wù)開放平臺獲取的已付款新訂單信息保存在Odoo系統(tǒng)內(nèi),如果獲取的是已有訂單信息,及時(shí)將訂單狀態(tài)轉(zhuǎn)為退款等異常訂單進(jìn)行及時(shí)處理,避免訂單的錯(cuò)發(fā)。
訂單發(fā)貨:主要包含訂單發(fā)貨信息推送功能。通過Odoo系統(tǒng)調(diào)用物流公司開放平臺對接模塊,向?qū)游锪鞴鹃_放平臺下單,獲取物流單等信息,將所獲得的信息推送給電子商務(wù)開放平臺。
商品更新:主要包含商品上、下架、商品信息維護(hù)、商品庫存維護(hù)等功能。對商品的名稱、類別、價(jià)格、簡介等信息進(jìn)行統(tǒng)一管理,實(shí)現(xiàn)商品的自由上、下架,將ERP系統(tǒng)中的商品庫存信息及時(shí)同步到電子商務(wù)開放平臺。
退換貨處理:主要包含退換貨訂單定時(shí)批量獲取、單筆退換貨訂單獲取、同意或拒絕退換貨等功能。與獲取訂單類似,但是由于退換貨訂單的特殊性,需要及時(shí)的將退款訂單截下,避免退款訂單發(fā)貨。同時(shí),工作人員可以快速的進(jìn)行退換貨審批,減少在電子商務(wù)網(wǎng)站后臺的操作。
回復(fù)評價(jià):主要包含獲取買家評價(jià)、回復(fù)買家評價(jià)等功能??头裙ぷ魅藛T可以快速的、批量的進(jìn)行評價(jià)回復(fù),避免回復(fù)不及時(shí)的現(xiàn)象。
Odoo系統(tǒng)在數(shù)據(jù)持久層上使用了ORM(對象到關(guān)系的映射)技術(shù),使得我們操作實(shí)體對象的時(shí)候,就不需要再去和復(fù)雜的SQL語句打交道,只需簡單的操作實(shí)體對象的屬性和方法。Odoo系統(tǒng)內(nèi)置了完善的ORM API供開發(fā)者調(diào)用,常用方法如下。
create方法:在數(shù)據(jù)表中插入一條記錄search方法:查詢符合條件的記錄。
read方法:返回記錄的指定字段值列表。
browse方法:瀏覽對象及其關(guān)聯(lián)對象。從數(shù)據(jù)庫中讀取指定的記錄,并生成對象返回。
write方法:保存一個(gè)或幾個(gè)記錄的一個(gè)或幾個(gè)字段。unlink方法:刪除一個(gè)或幾個(gè)記錄。
調(diào)用蘇寧開放平臺(下稱SOP)的API接口時(shí),即是與SOP服務(wù)器的數(shù)據(jù)進(jìn)行一次交互的過程。
3.2.1 API調(diào)用流程
根據(jù)SOP的協(xié)議,API的HTTP調(diào)用主要有以下幾個(gè)步驟:拼接參數(shù)、生成簽名、拼接HTTP請求,發(fā)起HTTP請求、解析獲取的XML/JSON結(jié)果。
SOP目前提供2個(gè)運(yùn)行環(huán)境供開發(fā)者調(diào)用:
(1)測試環(huán)境。數(shù)據(jù)涵蓋所有API服務(wù),所有開放的API已經(jīng)部署到該環(huán)境,供開發(fā)者進(jìn)行API的功能測試。
(2)正式環(huán)境。正式環(huán)境是蘇寧開放服務(wù)平臺提供給供應(yīng)商及軟件服務(wù)商的線上試運(yùn)行環(huán)境。根據(jù)應(yīng)用標(biāo)簽不同,每個(gè)應(yīng)用將受到接口調(diào)用次數(shù)及流量的限制,并且根據(jù)應(yīng)用標(biāo)簽不同,能調(diào)用的接口也不同。
3.2.2 API調(diào)用參數(shù)說明
appKey是開發(fā)者創(chuàng)建應(yīng)用時(shí),SOP頒發(fā)的唯一標(biāo)識,SOP通過App Key來鑒別應(yīng)用的身份。appSecret是SOP給應(yīng)用分配的密鑰,這個(gè)密鑰用來保證應(yīng)用來源的可靠性,防止被偽造。appRequestTime是請求該接口的時(shí)間,SOP使用北京時(shí)間。
3.2.3 簽名算法
調(diào)用API接口時(shí),為了防止調(diào)用過程中被黑客獲取并篡改,各大電商開放平臺均要求在調(diào)用任何一個(gè)API時(shí),都必須攜帶簽名,開放平臺會請求的參數(shù),對簽名進(jìn)行相應(yīng)的驗(yàn)證,簽名不合法的請求會被拒絕。本文以SOP為例,SOP目前支持的簽名算法為MD5,簽名大致過程如下(SOPV1.2版本):
(1)業(yè)務(wù)數(shù)據(jù)進(jìn)行base64編碼
(2)按照順序依次拼接appSecret的值,appMethod的值,appRequestTime的值,appkey的值,versionNo的值和第一步編碼后的值 。
(3)將第二步的數(shù)據(jù)進(jìn)行md5加密,得到簽名信息
3.2.4 拼接HTTP請求,發(fā)起HTTP請求
將所有參數(shù)名和參數(shù)值采用utf-8進(jìn)行URL編碼,然后通過GET或POST發(fā)起請求。調(diào)用接口(API)時(shí),必須傳入的系統(tǒng)級參數(shù)以及應(yīng)用級參數(shù),參見SOP API文檔 中每個(gè)API接口詳細(xì)頁面的公共參數(shù)。
3.2.5 解析返回的XML/JSON數(shù)據(jù)
XML:python中用xml.dom.minidom來解析xml返回?cái)?shù)據(jù),DOM 的解析器在解析XML 文檔時(shí),一次性讀取整個(gè)文檔,把文檔中所有元素保存在內(nèi)存中的一個(gè)樹結(jié)構(gòu)里,之后可以利用DOM 提供的不同的函數(shù)來讀取文檔的內(nèi)容和結(jié)構(gòu)。
JSON:python的json模塊提供了一種很簡單的方式來編碼和解碼JSON數(shù)據(jù)。 其中兩個(gè)主要的函數(shù)是 json.dumps() 和 json.loads() ,json.dump()用來編碼JSON數(shù)據(jù), json.loads()用來解碼JSON數(shù)據(jù)。
3.2.6 數(shù)據(jù)定時(shí)獲取
Odoo為所有定時(shí)任務(wù)而專門準(zhǔn)備了一個(gè)模型,即ir_cron類,通過實(shí)例化ir_cron對象,改變對象的的以下屬性,來達(dá)到定時(shí)執(zhí)行某項(xiàng)任務(wù)的目的:
active屬性,決定是否激活該定時(shí)任務(wù),類型為布爾型,默認(rèn)為True。
interval_number屬性,定義間隔時(shí)間,類型為整型。
interval_type屬性,定義執(zhí)行定時(shí)任務(wù)的周期類型,只能選擇分鐘、小時(shí)、天、周、月,可惜沒有秒。
function屬性,定義定時(shí)任務(wù)需要執(zhí)行的方法。
為了本文以蘇寧開放平臺為例,設(shè)計(jì)和實(shí)現(xiàn)了Odoo系統(tǒng)中的電子商務(wù)開放平臺對接模塊。該模塊滿足Odoo對接電子商務(wù)開放平臺的需求,實(shí)現(xiàn)了訂單在Odoo系統(tǒng)內(nèi)的操作與平臺同步,大大簡化了電子商務(wù)企業(yè)后臺人員的操作,解決了電子商務(wù)平臺與企業(yè)ERP系統(tǒng)的信息孤島現(xiàn)象。