欢迎光临
我们一直在努力

用c#开发微信(1)服务号的服务器配置和企业号的回调模式

/// <summary>
 /// 处理微信服务器验证消息
 /// </summary>
 public void Auth()
 {
 string token = ConfigurationManager.AppSettings[Token].ToString();
 string signature = HttpContext.Current.Request.QueryString["signature"];
 string timestamp = HttpContext.Current.Request.QueryString["timestamp"];
 string nonce = HttpContext.Current.Request.QueryString["nonce"];
 string echostr = HttpContext.Current.Request.QueryString["echostr"];
 
 if (HttpContext.Current.Request.HttpMethod.ToUpper() == "GET")
 {
 //get method - 仅在微信后台填写URL验证时触发
 if (CheckSignature(signature, timestamp, nonce, token))
 {
 WriteContent(echostr); //返回随机字符串则表示验证通过
 }
 else
 {
 WriteContent("failed:" + signature + "," + GetSignature(timestamp, nonce, token) + "。" +
 "如果你在浏览器中看到这句话,说明此地址可以被作为微信公众账号后台的Url,请注意保持Token一致。");
 }
 HttpContext.Current.Response.End();
 }
 }
 
 private void WriteContent(string str)
 {
 HttpContext.Current.Response.Output.Write(str);
 }
 
 /// <summary>
 /// 检查签名是否正确
 /// </summary>
 /// <param name="signature"></param>
 /// <param name="timestamp"></param>
 /// <param name="nonce"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 public static bool CheckSignature(string signature, string timestamp, string nonce, string token)
 {
 return signature == GetSignature(timestamp, nonce, token);
 }
 
 /// <summary>
 /// 返回正确的签名
 /// </summary>
 /// <param name="timestamp"></param>
 /// <param name="nonce"></param>
 /// <param name="token"></param>
 /// <returns></returns>
 public static string GetSignature(string timestamp, string nonce, string token)
 {
 string[] arr = new[] { token, timestamp, nonce }.OrderBy(z => z).ToArray();
 string arrString = string.Join("", arr);
 System.Security.Cryptography.SHA1 sha1 = System.Security.Cryptography.SHA1.Create();
 byte[] sha1Arr = sha1.ComputeHash(Encoding.UTF8.GetBytes(arrString));
 StringBuilder enText = new StringBuilder();
 foreach (var b in sha1Arr)
 {
 enText.AppendFormat("{0:x2}", b);
 }
 return enText.ToString();
 }

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《用c#开发微信(1)服务号的服务器配置和企业号的回调模式》
文章链接:https://www.456zj.com/7010.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址