微信消息接收 验证URL有效性 C#代码示例
2015-01-08 16:39
435 查看
开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数:
开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。
参数 | 描述 |
---|---|
signature | 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
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"); }
相关文章推荐
- 微信消息接收 验证URL有效性 C#代码示例
- 微信验证.Net代码:C#如何校验URL有效性成为开发者
- 微信验证开发者代码,解决微信请求URL超时,你的服务器没有正确响应Token验证,请阅读消息接口使用指南
- C#使用SnmpSharpNet接收snmp的trap消息示例代码
- c#使用正则表达式匹配字符串验证URL示例
- 微微信.NET 微信的开发者验证ASP.NET C#代码
- PHP实现中国公民身份证号码有效性验证示例代码
- Android仿微信发送语音消息的功能及示例代码
- C#微信接口之推送模板消息功能示例
- C#微信开发之接收 / 返回文本消息
- C#获取当前页面的URL示例代码
- 用c#开发微信(3)基于Senparc.Weixin框架的接收普通消息处理 (源码下载)
- Android发送接收短信的代码示例(本人验证OK)
- Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
- Asp.net 2.0 实现自定义Email格式有效性验证(示例代码下载)
- [导入]Asp.net 2.0 实现自定义Email格式有效性验证(示例代码下载)
- C#开发微信门户及应用(21)-微信企业号的消息和事件的接收处理及解密
- C#开发微信门户及应用(21)-微信企业号的消息和事件的接收处理及解密
- 微信通过openID发送消息/后台post、get提交并接收数据 C# .NET 配置404,500等错误信息 连接字符串