資源簡介
對于當前微信消息收發 使用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
評論
共有 條評論