写点什么

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

作者:Jerry Wang
  • 2022 年 6 月 14 日
  • 本文字数:2156 字

    阅读完需:约 7 分钟

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

在 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 代码的方式创建订单的详细技术实现。

发布于: 4 小时前阅读数: 10
用户头像

Jerry Wang

关注

🏆InfoQ写作平台-签约作者🏆 2017.12.03 加入

SAP成都研究院开发专家,SAP社区导师,SAP中国技术大使。2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今。工作中使用 ABAP, Java, JavaScript 和 TypeScript 进行开发。

评论

发布
暂无评论
如何使用 API 的方式消费 SAP Commerce Cloud 的订单服务_node.js_Jerry Wang_InfoQ写作社区