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

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

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

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

回到本文主题,要想消费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的原创文章,请关注公众号"汪子熙":

如何使用API的方式消费SAP Commerce Cloud的订单服务的更多相关文章

  1. 如何通过Restful API的方式读取SAP Commerce Cloud的Product图片

    需求:我在SAP Commerce Cloud的backoffice里给某product维护了一些图片: 分别位于Normal,Thumbnails和Others等字段: 现在我想通过Restful ...

  2. 如何通过Restful API的方式读取SAP Commerce Cloud的Product Reference

    从SAP官网上找到api的说明: https://api.sap.com/api/commerce_services/resource api endpoint: /rest/v2/electroni ...

  3. Step by Step to create orders by consuming SAP Commerce Cloud Restful API

    Recently Jerry is working on an integration project about creating orders in Wechat platform by cons ...

  4. 继收购Magento十个月,Adobe推出Commerce Cloud商务云服务

    去年 5 月,软件巨头 Adobe 以 16.8 亿美元的价格,受过了 Magento .在经历了十个月的业务整合后,该公司终于推出了全新的 Commerce Cloud 商务云服务.据悉,其本质上是 ...

  5. 部署在SAP Cloud Platform CloudFoundry环境的应用如何消费SAP Leonardo机器学习API

    Jerry的前一篇文章 如何在Web应用里消费SAP Leonardo的机器学习API 里介绍的例子是Neo测试环境的Web应用消费sandbox版本的机器学习API,url如下: https://s ...

  6. 如何在Web应用里消费SAP Leonardo的机器学习API

    去年5月的时候,Jerry曾经写了一篇文章:使用Java程序消费SAP Leonardo的机器学习API,而最近另外做的一个项目,需要在Web应用里做同样的事情. 因为有了前一篇文章的铺垫,避免了很多 ...

  7. kafka直连方式消费多个topic

    一个消费者组可以消费多个topic,以前写过一篇一个消费者消费一个topic的,这次的是一个消费者组通过直连方式消费多个topic,做了小测试,结果是正确的,通过查看zookeeper的客户端,zoo ...

  8. spring jwt springboot RESTful API认证方式

    RESTful API认证方式 一般来讲,对于RESTful API都会有认证(Authentication)和授权(Authorization)过程,保证API的安全性. Authenticatio ...

  9. 配置Struts2及Struts2访问servlet api的方式

    Struts2的起源与背景 在很长的一段时间内,在所有的MVC框架中,Struts1处于绝对的统治地位,无论是从市场的普及范围,还是具体的使用者数量. 其他MVC框架都无 法与其相比,作为一一款优秀的 ...

随机推荐

  1. CentOS 7 安装FTP服务器(vsftpd)

    FTP是安装各种环境前的预备环节,因为我们要把下载好的安装包上传上去.其次,在一个团队中,FTP服务器为多用户提供了一个文件储存场所,总之是一个非常实用的工具. 1.安装vsftpd # 首先要查看你 ...

  2. leetcode 10. Regular Expression Matching 、44. Wildcard Matching

    10. Regular Expression Matching https://www.cnblogs.com/grandyang/p/4461713.html class Solution { pu ...

  3. js组件常用封装方法。。。。。【组件封装】 ★★★★★★

    公共弹窗js写法:mcake弹窗封装Dialog.js function Dialog(bg,els,opts) { this.$els = $(els); this.$Dialogbg = $(bg ...

  4. Spring cloud微服务安全实战-6-10sentinel之热点和系统规则

    热点规则 热点就是经常访问的数据.很多时候我们希望争对某一些热点数据,然后来进行限制.比如说商品的信息这个服务,我们给它做一个限流,qps是100,某一天我想做一个秒杀活动,可能会有很大的流量,这个时 ...

  5. windows10 卓越性能模式

    打开cmd,输入 powercfg -duplicatescheme e9a42b02-d5df-448d-aa00-03f14749eb61 再到电池选项里,勾选卓越性能模式 若没出现卓越性能,创建 ...

  6. [LeetCode] 95. Unique Binary Search Trees II 唯一二叉搜索树 II

    Given n, generate all structurally unique BST's (binary search trees) that store values 1...n. For e ...

  7. Java之Java程序的基本结构

    Java的基本结构是 /** * 可以用来自动创建文档的注释 */ public class Hello { public static void main(String[] args) { // 向 ...

  8. 【神经网络与深度学习】Win10+VS2015 caffe环境搭建(极其详细)

    caffe是好用,可是配置其环境实在是太痛苦了,依赖的库很多不说,在VS上编译还各种报错,你能想象那种被一百多个红色提示所笼罩的恐惧.  且网上很多教程是VS2013环境下编译的,问人很多也说让我把1 ...

  9. polynomial&generating function学习笔记

    生成函数 多项式 形如$\sum_{i=0}^{n}a_i x^i$的代数式称为n阶多项式 核函数 {ai}的核函数为f(x),它的生成函数为sigma(ai*f(i)*x^i) 生成函数的加减 {a ...

  10. Qt deletelater函数分析(1)

               生活的全部意义在于无穷地探索尚未知道的东西,在于不断地增加更多的知识.--左拉 该函数是QObject类的函数:                             ---- ...