SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据
這是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的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP系统和微信集成的系列教程之三:微信用户关注公众号之后,自动在SAP C4C系统创建客户主数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 红警ol资源刷新时间(红警死了十年)
- 下一篇: SAP系统和微信集成的系列教程之四:如何