目錄
3.2 函數管理器——WeChatFrameworkFuncsManager 9
3.2.2 獲取公眾號配置——Config_GetWeChatConfigByKey 12
3.3 配置管理器——WeChatConfigManager 13
3.4 接口上下文對象——WeChatApisContext 15
-
概要
博客使用Word發博,發布后,排版會出現很多問題,敬請諒解。另外Word發博代碼格式顯示凌亂,因此相關代碼均使用圖片替代。可加群獲取原始文檔。
本篇主要對MAGICODES.WECHAT.SDK進行簡單總體的介紹。通過本篇教程,您可以對Magicodes.WeChat.SDK進行一個全面的了解。
注意:MAGICODES.WECHAT.SDK為心萊團隊封裝的輕量級微信SDK,現已全部開源,開源庫地址為:https://github.com/xin-lai/Magicodes.WeChat.SDK
官方博客:http://www.cnblogs.com/codelove/
相關開源庫地址:https://github.com/xin-lai
交流QQ群(Magicodes開源庫交流群):346487194
Nuget包地址:https://www.nuget.org/packages?q=magicodes
-
主要特點

主要特點如上所示,下面再說點細節:












-
架構圖

-
構造器——WeChatSDKBuilder
構造器用於構造SDK的一些初始化配置,比如日志記錄器、存儲器等。
為了方便擴展,日志記錄器使用了Magicodes.Logger,存儲器使用了Magicodes.Storage,這兩個均為開源庫,開源地址為:https://github.com/xin-lai
Magicodes.Logger目前提供了DebugLogger和NLog的具體實現,如果不滿足需求,您完全可以編寫自己的實現。
Magicodes.Storage目前實現了本地資源存儲,即將實現阿里雲、windows Azure等雲存儲。
了解了這些,我們接下來的需要知道的是:
在程序初始化時,我們需要構建這些對象,如下所示:

通過構造器設置了Api日志記錄器之后,所有的API請求都會有相應的日志級別的日志輸出。設置了支付日志記錄器之后,所有的支付請求均由此記錄器記錄相關數據。存儲提供程序后續會用到,目前是預留。
注意Create和Build方法,請不要試圖new構造器,請使用Create來返回一個,處理完了之后,切記一定要調用Build方法,否則,你的設置是無效設置。
-
函數管理器——WeChatFrameworkFuncsManager
WeChatFrameworkFuncsManager是本SDK的函數總管,通過它可以注冊各種函數,以便更方便的使用本SDK。WeChatFrameworkFuncsManager是懶加載單例設計,請不要new。其有以下幾個主要方法:

這個是一個比較簡單的設計,不過值得注意的是,函數不是瞎注冊就行的,為了便於大家對號入座,這里使用了一個枚舉來對應相關的業務:

也許從以上內容並不能很好的幫助你理解這個設計,我們來幾段注冊的代碼看看:
-
獲取Key——GetKey
使用租戶Id作為Key,以確保不同的租戶加載不同的公眾號配置:

也可以寫死,如下所示:

-
獲取公眾號配置——Config_GetWeChatConfigByKey
根據Key從數據庫獲取:

The Same,也可以寫死:

注意,SDK只有配置沒有緩存的情況下,才會觸發該函數的執行。
-
其他
其他的就不多說了。簡單說明如下所示:
Config_GetWeChatPayConfigByKey:獲取支付配置,可以在此編寫獲取支付配置的邏輯
APIFunc_TemplateMessageApi_Create:模板消息發送成功函數,可以在此記錄發送日志
APIFunc_QRCodeApi_Create:已棄用
APIFunc_GetAccessToken:獲取AccessToken。用於中控服務器模式,即從中控服務器獲取Accesstoken
-
配置管理器——WeChatConfigManager
WeChatConfigManager為配置管理器,顧名思義,就是管理各種配置和憑據,並且維護其過期時間。WeChatConfigManager是懶加載單例設計,請不要new。
目前存儲有以下內容:
- 公眾號配置信息
- 微信支付配置信息
- 訪問憑據
- 憑證
其有以下方法可供使用:

-
接口上下文對象——WeChatApisContext
WeChatApisContext即接口上下文對象,該類為懶加載單例模式。通過WeChatApisContext. Current來訪問。
一般情況下,使用該對象可以輕松訪問所有的接口,如下自定義菜單的查詢接口調用所示:

又如下面例子,二維碼接口調用示例:

通常情況下,我們是極力推薦以上方式來調用接口。但是,也有例外的情形,比如Key的注冊函數是依賴Cookie、Sesstion等對象的,而在某些情形下(比如公眾號服務器事件響應中),無法通過這些對象獲取到key,這時,就需要通過以下方式來調用了。

-
開發實踐
-
開發流程圖
-

-
自定義菜單API調用Demo
-
初始化配置
-

這里配置了構造器,然后注冊了兩個函數,分別用於獲取Key以及獲取公眾號配置。
-
使用

如上面所示,通過WeChatApiContext獲取接口,然后調用基本無需額外傳遞配置參數和Token等。針對業務情況,部分復雜API還支持通過JSON字符串來調用(內部會根據JSON字符串結合轉換器來反序列化)。,
