在 SAP 官网 help.sap.com 上根据关键字 commerce 搜索,结果列表里会显示出好几个名称相近的产品,这难免会让一些 SAP commerce (电商云)的初学者感到有点疑惑。
其实只需要耐心地打开这些链接逐一阅读一会儿,就能弄清楚这几个产品间的差异:
默认情况下,SAP 在 CCv1 中提供三种环境:Development、Staging 和 Production(以及访问这些环境的 VPN)。典型的开发环境包含以下服务器类型之一:Hybris 应用程序服务器、Web 服务器、SOLR 搜索服务器、Hybris Data hub 和 HANA 数据库。 另一方面,在生产环境中,一套典型的系统 Landscape 通常至少有两个 Web 服务器、两个前端应用程序服务器、一个管理应用程序服务器、三个 SOLR 服务器(一个主服务器和两个从属服务器)、两个数据中心服务器和一个 HANA 数据库集群服务器。这种规模对于流量适中的标准 B2B 电子商务网站已经足够,但对于公共 B2C 网站,或许有进一步优化的空间。
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 代码的方式创建订单的详细技术实现。
领取专属 10元无门槛券
私享最新 技术干货