基於Flurl.Http
的微信HTTP API SDK,目前已包含公眾平台、開放平台、商家平台、企業微信、廣告平台、對話開放平台等模組。
更多SKIT.FlurlHttpClient 系列開發工具包請點此查看。
Flurl.Http
。System.Text.Json
(預設)和Newtonsoft.Json
兩種序列化方式。名稱 | NuGet | 其他 |
---|---|---|
公眾平台(公眾號、小程式、影片號) + 開放平台模組 | 開發文件|範例項目 | |
商家平台(微信支付)模組(針對v3 版介面) | 開發文件|範例項目 | |
商家平台(微信支付)模組(針對v2 版介面) | 開發文件 | |
企業微信(企業號)模組 | 開發文件 | |
廣告平台(廣點通)模組 | 開發文件 | |
對話開放平台(微信智慧對話)模組 | 開發文件 | |
騰訊微企付模組 | 開發文件 |
Flurl.Http
是什麼? Flurl.Http
是一個輕量級HTTP 庫,是.NET 中最受歡迎擴展庫之一,在NuGet 上的累計下載量超過1700 萬、日均下載量超過6 千、GitHub 2.6k Stars(數據統計截至2021-06-01)。
註:盛派微信SDK 是由蘇震巍先生發起的國內知名的.NET 開源專案。
本庫專注於API 本身的封裝,捎帶提供了一些用於加解密、序列化的工具類,使用起來更加靈活,不限任何框架或項目類型;盛派微信SDK 提供了大而全的功能,與MVC / WebAPI 深度整合。
本函式庫的介面模型遵循的是微軟官方推薦的C# 物件命名方式(帕斯卡命名法);盛派微信SDK 提供的是微信介面本身的命名方式(蛇形命名法和駝峰命名法混雜)。
本庫封裝了目前微信官方提供的幾乎所有API(極個別不支援的已在各模組文件中列出具體原因);盛派微信SDK 只提供了常用的API。
關於這點得吐槽微信提供的API 了,很顯然微信內部也是很多個Team 在共同開發,每個Team、甚至每個人的字段命名風格、約束條件、接口規則都大相徑庭。就連微信支付雖然v3 版API 號稱是「RESTful」 的,卻也沒個統一標準。
舉個例子,以分頁查詢為例,看似欄位相同,都由offset 、 cursor 、 page 、 limit + data 、 total_count 、 next_cursor這幾個欄位構成,但某些介面的offset 、 cursor 、 page 、 limit欄位是可選參數,某些卻是必填項;某些page值從0
起始,某些卻是從1
開始;某些介面的data 、 total_count 、 next_cursor欄位一定會傳回,但某些卻是一定不回,某些只在特定條件下回傳。總共十幾個分頁查詢的接口,卻有七八種分頁的資料結構,這種情況下很難抽像出一個公共的基類出來。
除此之外,同樣一個東西在不同介面裡竟然拼法不一樣;同樣是表示數組有的是JSON、有的卻是字串;諸如此類「奇葩」的情況很多很多。
本專案已經盡可能在條件允許的範圍內抽像出了一些公共基類、並封裝了各種奇怪場景下的自訂JsonConverter。
由於微信的產品業務線眾多,許多業務也需要前置條件才能繼續,截至目前本項目已封裝超過2800 餘個API,雖然同時也編寫了若干單元測試用例,但與數量龐大的API 相比仍遠遠不夠。
本專案嚴格依照微信官方提供的開發文件進行封裝,並利用自動化工具確保封裝結果的正確。但微信的文檔本身品質比較低,所以有錯誤在所難免。
因為微信更新API 很頻繁,對於微信支付或企業微信這種有提供官方更新日誌的,本項目會定期查閱更新;其他平台經常會悄悄地更新一波、讓所有人懵逼。如果你在使用上遇到了因介面或模型定義錯誤而產生的問題,歡迎提出Issue。
項目名稱 | 專案簡介 | 項目地址 |
---|---|---|
CoreShop | 核心商城系統:支援視覺化佈局的.NET 商城系統。 | |
Admin.NET | 站在巨人肩膀上的.NET 通用權限開發框架。 |
註:以上案例均來自第三方,本項目不對其項目做任何保證,僅作列舉展示。如果你有專案也使用了本函式庫、希望加到案例清單中,可以在Issue 中提出(開源、非開源皆可)。
以上倉庫位址同步更新,均可接受Issue 或Pull Request。
如何參與貢獻請參閱CONTRIBUTING。
詳細更新說明請參閱CHANGELOG。