在SAP官网 help.sap.com 上根据关键字 commerce 搜索,结果列表里会显示出好几个名称相近的产品,这难免会让一些 SAP commerce (电商云)的初学者感到有点疑惑。
其实只需要耐心地打开这些链接逐一阅读一会儿,就能弄清楚这几个产品间的差异:
- SAP Commerce:SAP On-Premises上的电商解决方案
- SAP Commerce Cloud on SAP Infrastructure: SAP Commerce的云端解决方案,Commerce核心代码通过SAP内部工具打成一个容器镜像,部署和运行在SAP自己的数据中心里。在很多文档里又称为Commerce Cloud Version One, 简称为 CCV1. 从严格意义上说,CCV1 是一组标准化的 Linux 虚拟机,遵循在 SAP 数据中心运行的基本 SAP Commerce 架构设置。
默认情况下,SAP 在 CCv1 中提供三种环境:Development、Staging 和 Production(以及访问这些环境的 VPN)。典型的开发环境包含以下服务器类型之一:Hybris 应用程序服务器、Web 服务器、SOLR 搜索服务器、Hybris Data hub 和 HANA 数据库。 另一方面,在生产环境中,一套典型的系统 Landscape 通常至少有两个 Web 服务器、两个前端应用程序服务器、一个管理应用程序服务器、三个 SOLR 服务器(一个主服务器和两个从属服务器)、两个数据中心服务器和一个 HANA 数据库集群服务器。这种规模对于流量适中的标准 B2B 电子商务网站已经足够,但对于公共 B2C 网站,或许有进一步优化的空间。
- SAP Commerce Cloud on Public Cloud:SAP Commerce云端解决方案,部署运行在公有云上,比如微软的Azure,简称为CCV2.
SAP CCV2 不同于 CCV1 的架构,是一套使用 Kubernetes 等现代技术在 Microsoft Azure 上运行的云原生解决方案。 提供一个 Web UI 可用于管理所有环境,包括生产环境。
CCV2 具有与 CCV1 中相同的一组环境:Development、Staging 和 Production. 与 CCV1 不同,客户不会获得显示每个环境的服务器设置的详细架构图。客户可以通过手动提出申请的方向,向 SAP 请求对生产环境进行水平扩展和垂直扩展,以预防其站点的预计流量达到峰值的情况出现。 该数据库始终是 Microsoft Azure SQL 数据库,它作为 Azure 云的服务提供。 Kibana 用于服务器监控和日志。
在某种程度上,CCV2 比 CCV1 更开放。 客户以及合作伙伴能够创建新的构建,并将它们部署到包括生产环境在内的所有环境。 通过将 Git 存储库连接到云平台来创建一个 Build. 开发人员只需要在存储库的根目录中维护一个特殊的 manifest.json 文件,将存储库连接到 CCv2 后,可以通过单击 CCv2 用户界面中的按钮来创建新版本。构建完成后,您可以单击另一个按钮将构建部署到环境中。
从 CCV1 到 CCV2 的演进之路不难看出,SAP(与所有其他公司一样)正在将其服务从本地迁移到云端。
回到本文主题,要想消费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:
笔者写了一个nodejs应用来演示这些API的用法。
执行这个应用,在第20行的回调函数里会打印出成功创建的订单ID:
根据这个ID到Commerce Cloud的backoffice里,能查找到成功创建的订单:
前面说到手动下单需要5个步骤,而笔者项目文件里有七个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.
因为隐私原因,笔者没有把urlconfig.js上传到github上,只上传了一个urlconfigTemplate.js, 请大家在使用这个nodejs应用之前,把 urlconfigTemplate.js 里的以左右尖括号标识的占位符替换成实际值,然后重命名成urlconfig.js即可。
总结
本文首先介绍了 SAP 电商云 CCV1 和 CCV2 的差别,接着详细介绍了使用电商云提供的 order API,通过 Node.js 代码的方式创建订单的详细技术实现。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。