- 微信公眾平臺企業號開發揭秘
- 蔣書平
- 2509字
- 2019-12-06 14:42:49
3.2 回調模式
登錄企業號,在頁面右上方單擊“開發者中心”選項進入開發者中心,然后單擊“開發文檔”→“開始開發”選項,選擇回調模式,參考里面的開發文檔。
3.2.1 回調模式概述
關于回調模式,主要概括為兩個要點,第一點是處于回調模式下,可以主動調用企業號接口,還可以接收成員的消息和事件,第二點是每個應用都有自己開發回調模式的開關,可以在管理端設置相關參數。
3.2.2 使用回調模式所需加解密庫下載
關于回調模式的開啟和交互,需要我們下載加解密庫,官方提供多種語言版本,可以自行下載。大家也可以關注筆者的微信企業號獲取下載地址。
3.2.3 接收消息的加解密處理
企業號在回調企業URL時,會對消息體本身做AES加密,以XML格式POST到企業應用的URL上。企業在被動響應時,也需要對數據加密,以XML格式返回給微信。企業的回復支持文本、圖片、語音、視頻、圖文等格式。下載微信官方提供的加解密庫之后,將需要替換的庫文件替換掉即可,然后調用加解密函數進行開發。
3.2.4 編寫加解密調用函數
為了方便大家學習,筆者新建了一個微信企業號項目,從零開始、一點一滴地把整個開發流程全部詳細地講解和展示出來。新建一個項目,然后下載官方網站提供的加解密Java庫并解壓,復制到自己新建的項目下。為了方便管理,最好新建一個新的包名,注意命名規范,然后將其復制到該包名下,導入需要用到的第三方jar,后面會告訴大家需要哪些第三方jar。接下來開始編寫新的工程。在編寫之前一定要替換JDK的jat,官方網站的文檔如圖3-14所示。

