1. 程式人生 > >微信企業號開發原始碼Java編寫,懶人開發一鍵式部署專案,WeChatEnterprise框架你值得擁有

微信企業號開發原始碼Java編寫,懶人開發一鍵式部署專案,WeChatEnterprise框架你值得擁有

幾年前無意間接觸了微信公眾平臺開發,這個在當時還是一個新鮮的事物,但現在已經很流行了,發展的型別也特別的多,比如訂閱號、服務號、小程式、微信企業號等,這些產品在人們日常的生活與開發中,都是非常常見的。

當時的博主也順應時代的變化,去嘗試著開發公眾平臺,到目前為止也算得上是得心應手了吧,但平時我不會去開發這種東西,因為我的本職是做Android開發的,所以我會選擇在下班或休息時間去專研一下,當然付出是肯定的,目的不是收穫,而是積累更多的新知識。最近博主總結了前面做過的微信公眾號開發、微信企業號開發的一些思緒,為大家謀了一些福利吧,就是之前寫的一些資源需要CSDN下載積分,或者視訊教學需要錢,但這次博主抽出時間,把企業號開發相關的介面全部整合優化了一遍,也就是WeChatEnterprise

框架了。

回首前面幾年我的成果,博主並不覺得自己是什麼大神,是跟你們一樣的菜鳥,打工仔一枚,只是平時喜歡專研一些技術相關的東西罷了。

最初的原始碼資源成果,從最初的三次下載量,達到了2450多次,好評率80%以上,但是博主後面發現這個資源莫名其妙的從下載5積分漲到了30積分,還有就是檔案有時候下載下來是個rar不帶任何字尾,這個是CSDN的問題,絕對不是博主的問題,畢竟30積分對不常玩CSDN的人來說,還是有點高的。

跟CSDN合作的企業號開發視訊教學也收穫了22740多學員,這也是讓我感到很欣慰的,但是出於博主個人的原因,這個視訊博主個人覺得是不合格的,因為聲音常小而且還帶著靦腆,感覺很對不起付費的學員,所以現在準備做一些東西來彌補這個問題,那就是這個懶人式的部署開發框架WeChatEnterprise

後面博主不推薦大家再去購買這個課程,主要是音質真的不好,加上博主初次做視訊,效果真的非常不好,所以不推薦大家再去學習視訊,直接使用懶人框架開發學習完全夠用了,良心推薦這個懶人式的部署開發框架WeChatEnterprise

就連博主新出版的書也是用這個懶人式的部署開發框架WeChatEnterprise開發的,裡面幾乎覆蓋了95%以上的開發介面,以及它們的呼叫、使用。

隨便舉個慄(例)子,如OAuth2授權、二次驗證等

首先看OAuth2授權,這個也全部都封裝好了,可以直接使用。

授權結果:

再來看二次驗證:

二次驗證的結果:

當然這些只是其中的一部分,其他的介面都是已經封裝好的,只需要替換對應的引數即可直接拿來使用。

接下來回到正題,介紹懶人式的部署開發框架WeChatEnterprise的正確使用:

①首先要確保你的伺服器已經搭建好,然後替換微信官方提供解決java.security.InvalidKeyException:illegal Key Size異常的jar包。

jar下載地址: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目錄下覆蓋原來檔案。

②從博主的GitHub上clone或下載框架程式碼,匯入到開發工具,找到wx.api.WXApi類,將其中的Token、EncodingAesKey、CorpId、Secret引數全部填上自己實際開發的引數然後儲存,注意Token、EncodingAesKey引數可到企業號後臺隨機生成也可自定義,但必須要兩端引數完全一致。

③在開發工具中編譯之前匯入修改引數後的WeChatEnterprise框架原始碼,並部署到你的伺服器。隨後進入到微信企業後臺,單擊“應用與小程式”選項,進入頁面後,單擊左側“應用”選項,找到“自建”選項,單擊你要開啟API接收的自建應用,單擊要開啟API接收的自建應用後,進入到自建應用的詳細頁面,找到“接收訊息”選項,單擊“設定API接收”選項,進入到API接收訊息頁面,將隨機生成或自定義的Token、EncodingAesKey一併填寫在開啟API接收訊息的web頁面內對應的方框。注意,此時填寫的Token、EncodingAesKey必須要與WeChatEnterprise框架原始碼下wx.api.WXApi類的Token、EncodingAesKey完全保持一致,否則會一直驗證失敗。接下來在給大家介紹URL引數填寫,這裡預設填寫http://你的伺服器地址或域名地址/WeChatEnterprise/coreServlet,如果需要修改地址的組成,可以修改伺服器的專案root目錄,也就是你伺服器預設訪問的那個專案的首頁面,servlet名稱可修改WeChatEnterprise 框架原始碼下的WebRoot/WEB-INF/web.xml裡servlet-mapping節點的子節點url-pattern,反正最終這個路徑一定是外網下可以被訪問到的,否則也是會一直提示驗證失敗。

