资源简介

对于当前微信消息收发 使用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\RequestMessagebase.cs

     文件        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\ResponseMessagebase.cs

     文件        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个文件信息

评论

共有 条评论