软件编程
位置:首页>> 软件编程>> C#编程>> C#微信公众号与订阅号接口开发示例代码

C#微信公众号与订阅号接口开发示例代码

作者:smartsmile2012  发布时间:2023-07-20 09:11:07 

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

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com