微信TOKEN验证源码

时间:2014-06-27 15:19:55   收藏:0   阅读:713

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 = "token";//你的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();

}

}

/// <summary>

/// 验证微信签名

/// </summary>

/// * 将token、timestamp、nonce三个参数进行字典序排序

/// * 将三个参数字符串拼接成一个字符串进行sha1加密

/// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。

/// <returns></returns>

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();

}

}

}

/// <summary>

/// 返回信息结果(微信信息返回)

/// </summary>

/// <param name="weixinXML"></param>

private string ResponseMsg(string weixinXML)
{

///这里写你的返回信息代码
return "";

}

/// <summary>

/// unix时间转换为datetime

/// </summary>

/// <param name="timeStamp"></param>

/// <returns></returns>

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

}

/// <summary>

/// datetime转换为unixtime

/// </summary>

/// <param name="time"></param>

/// <returns></returns>

private int ConvertDateTimeInt(System.DateTime time)
{

System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));

return (int)(time - startTime).TotalSeconds;

}

/// <summary>

/// 写日志(用于跟踪)

/// </summary>

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();

}

}

}

微信TOKEN验证源码,布布扣,bubuko.com

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!