SAP系統和微信集成的系列教程之三:微信用戶關注公衆號以後,自動在SAP C4C系統建立客戶主數據

這是Jerry 2020年的第84篇文章,也是汪子熙公衆號總共第266篇原創文章。node

本系列的英文版Jerry寫做於2017年,這個教程總共包含十篇文章,發表在SAP社區上。git

系列目錄

(1) 微信開發環境的搭建github

(2) 如何經過微信公衆號消費API編程

(3) 微信用戶關注公衆號以後,自動在SAP C4C系統建立客戶主數據服務器

(4) 如何將SAP C4C主數據變化推送給微信公衆號(本文)微信

(5) 如何將SAP UI5應用嵌入到微信公衆號菜單中微信開發

(6) 如何經過OAuth2獲取微信用戶信息並顯示在SAP UI5應用中併發

(7) 使用Redis存儲微信用戶和公衆號的對話記錄app

(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的原創文章,盡在:"汪子熙":

相關文章
相關標籤/搜索