站内搜索

C#开发微信公众号与订阅号接口的实例详解

本文实例讲述了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#开发微信公众号与订阅号接口的实例详解的详细内容,更多请关注php中文网其它相关文章!

  • 上一篇:分享一个Android仿微信菜单使用C#和Java分别实现的实例
  • 下一篇:C#.net实现微信公众账号接口开发的实例解析