④完成以上步驟之後,你離成功部署專案只差一步之遙了,在單擊“儲存”按鈕之前,預設不勾選上報地理位置、上報進入應用事件,博主也不建議勾選,因為勾選後每次進入應用都要提示,很煩人,確認是否勾選之後單擊“儲存”按鈕即可完成開啟API接收,進行後續的訊息收發、自定義選單等介面的操作,部署專案至此就成功了。

接下來繼續給大家介紹WeChatEnterprise 框架的使用以及核心類的解讀。

wx.servlet.WXCoreServlet核心類,WeChatEnterprise框架的訊息出入口

再部署成功之後,所有的訊息請求與收發都在wx.servlet.WXCoreServlet類,這個類將收到的訊息進行校驗,校驗成功之後在解密,解密成功後將協議進行層級分發。該類也是訊息的出口,對傳送和響應出去的訊息進行加密傳送。

wx.protocol.WXProtocolManager核心類,WeChatEnterprise框架的訊息解析、管理、分發等

在成功收到訊息之後,wx.protocol.WXProtocolManager類首先對訊息進行解析,資料無誤之後將會對協議進行分發,依據訊息型別將協議劃分為WXTextProtocolWXImageProtocolWXVoiceProtocolWXVideoProtocolWXLocationProtocolWXLinkProtocolWXEventProtocol七大協議場景,即文字協議、圖片協議、語音協議、視訊協議、位置協議、連結協議、事件協議,其中事件協議WXEventProtocol下又進行了多層級的事件分發。七大協議場景繼承自WeChatEnterprise框架的wx.protocol.WXBaseProtocol基礎協議,也最終將響應的訊息交由wx.protocol.WXBaseProtocol基礎協議通過wx.protocol.WXProtocolManager類響應給wx.servlet.WXCoreServlet核心類,wx.servlet.WXCoreServlet核心類再將響應的訊息進行加密併發送出去。

wx.protocol.WXProtocolManager類協議分發的7大場景下,當某個場景所執行的流程全部完成後,由wx.protocol.WXBaseProtocol基礎協議類releasProtocol方法將該場景釋放,標誌下一場景的開始。

上述都是WeChatEnterprise框架最最核心的部分,其他部分都是獨立開來的,是開發者主動呼叫併發送訊息給關注者。

接下來具體介紹WeChatEnterprise框架各個包的具體功能:

package wx.api

                       ------ 定義了框架的全域性常量、全域性變數 :請求地址、Token、EncodingAesKey、CorpId、Secret、獲取憑證、封裝code請求地址等

package wx.app

                       ------ 應用管理 :獲取應用、設定應用、獲取應用列表

package wx.contact

                       ------ 通訊錄管理 :成員管理、部門管理、標籤管理

                               1.成員管理 :建立成員、讀取(獲取)成員、更新成員、刪除成員、批量刪除成員、獲取部門成員、獲取部門成員詳情、userid to openid、openid to userid、二次驗證、邀請成員、獲取外部聯絡人詳情

                                2.部門管理 :建立部門、更新部門、刪除部門、獲取部門列表

                               3.標籤管理 :建立標籤、更新標籤名字、刪除標籤、獲取標籤成員、增加標籤成員、刪除標籤成員、獲取標籤列表

package wx.encryption

                       ------ 訊息的加解密校驗、請求校驗

package wx.media 

                       ------ 素材管理 : 上傳臨時素材、獲取臨時素材、上傳圖片

package wx.menu

                       ------ 自定義選單 ------ 建立選單、獲取選單、刪除選單

package wx.msg

                       ------ 基礎訊息單元類 :檔案、照片、MpNews、News、Text、TextCard、Video、Voice

package wx.msg.chat.group

                       ------ 群聊 :建立群聊、修改群聊、獲取群聊會話

package wx.msg.push

                     ------- 訊息推送:推送文字訊息、推送圖片訊息、推送語音訊息、推送視訊訊息、推送檔案訊息、推送文字卡片訊息、推送news圖文訊息、推送mpnews訊息

package wx.msg.req 

                      ------ 傳送(請求)訊息:傳送文字訊息、傳送圖片訊息、傳送語音訊息、傳送視訊訊息、傳送檔案訊息、傳送文字卡片訊息、傳送news圖文訊息、傳送mpnews訊息

package wx.msg.resp

                      ------ 被動響應(response) :響應文字訊息、響應音樂訊息、響應圖片訊息、響應音訊訊息、響應視訊訊息、響應圖文訊息

package wx.oauth2 

                       ------ 授權:code換取成員資訊、user_ticket換取使用者資訊

package wx.protocol

                       ------ 協議核心 :協議解析、協議管理、協議分發、協議劃分為7大場景、協議層級下發等

package wx.servlet

                       ------ 請求響應入口 : 訊息的請求與響應、二次驗證、授權登陸、重定向等

package wx.util

                       ------ 工具包 : IO非同步與同步阻塞網路請求、核心訊息工具類、執行緒池管理等

如果你覺得博主寫的程式碼框架不錯並且對你的開發有幫助,請在GitHub的WeChatEnterprise倉庫頁面的右上角點選“Star”,對我的技術分享進行支援,將是我最大的動力,博主會繼續分享更多優質的資源給大家。