C# 实现微信公众平台接口消息收发DEMO


对于当前微信消息收发 使用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.MPSenparc.Weixin.MPinDebugSenparc.Weixin.MP.dll

     文件      15872  2013-01-12 15:34  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPinDebugSenparc.Weixin.MP.pdb

     文件       1343  2013-01-12 18:12  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPCheckSignature.cs

     文件        356  2013-01-12 15:21  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEntitiesArticle.cs

     文件        792  2013-01-12 20:05  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEntitiesRequestMessagebase.cs

     文件        277  2013-01-12 14:40  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEntitiesRequestMessageImage.cs

     文件        415  2013-01-12 14:39  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEntitiesRequestMessageLocation.cs

     文件        276  2013-01-12 14:38  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEntitiesRequestMessageText.cs

     文件       2423  2013-01-12 21:20  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEntitiesResponseMessagebase.cs

     文件        521  2013-01-12 19:37  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEntitiesResponseMessageNews.cs

     文件        235  2013-01-12 21:00  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEntitiesResponseMessageText.cs

     文件        435  2013-01-12 19:32  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPEnums.cs

     文件       5138  2013-01-12 21:50  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPHelpersEntityHelper.cs

     文件        538  2013-01-12 19:32  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPHelpersMsgTypeHelper.cs

     文件       6617  2013-01-12 19:37  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPobjDebugDesignTimeResolveAssemblyReferencesInput.cache

     文件        687  2013-01-12 19:58  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPobjDebugSenparc.Weixin.MP.csproj.FileListAbsolute.txt

     文件       1520  2013-01-12 15:34  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPobjDebugSenparc.Weixin.MP.csprojResolveAssemblyReference.cache

     文件      14336  2013-01-12 21:50  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPobjDebugSenparc.Weixin.MP.dll

     文件      30208  2013-01-12 21:50  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPobjDebugSenparc.Weixin.MP.pdb

     文件       1372  2013-01-12 14:32  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPPropertiesAssemblyInfo.cs

     文件       1604  2013-01-13 00:01  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPRequestMessageFactory.cs

     文件       3126  2013-01-12 19:38  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MPSenparc.Weixin.MP.csproj

     文件       1461  2013-01-12 18:03  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MP.sln

     文件      14336  2013-01-12 21:50  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MP.TestinDebugSenparc.Weixin.MP.dll

     文件      30208  2013-01-12 21:50  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MP.TestinDebugSenparc.Weixin.MP.pdb

     文件       9216  2013-01-12 21:50  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MP.TestinDebugSenparc.Weixin.MP.Test.dll

     文件      22016  2013-01-12 21:50  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MP.TestinDebugSenparc.Weixin.MP.Test.pdb

     文件        879  2013-01-12 18:03  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MP.TestCheckSignatureTest.cs

     文件       4425  2013-01-12 21:49  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MP.TestEntityHelperTest.cs

     文件        988  2013-01-12 19:35  微信公众平台(c#实现)Senparc.Weixin.MPSenparc.Weixin.MP.TestMsgTypeHelperTest.cs

............此处省略633个文件信息

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。

发表评论

评论列表(条)