看了下网上关于.net webAPI 的案例全是坑

验证成功了不被微信服务器接收

微信客服有找不到,提问也没人回

自己测试好几个小时 终于发现返回结果只要个string

双引号都不用加

  public readonly string Token = "哈哈哈";
//主方法
public string WXToken(string signature, string timestamp, string nonce, string echostr)
{
string EchoStr = Valid(signature, timestamp, nonce, echostr); if (!string.IsNullOrEmpty(EchoStr))
{
return echostr;
}
else
{
return "失败";
} } /// <summary>
/// 转Sha1
/// </summary>
/// <param name="pwd"></param>
/// <returns></returns>
public static string GetSHA1(string pwd)
{
SHA1 algorithm = SHA1.Create();
byte[] data = algorithm.ComputeHash(Encoding.UTF8.GetBytes(pwd));
string sh1 = "";
for (int i = 0; i < data.Length; i++)
{
sh1 += data[i].ToString("x2").ToUpperInvariant();
}
return sh1; } /// <summary>
/// 对比
/// </summary>
/// <param name="signature"></param>
/// <param name="timestamp"></param>
/// <param name="nonce"></param>
/// <param name="echostr"></param>
/// <returns></returns>
private string Valid(string signature, string timestamp, string nonce, string echostr)
{
if (CheckSignature(signature, timestamp, nonce))
{
if (!string.IsNullOrEmpty(echostr))
{
return echostr;
}
} return "";
} /// <summary>
/// 验证微信签名
/// </summary>
/// * 将token、timestamp、nonce三个参数进行字典序排序
/// * 将三个参数字符串拼接成一个字符串进行sha1加密
/// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
/// <returns></returns>
private bool CheckSignature(string signature, string timestamp, string nonce)
{
string[] ArrTmp = { Token, timestamp, nonce };
Array.Sort(ArrTmp); //字典排序
string tmpStr = string.Join("", ArrTmp);
tmpStr = GetSHA1(tmpStr);
tmpStr = tmpStr.ToLower();
if (tmpStr == signature)
{
return true;
}
else
{
return false;
}
}

可能有点乱

大家将就看

返回值结果是关键

echostr直接返回 echostr直接返回 echostr直接返回

最新文章

  1. java数据库连接池技术原理(浅析)
  2. RT-Thread下的串口驱动程序分析【转载】
  3. codeforces 712B. Memory and Trident
  4. 如何彻底卸载MySQL
  5. JSP显示-下拉框
  6. Java中static、final用法小结
  7. POJ2632Crashing Robots
  8. heidsoft logo
  9. Evaluate Reverse Polish Notation——LeetCode
  10. JavaScript基础知识----零基础js入门练习题
  11. MFC超链接静态类的使用
  12. 用代码定位硬盘上的文件(使用ShellExecute执行explorer /select命令,其它参数也很全)
  13. Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: &amp;#39;L
  14. 2、手把手教你Extjs5(二)项目中文件的加载过程
  15. OpenCV探索之路(六):边缘检测(canny、sobel、laplacian)
  16. .Net Core小技巧 - Hosted Services + Quartz实现定时任务调度
  17. 第九节、人脸检测之Haar分类器
  18. JAVA-Clone 对象拷贝
  19. SpringMVC4返回json
  20. XAMPP phpmyadmin MYSQL的配置

热门文章

  1. clickhouse 重启,软连接失效,增加存储路径
  2. Git克隆项目到本地
  3. 服务器做bond,交换机做port-channel
  4. javax.naming.NameNotFoundException: Name [aa.bb.cc/xx] is not bound in this Context. Unable to find [aa.bb.cc]
  5. python学习之路---基础概念扩展:变量,表达式,算法,语句,函数,模块,字符串
  6. 设置Redhat终端显示中文
  7. alertmanger告警配置
  8. 网络图片转InputStream,网络图片转MultipartFile,InputStream转MultipartFile
  9. java8中CompletableFuture异步处理超时
  10. ADOConnection调用连接窗口