>  기사  >  위챗 애플릿  >  WeChat 공개 계정 인터페이스 개발의 C#.net 구현 분석 예

WeChat 공개 계정 인터페이스 개발의 C#.net 구현 분석 예

Y2J
Y2J원래의
2017-04-25 09:24:202533검색

이 문서의 예에서는 C# WeChat 공개 계정 및 구독 계정 인터페이스 개발 샘플 코드를 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 자세한 내용은 다음과 같습니다.

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;
    }
  }
}

위 내용은 WeChat 공개 계정 인터페이스 개발의 C#.net 구현 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.