本文实例讲述了C#微信公众号与订阅号接口开发示例代码。分享给大家供大家参考,具体如下:
using System;
using System.Web;
using System.IO;
using System.Text;
using System.Web.Security;
using weixin_api;
public class wxgz_api : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain" ;
string postString = string .Empty;
if (HttpContext.Current.Request.HttpMethod.ToUpper() == "POST" )
{
//微信服务器对接口消息
using (Stream stream = HttpContext.Current.Request.InputStream)
{
Byte[] postBytes = new Byte[stream.Length];
stream.Read(postBytes, 0, (Int32)stream.Length);
postString = Encoding.UTF8.GetString(postBytes);
Handle(postString);
}
}
else
{
//微信进行的Get测试(开发者认证)
WxAuth();
}
}
/// <summary>
/// 处理信息并应答
/// </summary>
private void Handle( string postStr)
{
messageHelp help = new messageHelp();
string responseContent = help.ReturnMessage(postStr);
HttpContext.Current.Response.ContentEncoding = Encoding.UTF8;
HttpContext.Current.Response.Write(responseContent);
}
#region 微信验证
public void WxAuth()
{
string token = "xxxxxxxx" ;
if ( string .IsNullOrEmpty(token))
{
return ;
}
string echoString = HttpContext.Current.Request.QueryString[ "echostr" ];
string signature = HttpContext.Current.Request.QueryString[ "signature" ];
string timestamp = HttpContext.Current.Request.QueryString[ "timestamp" ];
string nonce = HttpContext.Current.Request.QueryString[ "nonce" ];
if (CheckSignature(token, signature, timestamp, nonce))
{
if (! string .IsNullOrEmpty(echoString))
{
HttpContext.Current.Response.Write(echoString);
HttpContext.Current.Response.End();
}
}
}
/// <summary>
/// 验证微信签名
/// </summary>
public bool CheckSignature( string token, string signature, string timestamp, string nonce)
{
string [] ArrTmp = { token, timestamp, nonce };
Array.Sort(ArrTmp);
string tmpStr = string .Join( "" , ArrTmp);
tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1" );
tmpStr = tmpStr.ToLower();
if (tmpStr == signature)
{
return true ;
}
else
{
return false ;
}
}
#endregion
public bool IsReusable
{
get
{
return false ;
}
}
}
希望本文所述对大家C#程序设计有所帮助。
dy("nrwz");
查看更多关于C#微信公众号与订阅号接口开发示例代码的详细内容...