asp.net怎么设置微信接口代码

时间:2016-11-10106举报小编:youjiejie

    asp.net怎么设置微信接口配置代码,asp.net怎么设置开发者身份验证。

    前一段时间,老板让我开始负责微信这一块儿,其实微信接口这东西,从以前我都很少触碰,不过没办法,只能硬着头皮干了,最后经过2天的努力,做了出来,验证身份的代码先给各位。下面直接代码,首先需要建立一个weixin.aspx文件,然后在.cs里面写入下面代码

    using System;
    
    using System.Collections.Generic;
    
    using System.Web;
    
    using System.Web.UI;
    
    using System.Web.UI.WebControls;
    
    using System.Data;
    
    using System.IO;
    
    using System.Net;
    
    using System.Text;
    
    using System.Xml;
    
    using System.Web.Security;
    
    public partial class weixin : System.Web.UI.Page
    
    {
    
        const string Token = "jj20hh13";//你的token
    
        protected void Page_Load(object sender, EventArgs e)
    
        {
    
            string postStr = "";
    
            if (Request.HttpMethod.ToLower() == "post")
    
            {
    
                System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;
    
                byte[] b = new byte[s.Length];
    
                s.Read(b, 0, (int)s.Length);
    
                postStr = System.Text.Encoding.UTF8.GetString(b);
    
                if (!string.IsNullOrEmpty(postStr))
    
                {
    
                    //ResponseMsg(postStr);
    
                    Response.Write(ResponseMsg(postStr));
    
                    Response.End();
    
                }
    
                //WriteLog("postStr:" + postStr);
    
            }
    
            else
    
            {
    
                Valid();
    
            }
    
        }
    
        ///     /// 验证微信签名
    
        ///     /// * 将token、timestamp、nonce三个参数进行字典序排序
    
        /// * 将三个参数字符串拼接成一个字符串进行sha1加密
    
        /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
    
        ///     private bool CheckSignature()
    
        {
    
            string signature = Request.QueryString["signature"].ToString();
    
            string timestamp = Request.QueryString["timestamp"].ToString();
    
            string nonce = Request.QueryString["nonce"].ToString();
    
            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;
    
            }
    
        }
    
        private void Valid()
    
        {
    
            string echoStr = Request.QueryString["echoStr"].ToString();
    
            if (CheckSignature())
    
            {
    
                if (!string.IsNullOrEmpty(echoStr))
    
                {
    
                    Response.Write(echoStr);
    
                    Response.End();
    
                }
    
            }
    
        }
    
        ///     /// 返回信息结果(微信信息返回)
    
        ///     ///     private string ResponseMsg(string weixinXML)
    
        {
    
          ///这里写你的返回信息代码
    
        }
    
        ///     /// unix时间转换为datetime
    
        ///     ///     ///     private DateTime UnixTimeToTime(string timeStamp)
    
        {
    
            DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));
    
            long lTime = long.Parse(timeStamp + "0000000");
    
            TimeSpan toNow = new TimeSpan(lTime);
    
            return dtStart.Add(toNow);
    
        }
    
        ///     /// datetime转换为unixtime
    
        ///     ///     ///     private int ConvertDateTimeInt(System.DateTime time)
    
        {
    
            System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
    
            return (int)(time - startTime).TotalSeconds;
    
        }
    
        ///     /// 写日志(用于跟踪)
    
        ///     private void WriteLog(string strMemo)
    
        {
    
            string filename = Server.MapPath("/logs/log.txt");
    
            if (!Directory.Exists(Server.MapPath("//logs//")))
    
                Directory.CreateDirectory("//logs//");
    
            StreamWriter sr = null;
    
            try
    
            {
    
                if (!File.Exists(filename))
    
                {
    
                    sr = File.CreateText(filename);
    
                }
    
                else
    
                {
    
                    sr = File.AppendText(filename);
    
                }
    
                sr.WriteLine(strMemo);
    
            }
    
            catch
    
            {
    
            }
    
            finally
    
            {
    
                if (sr != null)
    
                    sr.Close();
    
            }
    
        }
    
    }

    这个代码希望能够帮助一些人