SAP系統和微信整合的系列教程之一:微信開發環境的搭建
本系列的英文版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的原創文章,盡在:"汪子熙":
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2747834/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 微信開發系列之一 - 微信公眾號開發的開發環境搭建開發環境
- 微信程式開發系列教程(一)開發環境搭建開發環境
- SAP系統和微信整合的系列教程之二:如何通過微信公眾號消費APIAPI
- 微信小程式開發系列(一) :開發環境搭建和微信小程式的檢視設計與開發微信小程式開發環境
- C#微信開發系列教程C#
- 微信小程式開發系列教程三:微信小程式的除錯方法微信小程式除錯
- 基於mpvue框架搭建微信小程式開發環境Vue框架微信小程式開發環境
- WordPress,SAP Kyma和微信三者的整合
- 微信整合CRM系統的好處
- 微信小程式開發系列六:微信框架API的呼叫微信小程式框架API
- linux(統信)下搭建electron開發環境Linux開發環境
- 微信程式開發系列教程(三)使用微信API給微信使用者發文字訊息API
- 微信開發超市全反系統,微信支付刷卡支付,微信介面簡單配置!
- ThinkPHP+Mysql開發的微信商城系統PHPMySql
- Thinkphp開發的微信電商管理系統PHP
- 在 Ubuntu 18.04 上 搭建微信小程式和公眾號應用開發環境Ubuntu微信小程式開發環境
- thinkphp整合系列之微信退款PHP
- 微信小程式開發教程微信小程式
- 微信小程式開發系列七:微信小程式的頁面跳轉微信小程式
- 微信小程式開發系列二:微信小程式的檢視設計微信小程式
- 鴻蒙系統系列教程5-鴻蒙開發環境的搭建鴻蒙開發環境
- 微信開發(4):微信第三方開放平臺的搭建(java)Java
- 微信開發系列之九 - 在微信裡直接建立SAP C4C的社交媒體訊息
- 微信程式開發系列教程(四)使用微信API建立公眾號自定義選單API
- 微信程式開發系列教程(二)微信訂閱號+人工智慧問答服務人工智慧
- TP3.2.3開發的微信公排系統
- 微信qq域名檢測系統的使用教程
- 【微信部落】tp5+ionic開發微信公眾號商城系統
- 微信小遊戲開發(7)-支援情況和執行環境遊戲開發
- SAP Field Service Management 和微信整合的案例分享和實現介紹
- keycloak整合微信登陸~解決國內微信整合的問題
- 微信開發系列之七 - 使用Redis儲存微信聊天記錄Redis
- 實現微信小程式編譯和執行環境系列(初始篇)微信小程式編譯
- 好訊息!微信小程式開發環境自帶vConsole微信小程式開發環境
- 如何在本地開發環境除錯微信 JS-SDK開發環境除錯JS
- 微信小程式開發系列 (四) :微信小程式的頁面跳轉路由設計微信小程式路由
- 微信伴侶WechatTweak for Mac中文整合版 (微信防撤回、多開)完美相容Macos14系統Mac
- 有沒有支援php5.6環境的微信開發工具包PHP