好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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#程序设计有所帮助。

dy("nrwz");

查看更多关于C#微信公众号与订阅号接口开发示例代码的详细内容...

  阅读:47次