微信公众平台 SDK( .net 版本):weixinSDK.net

jopen 9年前

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在线演示请关注微信公众号:

(1) 鸣创软件(订阅号所有可以实现的功能演示,)

(2) 慢做菜(基于WeixinSDK实现的菜谱查询服务)

(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.捐助

如果这个项目对您有用,我们欢迎各方任何形式的捐助,也包括参与到项目代码更新或意见反馈中来。谢谢!资金捐助:



项目主页:http://www.open-open.com/lib/view/home/1428478160010