资源简介
对于当前微信消息收发 使用C#实现较好的一个DEMO
Entities/Request*.cs 用于接收微信平台自动发送到服务器的实体(发送过来的是XML),包括文本、位置、图片三类
Entities/Response*.cs 用于反馈给发送人的信息实体(最终会转成XML),包括文本、新闻(图文)两类
Helpers/EntityHelper.cs 用于实体和XML之间的转换(由于其中有许多需要特殊处理的字段和类型,这里不能简单用XML序列化)
Helpers/MsgTypeHelper.cs 用于获取消息类型
CheckSignature.cs 验证请求合法性类
Enums.cs 各种枚举
RequestMessageFactory.cs 用于自动生成不同Request类型的实体,并作必要的数据填充
Senparc.Weixin.MP几个关键类及重要方法(按一般使用过程排序)
生成验证字符串:Senparc.Weixin.MP.CheckSignature.GetSignature(string timestamp, string nonce, string token = null),返回根据微信平台提供的数据,SHA1加密后的验证字符串(注意token必须跟公众平台的设置一直)
验证请求:Senparc.Weixin.MP.CheckSignature.Check(string signature, string timestamp, string nonce, string token = null),验证请求是否合法
获取请求实体:var requestMessage = Senparc.Weixin.MP.RequestMessageFactory.GetRequestEntity(XDocument doc); 根据不同请求的类型,自动生成可用于操作的实体(doc只需要用XDocument.Parse(xmlString)就能生成),requestMessage.MsgType就是请求枚举类型。
进行判断及各类操作。
根据需要,创建响应类型的实体,如:var responseMessage = ResponseMessageBase.CreateFromRequestMessage(requestMessage, ResponseMsgType.Text) as ResponseMessageText; 即可返回文本类型信息。
由于目前微信只接受XML的返回数据,所以在返回之前还需要做一次转换:XDocument responseDoc = Senparc.Weixin.MP.Helpers.EntityHelper.ConvertEntityToXml(responseMessage); var xmlString =responseDoc.ToString();
至此整个微信公众账号的自动响应过程结束。
下面可以直接下载源代码及示例(示例是ASP.NET MVC 4,.NET 4.0,为了提高兼容性,Senparc.Weixin.MP源代码使用.NET 3.5):
压缩包中包含三个文件夹:Senparc.Weixin.MP、Senparc.Weixin.MP.BuildOutPut、Senparc.Weixin.MP.Sample,分别对应Senparc.Weixin.MP.dll源代码项目、Senparc.Weixin.MP.dll输出目录、Web示例,Web示例建议放到公网测试,让公众平台自动发送
代码片段和文件信息
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//using System.Web.Security;
namespace Senparc.Weixin.MP
{
public class CheckSignature
{
public static readonly string Token = “weixin“;//必须和公众平台的token设置一致,或在方法中指定
public static bool Check(string signature string timestamp string nonce string token = null)
{
return signature == GetSignature(timestamp nonce token);
}
public static string GetSignature(string timestamp string nonce string token = null)
{
token = token ?? Token;
var arr = new[] { CheckSignature.Token timestamp nonce }.OrderBy(z => z).ToArray();
var arrString = string.Join(““ arr);
//var enText = FormsAuthentication.HashPasswordForStoringInConfigFile(arrString “SHA1“);//使用System.Web.Security程序集
var sha1 = System.Security.Cryptography.SHA1.Create();
var sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));
StringBuilder enText = new StringBuilder();
foreach (var b in sha1Arr)
{
enText.AppendFormat(“{0:x2}“ b);
}
return enText.ToString();
}
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 9728 2013-01-12 15:34 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\bin\Debug\Senparc.Weixin.MP.dll
文件 15872 2013-01-12 15:34 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\bin\Debug\Senparc.Weixin.MP.pdb
文件 1343 2013-01-12 18:12 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\CheckSignature.cs
文件 356 2013-01-12 15:21 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Entities\Article.cs
文件 792 2013-01-12 20:05 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Entities\RequestMessageba
文件 277 2013-01-12 14:40 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Entities\RequestMessageImage.cs
文件 415 2013-01-12 14:39 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Entities\RequestMessageLocation.cs
文件 276 2013-01-12 14:38 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Entities\RequestMessageText.cs
文件 2423 2013-01-12 21:20 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Entities\ResponseMessageba
文件 521 2013-01-12 19:37 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Entities\ResponseMessageNews.cs
文件 235 2013-01-12 21:00 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Entities\ResponseMessageText.cs
文件 435 2013-01-12 19:32 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Enums.cs
文件 5138 2013-01-12 21:50 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Helpers\EntityHelper.cs
文件 538 2013-01-12 19:32 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Helpers\MsgTypeHelper.cs
文件 6617 2013-01-12 19:37 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\obj\Debug\DesignTimeResolveAssemblyReferencesInput.cache
文件 687 2013-01-12 19:58 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\obj\Debug\Senparc.Weixin.MP.csproj.FileListAbsolute.txt
文件 1520 2013-01-12 15:34 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\obj\Debug\Senparc.Weixin.MP.csprojResolveAssemblyReference.cache
文件 14336 2013-01-12 21:50 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\obj\Debug\Senparc.Weixin.MP.dll
文件 30208 2013-01-12 21:50 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\obj\Debug\Senparc.Weixin.MP.pdb
文件 1372 2013-01-12 14:32 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Properties\AssemblyInfo.cs
文件 1604 2013-01-13 00:01 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\RequestMessageFactory.cs
文件 3126 2013-01-12 19:38 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP\Senparc.Weixin.MP.csproj
文件 1461 2013-01-12 18:03 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP.sln
文件 14336 2013-01-12 21:50 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\bin\Debug\Senparc.Weixin.MP.dll
文件 30208 2013-01-12 21:50 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\bin\Debug\Senparc.Weixin.MP.pdb
文件 9216 2013-01-12 21:50 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\bin\Debug\Senparc.Weixin.MP.Test.dll
文件 22016 2013-01-12 21:50 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\bin\Debug\Senparc.Weixin.MP.Test.pdb
文件 879 2013-01-12 18:03 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\CheckSignatureTest.cs
文件 4425 2013-01-12 21:49 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\EntityHelperTest.cs
文件 988 2013-01-12 19:35 微信公众平台(c#实现)\Senparc.Weixin.MP\Senparc.Weixin.MP.Test\MsgTypeHelperTest.cs
............此处省略633个文件信息
- 上一篇:三维水淹模拟系统C#实现
- 下一篇:数据库课程设计c# SQL
相关资源
- 数据库课程设计c# SQL
- 三维水淹模拟系统C#实现
- C#网站开发案例详解 书 PDF + 源码
- C#版微信登录--亲测有效.zip
- Unity3D与Winform交互
- C#基础知识思维导图最终版
- C#宿舍管理系统-数据库增删改查
- Keyence.AutoID.SDK_Help
- GeckoFx 最新版本 完美支持HTML5 C# demo
- C#编写的钢琴程序,调用DirectXSound编写
- Dot.NET Reactor 混淆加密工具 完美破解版
- devexpress控件说明大全
- Microsoft Visual C# Step by Step 9th Edition
- 五子棋小游戏 C#源代码 完整源程序
- C# vs2010 RDLC 报表DLL库 以及XP下无法运
- 明泰MT3系列读卡器 AIP文档及开发vbv
- C#使用RedisDEMO
- C#调用摄像头实现拍照和录像
- C#万能视频播放器
- C#线程参考手册
- C#图解教程第4版中文PDF原版
- C# 课程设计案例精编
- C# 类似webapi的Nancy框架
- C#课程设计案例精编源代码
- 鲜花销售管理系统
- C#入门经典第7版中文高清非扫描目录
- basler相机C#封装
- 大华视频C#DEMO
- C#经典入门书籍,适合新手入门 高清
- VisualC#23经典游戏编程开发+源代码
评论
共有 条评论