zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }

  • 相关阅读:
    springboot——helloworld探究
    springboot——主程序类,主入口类
    android&nbsp;setClickable&nbsp;不起作用&nbsp;没…
    JAVA&nbsp;线程&nbsp;开启线程&nbsp;一个类里只开…
    eclipse 自动提示不出来
    android&nbsp;禁止回退&nbsp;不许回退
    一插上USB外设以后&nbsp;直接跳到相应的…
    Android&nbsp;UI设计中的特效&nbsp;界面左右…
    SysUtils.FmtStr、SysUtils.Format 格式化输出和ShowMessageFmt用法
    嘉猪昨天流鼻血了
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234114.html
Copyright © 2011-2022 走看看