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
- 微信開發的本地除錯環境搭建除錯
- 鴻蒙系統系列教程5-鴻蒙開發環境的搭建鴻蒙開發環境
- 微信小程式開發環境搭建微信小程式開發環境
- 微信小程式開發系列(一) :開發環境搭建和微信小程式的檢視設計與開發微信小程式開發環境
- JAVA學習系列之一-搭建開發環境Java開發環境
- SAP Cloud for Customer(C4C)和微信整合系列教程Cloud
- 微信開發系列教程(二)
- 基於mpvue框架搭建微信小程式開發環境Vue框架微信小程式開發環境
- MongoDB 入門教程系列之一:開發環境搭建以及 Node.js 和 Java 的讀寫訪問MongoDB開發環境Node.jsJava
- C#微信開發系列教程C#
- 開發環境搭建之一,Clion的下載和安裝開發環境
- Android的開發環境搭建教程Android開發環境
- ubuntu系統中java開發環境的搭建UbuntuJava開發環境
- 微信小程式開發系列教程三:微信小程式的除錯方法微信小程式除錯
- ssh整合步驟之一(搭建環境)
- phpwamp開發環境搭建詳解,phpwamp綠色整合環境開發環境一鍵搭建PHP開發環境
- eclipse整合weblogic開發環境的搭建EclipseWeb開發環境
- Linux開發環境搭建——deepin系統的使用Linux開發環境
- 微信公眾號開發-開發環境搭建並通過java程式碼獲取微信access_token開發環境Java
- 微信整合CRM系統的好處
- 微信小程式開發–視訊教程系列微信小程式
- flutter開發系列(搭建基礎的flutter環境)Flutter
- Thinkphp開發的微信電商管理系統PHP
- Windows10系統下LAMP開發環境的搭建WindowsLAMP開發環境
- FFmpeg開發筆記(一)搭建Linux系統的開發環境筆記Linux開發環境
- 在 Ubuntu 18.04 上 搭建微信小程式和公眾號應用開發環境Ubuntu微信小程式開發環境
- 微信小程式開發系列六:微信框架API的呼叫微信小程式框架API
- 微信程式開發系列教程(三)使用微信API給微信使用者發文字訊息API
- EAS系統環境的搭建
- win10系統搭建Apache和PHP開發環境的解決方法Win10ApachePHP開發環境
- SAP與Borland合作 ,整合JAVA開發環境 (轉)Java開發環境
- Windows系統中搭建python開發環境WindowsPython開發環境
- 寫作業系統之搭建開發環境作業系統開發環境
- ThinkPHP+Mysql開發的微信商城系統PHPMySql
- 搭建vue的開發環境Vue開發環境