Heim  >  Artikel  >  WeChat-Applet  >  C# entwickelt Beispielcode für die Schnittstelle für öffentliche WeChat-Konten und Abonnementkonten

C# entwickelt Beispielcode für die Schnittstelle für öffentliche WeChat-Konten und Abonnementkonten

高洛峰
高洛峰Original
2017-03-19 18:02:171486Durchsuche

In diesem Artikel wird hauptsächlich der Entwicklungsbeispielcode für das C#öffentliche WeChat-Konto und das Abonnementkonto Schnittstelle vorgestellt und in Form von Beispielen kurz die Aufruf- und Verarbeitungsfähigkeiten von C# für die WeChat-Schnittstelle analysiert. Es braucht Freunde, auf die Sie sich beziehen können

Dieser Artikel beschreibt den Beispielcode für die Entwicklung der Schnittstelle für öffentliche C#-WeChat-Konten und Abonnementkonten. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

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


Das obige ist der detaillierte Inhalt vonC# entwickelt Beispielcode für die Schnittstelle für öffentliche WeChat-Konten und Abonnementkonten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn