.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();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持phpstudy。
本文地址:https://www.stayed.cn/item/22585
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我