最近Jerry在作一個微信和SAP Commerce Cloud集成的項目,須要在微信裏調用後者的Restful API進行訂單建立和讀取。之前Jerry對SAP Commerce Cloud知之甚少,此次趁機學習了一下,過程當中獲得了SAP成都研究院Commerce開發團隊的Jonathan,Kevin和Kate等幾位同窗的大力幫助,這裏表示感謝。node
在SAP官網help.sap.com上根據關鍵字commerce搜索,結果列表裏會顯示出好幾個產品,這不免會讓像Jerry這種剛接觸commerce的人感到有點疑惑。git
其實只須要耐心地打開這些連接逐一閱讀一下子,就能弄清楚這幾個產品間的差別:github
SAP Commerce:SAP On-Premises上的電商解決方案api
SAP Commerce Cloud on SAP Infrastructure: SAP Commerce的雲端解決方案,Commerce核心代碼經過SAP內部工具打成一個容器鏡像,部署和運行在SAP本身的數據中內心。在不少文檔裏又稱爲Commerce Cloud Version One, 簡稱爲CCV1.瀏覽器
SAP Commerce Cloud on Public Cloud:SAP Commerce雲端解決方案,部署運行在公有云上,好比微軟的Azure,簡稱爲CCV2.微信
Medium上有一篇不錯的博客Two clouds in practice: a comparison of SAP Commerce Cloud v1 and v2介紹CCV1和CCV2的對比,這裏Jerry就不深刻展開了。app
回到本文主題,要想消費Commerce Cloud的訂單服務,首先須要熟悉一下如何手動在Commerce Cloud裏下單。在Commerce Cloud B2C的場景裏,下單的流程對咱們每一個人來講幾乎熟悉得不能再熟悉了——和咱們平常在某寶上購物一模一樣。函數
到電商店鋪裏瀏覽商品,看中本身心儀的一款產品後,工具
點擊Add To Cart把產品加到購物車裏:學習
點Check Out去結帳:
會生成一個購物車ID:
維護髮貨地址。固然咱們平時在某寶上購物時,通常都提早在手機app裏維護了好幾個發貨地址,而後結帳時只需從中選擇一個便可。
維護支付方式和明細(Payment Detail),這一步比如咱們在某寶上購物選擇微信,支付寶,花唄等方式支付。
Place Order點擊後,成功生成訂單,獲得訂單ID.
總結一下,手動下單的流程能夠分紅這五步:
(1) 建立一個購物車Shopping Cart (2) 給該購物車裏添加產品 (3) 給該購物車維護髮貨地址 (4) 給該購物車維護支付明細 (5) 執行下單操做,成功生成訂單
搞清楚流程以後,接下來須要找到每一個步驟分別調用哪些API來實現。
登陸SAP官網https://api.sap.com, 根據關鍵字Commerce Cloud搜索,很容易就能找到全部須要使用的API:
Jerry寫了一個nodejs應用來演示這些API的用法。這個nodejs應用的完整代碼在Jerry的github上。
執行這個應用,在第20行的回調函數裏會打印出成功建立的訂單ID:
根據這個ID到Commerce Cloud的backoffice裏,能查找到成功建立的訂單:
前面說到手動下單須要5個步驟,而Jerry項目文件裏有七個step.js, 多出來的兩個步驟,一個是獲取Access Token,另外一個是設置購物車的Delivery Mode. 前者是後續調用全部API的基礎,然後者完成的邏輯,當咱們在瀏覽器裏手動下單時,Commerce Cloud應用會自動幫咱們設置,可是用API的方式下單時,須要咱們顯式調用設置Delivery Mode的API, 所以最後一共須要7個步驟才能完成訂單的建立。
獲取Access Token的步驟,仍然是採用常規的OAuth認證,經過client id和client secret去換取Access Token.
咱們首先須要在Commerce Cloud上建立一個OAuth Client,維護Client ID, Client Secret, 密碼,token刷新間隔,相關權限等信息:
而後在step1_get_token.js裏,經過OAuth Client維護的這些信息發一個POST請求到OAuth endpoint換取Access Token.
由於隱私緣由,Jerry沒有把urlconfig.js上傳到github上,只上傳了一個urlconfigTemplate.js, 請你們在使用這個nodejs應用以前,把urlconfigTemplate.js裏的以左右尖括號標識的佔位符替換成實際值,而後重命名成urlconfig.js便可。
要獲取更多Jerry的原創文章,請關注公衆號"汪子熙":