这是Jerry 2020年的第84篇文章,也是汪子熙公众号总共第266篇原创文章。
本系列的英文版Jerry写作于2017年,这个教程总共蕴含十篇文章,发表在SAP社区上。
系列目录
(1) 微信开发环境的搭建
(2) 如何通过微信公众号生产API
(3) 微信用户关注公众号之后,主动在SAP C4C零碎创立客户主数据
(4) 如何将SAP C4C主数据变动推送给微信公众号(本文)
(5) 如何将SAP UI5利用嵌入到微信公众号菜单中
(6) 如何通过OAuth2获取微信用户信息并显示在SAP UI5利用中
(7) 应用Redis存储微信用户和公众号的对话记录
(8) 微信公众号的地图集成
(9) 如何将微信用户发送到微信公众号的音讯保留到SAP C4C零碎
(10) 如何在SAP C4C零碎间接回复音讯给微信公众号的订阅者
最近有不少敌人在微信上向我征询SAP零碎和微信公众号集成的问题,因而我把过后写的英文版翻译成中文,从新公布在我的公众号上。
须要留神的是,时隔三年,微信公众号的开发流程可能有所变动,请大家自行甄别。和微信公众号集成的零碎,我三年前抉择的是SAP Cloud for Customer.
本文实现的场景是:我申请了一个用于测试的微信公众号,用户点击“关注”按钮:
在微信app上收到了一条微信音讯服务器发送的提醒关注胜利的自定义音讯:
同时,微信音讯服务器调用SAP Cloud for Customer(以下简称SAP C4C) OData API,在C4C零碎创立了一条客户主数据,类型为Individual Customer. 胜利创立的C4C客户主数据id,1000441,也一并发送到微信app上:
依据这个id,即可在C4C零碎查问到微信用户关注公众号之后主动生成的客户主数据:
上面是这个场景的实现细节。在入手编码之前,请确保你曾经实现了这个系列之前两篇文章里提到的步骤:
(1) 微信开发环境的搭建
(2) 如何通过微信公众号生产API
具体实现步骤
咱们须要在nodejs实现的微信音讯服务器里调用SAP C4C OData API,因而须要在nodejs利用里指定C4C OData API的endpoint. 创立一个config.js文件,实现config module:
第二行创立C4C客户主数据的OData url,能够在SAP官网github的C4C OData开发指南仓库里找到,链接如下。
而第五行的accessToken作用是什么呢?
回顾前一篇文章 SAP零碎和微信集成的系列教程之二:如何通过微信公众号生产API 形容的场景,过后用户在微信app里给微信公众号发送音讯,而后以同步的形式收到回复。
而本文试图实现的场景,微信用户关注公众号之后,触发SAP C4C客户主数据的创立,这个创立通过C4C OData API实现,是一个异步操作。客户主数据创立胜利后,微信音讯服务器会被动给微信用户推送一条创立胜利的音讯。
这个被动推送音讯的行为,必须满足两个前提条件能力胜利:
(1) 推送音讯的接管方,必须曾经关注了微信音讯服务器绑定的微信公众号。
(2) 调用微信推送音讯的API时,必须应用基于微信音讯服务器的app id和app secret换取的Access Token.
为了简略起见,我当时调用换取Access Token的微信API,传入app id和app secret,拿到token,而后硬编码到config.js里。当然因为该token默认2小时后就会过期,所以也能够采纳编程的形式,调用微信API获取,实现代码在这个链接里。
当微信用户点击“关注”按钮关注公众号之后,微信音讯服务器会收到一个HTTP POST申请,event key为"subscribe". 微信音讯服务器从申请里解析出微信用户的Wechat ID.
代码实现如下:
其中第18行,如果event变量值为subscribe,阐明用户点击了“关注”按钮,进入对应的if分支解决。
第19行的replyxml,蕴含了一条硬编码的音讯,即用户关注公众号之后,在微信app里收到的欢送音讯。
第20行的变量fromUserName,贮存的是蕴含在HTTP POST申请里的关注者Wechat ID. 后续微信音讯服务器被动给关注者推送C4C客户主数据创立胜利的音讯时,调用微信音讯推送API,会用到这个Wechat ID.
第21行的createAccount办法,调用C4C OData API创立客户主数据。
上面是createAccount的实现源代码,在这个链接里能找到。
因为波及到C4C数据的创立操作,须要应用HTTP POST,因而在真正调用C4C客户主数据创立API(上图第64行)之前,须要先调另一个API,拿到XSRF token(上图第62行的getToken).
咱们须要建设一个简略的映射机制,把微信关注者和C4C零碎里创立的客户主数据关联起来。这里我采取的逻辑是,把C4C创立的客户的FirstName字段硬编码成Wechat,而LastName存储成微信关注者的Wechat ID:
从上面C4C零碎截图,能看到公众号关注者的Wechat ID曾经存储到创立的客户主数据的Name字段上了。
C4C客户主数据创立胜利之后,微信音讯服务器调用工具办法postWCMessage, 被动推送一条创立胜利的音讯给点击了“关注”按钮的微信用户:
函数postWCMessage的实现源代码链接.
被动推送音讯给微信用户的API能够在Postman等工具里不便地进行测试:
音讯推送胜利后,被推送音讯的用户在微信app上收到的音讯如图:
本系列的第四篇文章,咱们会实现另一个场景:当SAP C4C零碎的客户主数据发生变化之后,被动推送音讯给关注了微信公众号的微信用户。
感激浏览。
系列目录
(1) 微信开发环境的搭建
(2) 如何通过微信公众号生产API
(3) 微信用户关注公众号之后,主动在SAP C4C零碎创立客户主数据
(4) 如何将SAP C4C主数据变动推送给微信公众号
(5) 如何将SAP UI5利用嵌入到微信公众号菜单中
(6) 如何通过OAuth2获取微信用户信息并显示在SAP UI5利用中
(7) 应用Redis存储微信用户和公众号的对话记录
(8) 微信公众号的地图集成
(9) 如何将微信用户发送到微信公众号的音讯保留到SAP C4C零碎
(10) 如何在SAP C4C零碎间接回复音讯给微信公众号的订阅者
更多Jerry的原创文章,尽在:"汪子熙":