如何使用API的方式消费SAP Commerce Cloud的订单服务

最近Jerry在做一个微信和SAP Commerce Cloud集成的项目,需要在微信里调用后者的Restful API进行订单创建和读取。以前Jerry对SAP Commerce Cloud知之甚少,这次趁机学习了一下,过程中得到了SAP成都研究院Commerce开发团队的Jonathan,Kevin和Kate等几位同学的大力帮助,这里表示感谢。


在SAP官网help.sap.com上根据关键字commerce搜索,结果列表里会显示出好几个产品,这难免会让像Jerry这种刚接触commerce的人感到有点疑惑。


如何使用API的方式消费SAP Commerce Cloud的订单服务

其实只需要耐心地打开这些链接逐一阅读一会儿,就能弄清楚这几个产品间的差异:


SAP Commerce:SAP On-Premises上的电商解决方案


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就不深入展开了。

如何使用API的方式消费SAP Commerce Cloud的订单服务

回到本文主题,要想消费Commerce Cloud的订单服务,首先需要熟悉一下如何手动在Commerce Cloud里下单。在Commerce Cloud B2C的场景里,下单的流程对我们每个人来说几乎熟悉得不能再熟悉了——和我们日常在某宝上购物如出一辙。


到电商店铺里浏览商品,看中自己心仪的一款产品后,

如何使用API的方式消费SAP Commerce Cloud的订单服务

如何使用API的方式消费SAP Commerce Cloud的订单服务

如何使用API的方式消费SAP Commerce Cloud的订单服务

如何使用API的方式消费SAP Commerce Cloud的订单服务

总结一下,手动下单的流程可以分成这五步:


(1) 创建一个购物车Shopping Cart

(2) 给该购物车里添加产品

(3) 给该购物车维护发货地址

(4) 给该购物车维护支付明细

(5) 执行下单操作,成功生成订单


搞清楚流程之后,接下来需要找到每个步骤分别调用哪些API来实现。


登录SAP官网https://api.sap.com, 根据关键字Commerce Cloud搜索,很容易就能找到所有需要使用的API:

如何使用API的方式消费SAP Commerce Cloud的订单服务

如何使用API的方式消费SAP Commerce Cloud的订单服务

如何使用API的方式消费SAP Commerce Cloud的订单服务

前面说到手动下单需要5个步骤,而Jerry项目文件里有七个step.js, 多出来的两个步骤,一个是获取Access Token,另一个是设置购物车的Delivery Mode. 前者是后续调用所有API的基础,而后者完成的逻辑,当我们在浏览器里手动下单时,Commerce Cloud应用会自动帮我们设置,但是用API的方式下单时,需要我们显式调用设置Delivery Mode的API, 因此最后一共需要7个步骤才能完成订单的创建。


如何使用API的方式消费SAP Commerce Cloud的订单服务

获取Access Token的步骤,仍然是采用常规的OAuth认证,通过client id和client secret去换取Access Token.


我们首先需要在Commerce Cloud上创建一个OAuth Client,维护Client ID, Client Secret, 密码,token刷新间隔,相关权限等信息:


如何使用API的方式消费SAP Commerce Cloud的订单服务

如何使用API的方式消费SAP Commerce Cloud的订单服务

因为隐私原因,Jerry没有把urlconfig.js上传到github上,只上传了一个urlconfigTemplate.js, 请大家在使用这个nodejs应用之前,把urlconfigTemplate.js里的以左右尖括号标识的占位符替换成实际值,然后重命名成urlconfig.js即可。

如何使用API的方式消费SAP Commerce Cloud的订单服务

上一篇:最佳实践:使用阿里云CDN加速OSS访问


下一篇:以太坊之DAPP开发(完整例子)