欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

微信公众平台开发之认证"成为开发者".Net代码解析

程序员文章站 2023-12-03 09:52:28
.net 实现微信公共服务平台开发的认证,认证成为开发者,具体内容如下 这些代码也就开始认证的时候用一次,以后就不用了: const string toke...

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。