首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据

本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上:

https://blogs.sap.com/2017/12/10/wechat-development-series-1-setup-your-development-environment/

系列目录

(8) 微信公众号的地图集成

最近有不少朋友在微信上向我咨询SAP系统和微信公众号集成的问题,因此我把当时写的英文版翻译成中文,重新发布在我的公众号上。

需要注意的是,时隔三年,微信公众号的开发流程可能有所变化,请大家自行鉴别。和微信公众号集成的系统,我三年前选择的是SAP Cloud for Customer.

在微信app上收到了一条微信消息服务器发送的提示关注成功的自定义消息:

同时,微信消息服务器调用SAP Cloud for Customer(以下简称SAP C4C) OData API,在C4C系统创建了一条客户主数据,类型为Individual Customer. 成功创建的C4C客户主数据id,1000441,也一并发送到微信app上:

根据这个id,即可在C4C系统查询到微信用户关注公众号之后自动生成的客户主数据:

下面是这个场景的实现细节。在动手编码之前,请确保你已经完成了这个系列之前两篇文章里提到的步骤:

具体实现步骤

第二行创建C4C客户主数据的OData url,可以在SAP官方github的C4C OData开发指南仓库里找到,链接如下:

https://github.com/SAP/C4CODATAAPIDEVGUIDE

而第五行的accessToken作用是什么呢?

回忆前一篇文章SAP系统和微信集成的系列教程之二:如何通过微信公众号消费API描述的场景,当时用户在微信app里给微信公众号发送消息,然后以同步的方式收到回复。

这个主动推送消息的行为,必须满足两个前提条件才能成功:

(1) 推送消息的接收方,必须已经关注了微信消息服务器绑定的微信公众号。

(2) 调用微信推送消息的API时,必须使用基于微信消息服务器的app id和app secret换取的Access Token.

为了简单起见,我事先调用换取Access Token的微信API,传入app id和app secret,拿到token,然后硬编码到config.js里。当然因为该token默认2小时后就会过期,所以也可以采用编程的方式,调用微信API获取,实现代码如下:

https://github.com/wangzixi-diablo/wechat-sap-integration/blob/main/jerryapp/routes/AuthorizationAndDirect.js

代码实现如下:

其中第18行,如果event变量值为subscribe,说明用户点击了“关注”按钮,进入对应的if分支处理。

第19行的replyxml,包含了一条硬编码的消息,即用户关注公众号之后,在微信app里收到的欢迎消息。

第20行的变量fromUserName,储存的是包含在HTTP POST请求里的关注者Wechat ID. 后续微信消息服务器主动给关注者推送C4C客户主数据创建成功的消息时,调用微信消息推送API,会用到这个Wechat ID.

第21行的createAccount方法,调用C4C OData API创建客户主数据。

下面是createAccount的实现源代码,在下面的链接里能找到:

https://github.com/wangzixi-diablo/wechat-sap-integration/blob/main/jerryapp/service/createAccountInC4C.js

因为涉及到C4C数据的创建操作,需要使用HTTP POST,因此在真正调用C4C客户主数据创建API(上图第64行)之前,需要先调另一个API,拿到XSRF token(上图第62行的getToken).

我们需要建立一个简单的映射机制, 把微信关注者和C4C系统里创建的客户主数据关联起来。这里我采取的逻辑是,把C4C创建的客户的FirstName字段硬编码成Wechat,而LastName存储成微信关注者的Wechat ID:

函数postWCMessage的实现源代码:

https://github.com/wangzixi-diablo/wechat-sap-integration/blob/main/jerryapp/service/postMessageToUser.js

消息推送成功后,被推送消息的用户在微信app上收到的消息如图:

本系列的第四篇文章,我们会实现另一个场景:当SAP C4C系统的客户主数据发生变化之后,主动推送消息给关注了微信公众号的微信用户。

感谢阅读。

系列目录

(8) 微信公众号的地图集成

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201203A0FB2O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券