微信公眾平臺 SDK( .net 版本):weixinSDK.net
weixinSDK.net 是一個超級輕量級的,像 Python 一樣自由書寫代碼的微信公眾平臺 SDK( .net 版本)。
1.使用對象
本API目前只針對微信公眾平臺開發者文檔所有API進行包裝:http://mp.weixin.qq.com/wiki/home/index.html
也就是微信服務號和訂閱號的開發,不支持微信企業號和移動端API。
但是不排除企業號和移動端API共有部分的調用,對于這部分本SDK不保證其能調用成功。
2.API包裝的核心思想
運用Dynamic(.net 4.0以及以上版本支持)在程序中傳遞微信所需的結構化(xml,json)對象,減少大量代碼,實現輕量級。 讓您可以像Python一樣書寫代碼。
3.SDK優勢
(1)輕量級,摒棄了大量對微信API調用過程中的傳遞對象的包裝,代碼至少減少1/2,和同級.net版本的微信SDK相比是最輕量級的。
(2)結構清晰,和官方API列表一一對應,便于開發者快速定位。
(3)簡單靈活,只包裝官方最底層的,最原始的API,便于開發者自由發揮。
4.API目錄說明
(1)AcceptMessageAPI.cs 對應微信API的 "接收消息" 注意:驗證消息真實性在BasicAPI的CheckSignature中. 接收消息文字、圖片、視頻、音頻、位置、鏈接和事件消息都包裝在AcceptMessageAPI.Parse(string message)方法中, 因為他們都可以歸為消息,所以只需要提供一個統一的解析方法即可。當然,這個方法返回的是一個動態對象。 接受語音識別消息,只是在返回的語音消息xml數據中多了Recognition(注:需要公眾號有接收語音識別結果的權限)
(2)AdvanceMassReplayMessageAPI.cs 對應微信API的 "發送消息”=》"高級群發消息接口"
(3)BasicAPI.cs 對應微信API的 "基礎支持"
(4)CustomMenuAPI.cs 對應微信API的 "自定義菜單管理"
(5)InterfaceStatisticsAPI.cs 對應微信API的 "數據統計接口" =>"接口分析數據接口"
(6)MessageStatisticsAPI.cs 對應微信API的 "數據統計接口" =>"消息分析數據接口"
(7)MutliServiceAPI.cs 對應微信API的 "多客服功能"
(8)NewsStatisticsAPI.cs 對應微信API的 "數據統計接口" =>"圖文分析數據接口"
(9)PromotionAPI.cs 對應微信API的 "帳號管理"
(10)ReplayActiveMessageAPI.cs 對應微信API的 "發送消息”=》"客服接口"=>"發送(主動)客服消息"
(11)ReplayPassiveMessageAPI.cs 對應微信API的 "發送消息”=》"被動回復消息"
(12)ServiceAdminAPI.cs 對應微信API的 "多客服功能"=>"客服管理"
(13)SmartAPI.cs 對應微信API的 "智能接口"
(14)TemplateMessageAPI.cs 對應微信API的 "發送消息”=》"模板消息接口"
(15)UserAdminAPI.cs 對應微信API的 "用戶管理"
注 意:獲取用戶地理位置在接受Location事件時獲取,解析地址位置數據包在AcceptMessageAPI.Parse(string message)方法中,詳細見:(2)AcceptMessageAPI.cs 。 網頁授權獲取用戶基本信息和獲取用戶網絡狀態(JS)接口暫時不包含在本SDK中。
(16)UserStatisticsAPI.cs 對應微信API的 "數據統計接口" =>"用戶分析數據接口"
(17)JSSDK/JSAPI.cs 對應微信API的 "微信JS接口" =>"微信JS-SDK說明文檔" =>"附錄1-JS-SDK使用權限簽名算法"
(18)微信支付
Pay/WxPayAPI.cs 對應微信支付API =>公共API Pay/WxMicroPayAP.cs 對應微信支付API =>被掃支付 Pay/WxBizPayAP.cs 對應微信支付API =>掃碼原生支付 官方文檔:http://pay.weixin.qq.com/wiki/doc/api/index.php
其中微信內網頁支付 Demo已經在SDK中實現,具體請參考:
Deepleo.Web/Controllers/WXPayController.cs
Deepleo.Web/Controllers/JSSDKController.cs/Pay
Deepleo.Web/Views/JSSDK/Pay.cshtml
(19)OAuth2API.cs 對應微信API的 用戶管理=》 "網頁授權獲取用戶基本信息”
(20)微信卡券
Card/CreateCardAPI.cs 創建卡券接口 Card/SendCardAPI.cs 卡券投放接口 Card/UseCardAPI.cs 卡券核銷接口 Card/ManageCardAPI.cs 卡券管理接口 Card/Special 特殊卡票接口 Card/TestWhiteAPI.cs 設置測試用戶白名單
(21) 微信小店(微信商鋪API手冊V1.15)
Merchant/ProductAPI.cs 商品管理接口 Merchant/ExpressAPI.cs 郵費模板管理接口 Merchant/StockAPI.cs 庫存管理接口 Merchant/GroupAPI.cs 分組管理接口 Merchant/ShelfAPI.cs 貨架管理接口 Merchant/OrderAPI.cs 訂單管理接口 Merchant/CommonAPI.cs 功能接口
設備功能接口暫未開發。
5.demo Deepleo.Web項目,請編譯后發布到服務器,并修改web.config(appid,appsecrect,Token,EncodingAESKey), 在后臺將服務地址改為:[域名]/weixin。demo在線演示請關注微信公眾號:
(3) http://weixinsdk.deepleo.com/jssdk (js-sdk演示,需要在微信中打開, 由于本公眾號只是未認證訂閱號,故請對照后臺權限測試)
6.問題幫助
1)API返回的Dynamic對象應該如何使用?
答:如果您調用API,return的是 a.由DynamicJson.Parse轉換而來,您可以用.[屬性名稱] 訪問到該屬性的值; 譬如 BasicAPI.cs中GetAccessToken: var token = DynamicJson.Parse(result.Content.ReadAsStringAsync().Result); 那么調用時:string newToken = BasicAPI.GetAccessToken(AppId, AppSecrect).access_token; b.如果是DynamicXml轉換而來的,您可以用.[屬性名稱].Value 訪問到該屬性的值; 譬如 AcceptMessageAPI.cs中Parse: msg.Body = new DynamicXml(message); string msgType = msg.Body.MsgType.Value;
2) demo項目發布之前如何配置?
答:需要修改web.config里appSettings節點下關于網站配置和微信相關配置,如果不需要的功能不用填寫。 讀取這些配置的類在App_start/WeixinConfig.cs中,您可以根據自己的業務邏輯更改實現方式。 譬如,如果您一個網站需要管理多個微信公眾號的情況。
7.注意事項
1)由于本SDK只是簡單包裝了官方API,API調用有諸多限制(譬如權限限制,次數限制),所以開發者還是需要仔細閱讀官方文檔。
2)微信現在還不是很成熟,如果遇到調用失敗的問題,請查看官方公告或者多試幾次。
3)微信公眾平臺可以申請測試號,如果您的產品已經上線,但是發布新功能還沒有在生產環境中驗證過,申請測試號是不錯的選擇。
4)微信自帶開發者問答系統,上面都是前車之鑒,有一定參考價值。
8.源代碼托管:https://github.com/night-king/weixinSDK
9.鄭重申明
本SDK不收費,堅持開源,沒有未公開的api,項目中的代碼是我自己開發過的項目積累。
10.捐助
如果這個項目對您有用,我們歡迎各方任何形式的捐助,也包括參與到項目代碼更新或意見反饋中來。謝謝!資金捐助: