• 微信消息接收 验证URL有效性 C#代码示例


    开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:

    参数描述
    signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
    timestamp 时间戳
    nonce 随机数
    echostr 随机字符串

    开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。

    加密/校验流程如下:
    1. 将token、timestamp、nonce三个参数进行字典序排序
    2. 将三个参数字符串拼接成一个字符串进行sha1加密
    3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
    
    检验signature的C#示例代码:
    string signature = "a948c4f99d23c1b6ef78204c1eb867166e2276e8";//context.Request.QueryString["signature"];            
    string timestamp = "1405665299";//context.Request.QueryString["timestamp"];           
    string nonce = "42752994";//context.Request.QueryString["nonce"];            
    string token = "Topevery";
    List<string> list = new List<string>();            
    list.Add(token);            
    list.Add(timestamp);            
    list.Add(nonce);            
    list.Sort();
    //list.Sort();
    string res = string.Join("", list.ToArray());
    Byte[] data1ToHash = Encoding.ASCII.GetBytes(res);          
    byte[] hashvalue1 = ((HashAlgorithm)CryptoConfig.CreateFromName("SHA1")).ComputeHash(data1ToHash);
    StringBuilder sb = new StringBuilder();          
    foreach (byte b in hashvalue1)          
    {              
    sb.Append(b.ToString("x2"));          
    }          
    //
    string s = BitConverter.ToString(hashvalue1).Replace("-", string.Empty).ToLower();          
    if (signature == sb.ToString())          
    {              
      Console.Write("OK");          
    }          
    else          
    {              
      Console.Write("NO");          
    }



  • 相关阅读:
    HDU 1878 欧拉回路(DFS)
    HDU 2181 哈密顿绕行世界问题(DFS)
    HDU 1181 变形课(DFS)
    HDU 1029 Ignatius and the Princess IV(map应用)
    HDU 1242 Rescue(BFS)
    HDU 1027 Ignatius and the Princess II(STL)
    将项目部署到本地IIS时出现的奇怪问题
    [转]30个你必须记住的css选择器
    打开一个从网络上下载的chm文件时出现“已取消到该网页的导航”
    [转]使用Modernizr 检测HTML5和CSS3浏览器支持功能
  • 原文地址:https://www.cnblogs.com/Nikola/p/4211351.html
Copyright © 2020-2023  润新知