圖3-14 替換JDK及導入三方jar
圖3-14說明的內容如下。
(1)com\qq\weixin\mp\aes目錄下是用戶需要用到的接入企業微信的接口,其中WXBizMsgCrypt.java文件提供的WXBizMsgCrypt類封裝了用戶接入企業微信的三個接口,其他類文件用于實現加解密,用戶無須關心。sample.java文件提供了接口的使用示例。
(2)WXBizMsgCrypt封裝了VerifyURL、DecryptMsg、EncryptMsg三個接口,分別用于開發者驗證回調url、接收消息的解密以及開發者回復消息的加密過程。使用方法可以參考Sample.java文件。
(3)請開發者使用jdk1.6或以上版本。針對org.apache.commons.codec.binary.Base64,需要導入jar包commons-codec-1.9(或comm ons-codec-1.8等其他版本),官方下載地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi。
(4)異常java.security.InvalidKeyException:illegal Key Size的解決方案:在官方網站下載JCE無限制權限策略文件(請到官網下載對應的版本,例如JDK7的下載地址:http://www.oracle.com/ technetwork/java/javase/downloads/jce-7-download-432124.html)。下載后解壓,可以看到local_policy.jar、US_export_policy.jar以及readme.txt。如果安裝了JRE,就將兩個jar文件放到%JRE_HOME% \lib\security目錄下覆蓋原來的文件;如果安裝了JDK,就將兩個jar文件放到%JDK_HOME%\jre\lib\security目錄下覆蓋原來的文件。
全部完成之后,打開MyEclipse,開始新項目的編寫。首先看看項目的主要構成(見圖3-15),再開展后面的工作。

圖3-15 初次編寫的項目結構
jsp.weixin.encryption.util下的類都來自微信官方網站下載的加解密庫,ParamesAPI主要是一些需要配置的參數,后面需要修改時可以更快地找到對應的參數并修改。CoreServlet為核心的請求、外發類,包括加密、解密消息。注意導入需要的jar,web.xml、index.jsp的相關配置也會詳細介紹。

上述代碼是參數類的配置,接下來再編寫一個請求類CoreServlet。



這是需要寫的核心請求類,寫完這個類開始配置xml、index文件。

在index.jsp里配置一下驗證信息,信息可以隨意填寫,如筆者填寫的是英文筆名。

在body標簽對之間輸入一些特定的內容,待瀏覽器打開該頁面時,可查看內容是否一致。
整個項目完成之后,需要再部署一次,在本地驗證一遍,最后上傳到服務器,如圖3-16所示。

圖3-16 部署新的項目
按圖3-16所示的步驟操作,最后單擊“OK”按鈕,再打開瀏覽器,輸入地址http://localhost/ WeiXinEnterprises。如果服務器配置端口為8080,地址需要這樣寫http://localhost:8080/ WeiXinEnterprises,輸完后按回車鍵,跳到默認的index.jsp頁面,如圖3-17所示。

圖3-17 本地測試OK
3.2.5 項目提交到服務器
按圖3-16操作后,會在Tomcat安裝路徑下的webapps目錄下生成對應的項目,需要把項目上傳到服務器部署或打包成WAR,通過Web Manager的方式提交。下面給大家介紹兩種上傳方式。
第一種方式是Web Manager 上傳,首先按圖3-18所示操作,把項目導出。
單擊Export選項進入如圖3-19所示的界面,單擊J2EE選項展開其子選項,再選擇WAR file選項,然后單擊“Next”按鈕進入如圖3-20所示的界面,最后單擊“Finish”按鈕即可。

圖3-18 項目打包成WAR

圖3-19 選擇WAR file

圖3-20 導出WAR文件
在瀏覽器中輸入服務器地址,打開遠程服務器管理頁面,如圖3-21所示,輸入用戶名和密碼,再單擊“確定”按鈕。

圖3-21 遠程登錄管理頁面
登錄成功后,進入如圖3-22所示的界面,拖動頁面至底部,單擊“選擇文件”按鈕,彈出文件選擇框,找到剛剛導出項目的WAR文件并選中,再單擊“打開”按鈕,最后單擊“Deploy”按鈕即可開始上傳項目的WAR文件。

圖3-22 上傳WAR文件
上傳完成后,往上拖動頁面至Applications表格并單擊WeiXinEnterprises選項,可查看WeiXinEnterprises項目的默認頁面。
在瀏覽器中輸入項目地址并訪問該地址,項目部署成功的界面如圖3-23所示。

圖3-23 項目部署成功
第二種方式是直接復制本地webapps目錄下的對應項目到服務器Tomcat安裝路徑下的webapps目錄,如圖3-24所示。

圖3-24 在服務器部署
重啟服務器端Tomcat,在瀏覽器中輸入項目訪問地址即可查看該項目的默認頁面。
3.2.6 開啟回調模式
登錄企業號,進入企業號管理后臺的“企業應用”頁面。開啟回調模式之前需要選擇一個應用,然后填寫相關的參數。筆者選擇“Android趣味堂”作為開啟回調模式的應用,如圖3-25所示。當然,其他應用也可以開啟回調模式。

圖3-25 選擇開啟回調模式的應用
單擊這個應用,進入該應用的詳細信息頁面,如圖3-26所示。找到接收消息選項,單擊“設置API接收”選項,進入如圖3-27所示的界面,開始填寫開啟回調模式的相關信息和配置項。

圖3-26 單擊“設置API接收”選項

圖3-27 填寫回調模式配置信息
接下來詳細介紹3個參數的意義,以及怎么獲取并開啟回調模式。
- URL:為發布和部署應用的服務器的域名,具體怎么填寫后面會講。
- Token:為后臺驗證需要,在這里的Token需要跟后臺,即我們寫的回調應用里的Token。
- EncodingAESKey:為后臺隨機生成的。
如圖3-28所示的代碼為開啟回調模式需要的參數。

圖3-28 需要的參數
Secret參數的獲取方式是,進入企業號管理后臺,單擊“企業應用”選項,進入“企業應用”頁面,如圖3-29所示。
在“企業應用”頁面單擊所要調試的應用后,進入應用詳情頁面,如圖3-30所示,框內的內容就是Secret參數了。

圖3-29 進入“企業應用”頁面

圖3-30 獲取Secret
需要注意的一點是,EncodingAESKey參數是有時間限制的,如果長時間沒有使用,配置回調模式就會失敗,需要再次生成新的密鑰才行,所以EncodingAESKey生成之后需要盡快使用,如圖3-31所示。
參數填寫完之后,單擊“保存”按鈕,等待返回結果。
如圖3-32所示的界面為成功開啟回調模式。

圖3-31 填寫參數

圖3-32 回調模式開啟成功
成功開啟回調模式之后,就可以使用回調模式、測試回調模式了。