共计 2589 个字符,预计需要花费 7 分钟才能阅读完成。
这是 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 的原创文章,尽在:” 汪子熙 ”: