目錄 git
1 概要 1github
2 主要特色 2數據庫
3 架構圖 8windows
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
主要特色如上所示,下面再說點細節:
構造器用於構造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是本SDK的函數總管,經過它能夠註冊各類函數,以便更方便的使用本SDK。WeChatFrameworkFuncsManager是懶加載單例設計,請不要new。其有如下幾個主要方法:
這個是一個比較簡單的設計,不過值得注意的是,函數不是瞎註冊就行的,爲了便於你們對號入座,這裏使用了一個枚舉來對應相關的業務:
也許從以上內容並不能很好的幫助你理解這個設計,咱們來幾段註冊的代碼看看:
使用租戶Id做爲Key,以確保不一樣的租戶加載不一樣的公衆號配置:
也能夠寫死,以下所示:
根據Key從數據庫獲取:
The Same,也能夠寫死:
注意,SDK只有配置沒有緩存的狀況下,纔會觸發該函數的執行。
其餘的就很少說了。簡單說明以下所示:
Config_GetWeChatPayConfigByKey:獲取支付配置,能夠在此編寫獲取支付配置的邏輯
APIFunc_TemplateMessageApi_Create:模板消息發送成功函數,能夠在此記錄發送日誌
APIFunc_QRCodeApi_Create:已棄用
APIFunc_GetAccessToken:獲取AccessToken。用於中控服務器模式,即從中控服務器獲取Accesstoken
WeChatConfigManager爲配置管理器,顧名思義,就是管理各類配置和憑據,而且維護其過時時間。WeChatConfigManager是懶加載單例設計,請不要new。
目前存儲有如下內容:
其有如下方法可供使用:
WeChatApisContext即接口上下文對象,該類爲懶加載單例模式。經過WeChatApisContext. Current來訪問。
通常狀況下,使用該對象能夠輕鬆訪問全部的接口,以下自定義菜單的查詢接口調用所示:
又以下面例子,二維碼接口調用示例:
一般狀況下,咱們是極力推薦以上方式來調用接口。可是,也有例外的情形,好比Key的註冊函數是依賴Cookie、Sesstion等對象的,而在某些情形下(好比公衆號服務器事件響應中),沒法經過這些對象獲取到key,這時,就須要經過如下方式來調用了。
這裏配置了構造器,而後註冊了兩個函數,分別用於獲取Key以及獲取公衆號配置。
如上面所示,經過WeChatApiContext獲取接口,而後調用基本無需額外傳遞配置參數和Token等。針對業務狀況,部分複雜API還支持經過JSON字符串來調用(內部會根據JSON字符串結合轉換器來反序列化)。,