.Net 实现微信公共服务平台开发的认证,认证成为开发者,具体内容如下
这些代码也就开始认证的时候用一次,以后就不用了:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
const string Token = "XXXXX" ; //你的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>
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();
}
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。