这篇文章主要为大家详解微信公众平台开发之认证成为开发者.net代码解析,感兴趣的小伙伴们可以参考一下
.net 实现微信公共服务平台开发的认证,认证成为开发者,具体内容如下
这些代码也就开始认证的时候用一次,以后就不用了:
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();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
以上就是详解微信公众平台开发之认证成为开发者.net代码解析的详细内容。