您的位置:首页 > 移动开发 > 微信开发

微信成为开发者模式

2014-05-08 12:02 176 查看

using System;

using System.IO;

using System.Text;

using System.Web.Security;

namespace HPZJ.Web.sys.excel

{

public partial class hpd_api_weixin : System.Web.UI.Page

{

const string Token = "token"; //你的token

protected void Page_Load(object sender, EventArgs e)

{

string postStr = "";

Valid();

if (Request.HttpMethod.ToLower() == "post")

{

Stream s = System.Web.HttpContext.Current.Request.InputStream;

byte[] b = new byte[s.Length];

s.Read(b, 0, (int)s.Length);

postStr = Encoding.UTF8.GetString(b);

if (!string.IsNullOrEmpty(postStr))

{

ResponseMsg(postStr);

}

//WriteLog("postStr:" + postStr);

}

}

/// <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 void ResponseMsg(string weixinXML)

{

//回复消息的部分:你的代码写在这里

}

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

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: