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系統直接回復消息給微信公眾號的訂閱者
————————————————
本系列的英文版Jerry寫作于2017年,這個教程總共包含十篇文章,發表在SAP社區上。
最近有不少朋友在微信上向我咨詢SAP系統和微信公眾號集成的問題,因此我把當時寫的英文版翻譯成中文,重新發布在我的公眾號上。
需要注意的是,時隔三年,微信公眾號的開發流程可能有所變化,請大家自行鑒別。和微信公眾號集成的系統,我三年前選擇的是SAP Cloud for Customer.
搭建開發環境的前置條件
(1) 去微信公眾平臺申請一個微信公眾號。
(2) 這個教程里的微信消息服務器是用nodejs開發的,所以需要對nodejs的開發有一個基本的了解。
具體環境搭建流程
登錄微信公眾平臺, 進入公眾號管理控制臺:Development->Basic configuration
在下圖的URL字段里,維護你的微信消息服務器地址。當我們使用微信app往某個微信公眾號發送消息時,微信app會把該消息轉發給微信公眾號綁定到的微信消息服務器去。該消息服務器處理完畢后,將處理結果推送回微信app.
上圖中我的微信消息服務器部署在heroku云平臺上,當然你也可以把自己用nodejs開發的微信消息服務器,部署在其他的云平臺,比如阿里云,騰訊云,SAP云平臺等均可。
僅僅簡單地將云平臺上的微信消息服務器的url維護在上圖的URL字段是不夠的,我們必須遵循微信公眾號開發指南里定義的一個校驗流程,從而讓消息服務器同微信公眾號真正地建立綁定關系。
校驗流程文檔如下:
點擊下圖的submit按鈕之后,微信公眾平臺會發送一個HTTP請求到我們開發的微信消息服務器去:
HTTP請求的url格式如下:
https:///?signature=096abd439b41f9610aeabe2d7534084fd8dafa20&echostr=16168327802220428137×tamp=1512810825&nonce=384289189
我們的微信消息服務器,收到這個請求后,將微信公眾號的賬號令牌, HTTP請求里包含的時間戳和nonce字段作為輸入,按照微信開發指南里的說明計算一個輸出值,如果該輸出值和HTTP請求傳入的簽名值(signature)相等,則該微信消息服務器通過驗證,后續可以接收來自微信app的用戶請求。
如果計算的輸出值不等于HTTP請求傳入的簽名值,則驗證失敗,錯誤消息:Token authentication failed.
使用nodejs開發微信消息服務器的簡要步驟:
(1) 新建一個nodejs應用,package.json里定義依賴如下。定義啟動腳本start執行的命令行為:
node server.js
(2) 實現server.js, 主要邏輯是接收前文描述的submit按鈕點擊之后,發送給微信消息服務器的HTTP驗證請求,從請求中提取出時間戳(下圖第17行)和nonce字段(下圖第19行),使用SHA-1散列算法計算出一個哈希值(下圖第29行),然后同HTTP請求傳入的簽名值比較(第31行). 如果兩個值相等,在第32行將HTTP請求傳入的echostr返回給微信公眾平臺,驗證通過。
之前有一些SAP從業者們,吐槽微信公眾平臺上給出的代碼示例是基于Python的,而不是SAP生態圈內的朋友們更常用的Java或者JavaScript. 如果想拷貝上圖的nodejs源代碼,可以在Jerry的SAP社區博客里獲得。
最后,將這個nodejs應用部署到云平臺上,比如騰訊云,阿里云,SAP云平臺等。
我2017年寫作的時候,選擇的是heroku云平臺,部署應用的詳細步驟參考我這篇文章:
Step by step to host your UI5 application in Heroku
消息服務器部署到云平臺之后,點擊微信公眾號后臺控制臺的submit按鈕,從heroku的控制臺上,能看到nodejs應用里用console.log打印出的日志,其中HTTP請求傳入的簽名值和nodejs應用里計算出的哈希值一致,所以驗證通過。
驗證通過后,微信公眾號控制臺的服務器配置字段,能看到is enabled的提示,說明該消息服務器已經能夠接受用戶使用微信app給微信公眾號發送的消息了。
這個系列的下一篇文章,Jerry會介紹如何在微信消息服務器中接收用戶用微信app發送給微信公眾號的消息,處理之后如何推送回微信app.
感謝閱讀。
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP系统和微信集成的系列教程之一:微信开发环境的搭建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦见沟壑是什么意思 梦到沟壑是什么预兆
- 下一篇: 马斯克:5月推特推出单篇文章付费阅读模式