微信C# SDK
=================
微信公众号:Senparc.Weixin.MP.dll
-----------------
微信企业号:Senparc.Weixin.QY.dl
-----------------
微信开放平台:Senparc.Weixin.Open.dll
-----------------
本库为.NET4.5,其他.NET版本请看各自分支。
* 已经支持所有微信6 API,包括自定义菜单/个性化菜单、模板信息接口、素材上传接口、群发接口、多客服接口、支付接口、微小店接口、卡券接口等等。
> (同时由于易信的API目前与微信保持一致,此SDK也可以直接用于易信,如需使用易信的自定义菜单,通用接口改成易信的通讯地址即可)
* 已经支持用户会话上下文(解决服务器无法使用Session处理用户信息的问题)。
* 已经全面支持微信公众号、企业号、开放平台的最新API。
* 已经支持分布式缓存及缓存策略扩展。
目前官方的API都已完美集成,除非有特殊说明,所有升级都会尽量确保向下兼容,所以已经发布的版本请放心使用或直接升级(覆盖)最新的[Senparc.Weixin.MP.dll](https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.BuildOutPut)、[Senparc.Weixin.QY.dll](https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.BuildOutPut) 、[Senparc.Weixin.Open.dll](https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.BuildOutPut) 或 [Senparc.Weixin.dll](https://github.com/JeffreySu/WeiXinMPSDK/tree/master/Senparc.Weixin.MP.BuildOutPut) 。
如果需要使用或修改此项目的源代码,建议先Fork。也欢迎将您修改的通用版本Pull Request过来。
资源
----------------
1. 官网地址:http://weixin.senparc.com/
2. 系列教程:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html
3. 微信技术交流社区:http://www.weiweihi.com/QA
4. 自定义菜单在线编辑工具:http://weixin.senparc.com/Menu
5. 在线消息测试工具:http://weixin.senparc.com/SimulateTool
6. 缓存测试工具:http://weixin.senparc.com/Cache/Test
7. 源代码及最新更新:https://github.com/JeffreySu/WeiXinMPSDK
技术交流QQ群(目前未满可加:3群、8群,其他群均已满):
1群:300313885,2群:293958349,3群:342319110,4群:372212092
5群:377815480,6群:425898825,7群:482942254,8群:106230270
业务联系QQ:498977166
新浪微博:[@苏震巍](http://weibo.com/jeffreysu1984)
如果这个项目对您有用,我们欢迎各方任何形式的捐助,也包括参与到项目代码更新或意见反馈中来。谢谢!
资金捐助: [进入主页](http://weixin.senparc.com)
###关注测试账号(SenparcRobot):
[![qrcode]](http://weixin.senparc.com/)
[qrcode]: http://weixin.senparc.com/Images/qrcode.jpg
微信公众平台开发系列教程:http://www.cnblogs.com/szw/archive/2013/05/14/weixin-course-index.html
项目文件夹说明
--------------
> Senparc.Weixin.MP.BuildOutPut:所有最新版本DLL发布文件夹
> Senparc.Weixin.MP.MvcExtension:Senparc.Weixin.MP.MvcExtension.dll源码,为MVC4.0项目提供的扩展包。
> Senparc.Weixin.MP.Sample:可以直接发布使用的Demo(ASP.NET MVC 4.0)
> Senparc.Weixin.MP.Sample.WebForms:可以直接发布使用的Demo(ASP.NET WebForms)
> Senparc.Weixin.MP:Senparc.Weixin.MP.dll 微信公众账号SDK源代码
> Senparc.Weixin.QY:Senparc.Weixin.QY.dll 微信企业号SDK源代码
> Senparc.Weixin.Open:Senparc.Weixin.Open.dll 第三方开放平台SDK源代码
> Senparc.Wiexin:所有Senparc.Weixin.[x].dll 基础类库源代码
Senparc.Weixin.MP.Sample中的关键代码说明
--------------
>注:这是MVC项目,WebForms项目见对应Demo中的Weixin.aspx。
###/Controllers/WeixinController.cs
下面的Token需要和微信公众平台后台设置的Token同步,如果经常更换建议写入Web.config等配置文件(实际使用过程中两列建议使用数字+英文大小写改写Token,Token一旦被破解,微信请求将很容易被伪造!):
```C#
public readonly string Token = "weixin";
```
下面这个Action(Get)用于接收并返回微信后台Url的验证结果,无需改动。地址如:http://domain/Weixin或http://domain/Weixin/Index
```C#
/// <summary>
/// 微信后台验证地址(使用Get),微信后台的“接口配置信息”的Url填写如:http://weixin.senparc.com/weixin
/// </summary>
[HttpGet]
[ActionName("Index")]
public ActionResult Get(PostModel postModel, string echostr)
{
if (CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
{
return Content(echostr); //返回随机字符串则表示验证通过
}
else
{
return Content("failed:" + postModel.Signature + "," + MP.CheckSignature.GetSignature(postModel.Timestamp, postModel.Nonce, Token) + "。" +
"如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。");
}
}
```
上述方法中的PostModel是一个包括了了Signature、Timestamp、Nonce(由微信服务器通过请求时的Url参数传入),以及AppId、Token、EncodingAESKey等一系列内部敏感的信息(需要自行传入)的实体类,同时也会在后面用到。
下面这个Action(Post)用于接收来自微信服务器的Post请求(通常由用户发起),这里的if必不可少,之前的Get只提供微信后台保存Url时的验证,每次Post必须重新验证,否则很容易伪造请求。
```C#
/// <summary>
/// 用户发送消息后,微信平台自动Post一个请求到这里,并等待响应XML
/// </summary>
[HttpPost]
[ActionName("Index")]
public ActionResult Post(PostModel postModel)
{
if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
{
return Content("参数错误!");
}
...
}
```
###如何处理微信公众账号请求?
Senparc.Weixin.MP提供了2中处理请求的方式,[传统方法](https://github.com/JeffreySu/WeiXinMPSDK/wiki/处理微信信息的常规方法)及使用[MessageHandler](https://github.com/JeffreySu/WeiXinMPSDK/wiki/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8MessageHandler%E7%AE%80%E5%8C%96%E6%B6%88%E6%81%AF%E5%A4%84%E7%90%86%E6%B5%81%E7%A8%8B)处理方法(推荐)。上面两个方法在wiki中已经有比较详细的说明,这里简单举例MessageHandler的处理方法。
MessageHandler的处理流程非常简单:
``` C#
[HttpPost]
[ActionName("Index")]
public ActionResult Post(PostModel postModel)
{
if (!CheckSignature.Check(postModel.Signature, postModel.Timestamp, postModel.Nonce, Token))
{
return Content("参数错误!");
}
postModel.Token = Token;
postModel.EncodingAESKey = EncodingAESKey;//根据自己后台的设置保持一致
postModel.AppId = AppId;//根据自己后台的设置保持一致
var messageHandler = new CustomMessageHandler(Request.InputStream, postModel);//接收消息(第一步)
messageHandler.Execute();//执行微信处理过程(第二步)
return new FixWeixinBugWeixinResult(messageHandler);//返回(第三步)
}
```
整个消息除了postModel的赋值以外,接收(第一步)、处理(第二步)、返回(第三步)分别只需要一行代码。
上述代码中的CustomMessageHandler是一个自定义的类,继承自Senparc.Weixin.MP.MessageHandler.cs。MessageHandler是一个抽象类,包含了执行各种不同请求类型的抽象方法(如文字,语音,位置、图片等等),我们只需要在自己创建的CustomMessageHandler中逐个实现这些方法就可以了。刚建好的CustomMessageHandler.cs如下:
```C#
using System;
using System.IO;
using Senparc.Weixin.MP.MessageHandlers;
using Senparc.Weixin.MP.Entities;
namespace Senparc.Weixin.MP.Sample.CustomerMessageHandler
{
public class CustomMessageHandler : Messa
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
* 已经支持所有微信6 API,包括自定义菜单/个性化菜单、模板信息接口、素材上传接口、群发接口、多客服接口、支付接口、微小店接口、卡券接口等等。 > (同时由于易信的API目前与微信保持一致,此SDK也可以直接用于易信,如需使用易信的自定义菜单,通用接口改成易信的通讯地址即可) * 已经支持用户会话上下文(解决服务器无法使用Session处理用户信息的问题)。 * 已经全面支持微信公众号、企业号、开放平台的最新API。 * 已经支持分布式缓存及缓存策略扩展。 目前官方的API都已完美集成,除非有特殊说明,所有升级都会尽量确保向下兼容,所以已经发布的版本请放心使用或直接升级(覆盖)最新的
资源推荐
资源详情
资源评论


















收起资源包目录





































































































共 1179 条
- 1
- 2
- 3
- 4
- 5
- 6
- 12

huangyueranbbc
- 粉丝: 617
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- ORACLE数据备份与数据恢复专项方案.doc
- 物体检测、图像分类在线API服务框架,从小宠物识别入手
- 电子商务案例分析教学大纲.doc
- 系统软件用户手册模板.doc
- Python电子教案41程序的控制结构省公共课一等奖全国赛课获奖课件.pptx
- weblogic与tuxedo配置详解.doc
- 企业网站六大功效介绍.doc
- 办公软件操作培训PPT.ppt
- 大数据的十大来源及其应用价值.doc
- 单片机IO扩展8155(课堂PPT).ppt
- 校园宽带网络设计方案.doc
- 数学软件Matlab专题培训.pptx
- 互联网对人们生活的影响PPT学习课件.ppt
- 基于单片机的电子密码锁及程序.doc
- 计算机病毒的特点.doc
- 计算机网络基础安全知识优秀PPT.ppt
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



安全验证
文档复制为VIP权益,开通VIP直接复制

- 1
- 2
前往页