ASP.NET WEBAPI oken验证
2024-09-18 21:57:58
看了下网上关于.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直接返回
最新文章
- java数据库连接池技术原理(浅析)
- RT-Thread下的串口驱动程序分析【转载】
- codeforces 712B. Memory and Trident
- 如何彻底卸载MySQL
- JSP显示-下拉框
- Java中static、final用法小结
- POJ2632Crashing Robots
- heidsoft logo
- Evaluate Reverse Polish Notation——LeetCode
- JavaScript基础知识----零基础js入门练习题
- MFC超链接静态类的使用
- 用代码定位硬盘上的文件(使用ShellExecute执行explorer /select命令,其它参数也很全)
- Caused by: com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: &;#39;L
- 2、手把手教你Extjs5(二)项目中文件的加载过程
- OpenCV探索之路(六):边缘检测(canny、sobel、laplacian)
- .Net Core小技巧 - Hosted Services + Quartz实现定时任务调度
- 第九节、人脸检测之Haar分类器
- JAVA-Clone 对象拷贝
- SpringMVC4返回json
- XAMPP phpmyadmin MYSQL的配置
热门文章
- clickhouse 重启,软连接失效,增加存储路径
- Git克隆项目到本地
- 服务器做bond,交换机做port-channel
- javax.naming.NameNotFoundException: Name [aa.bb.cc/xx] is not bound in this Context. Unable to find [aa.bb.cc]
- python学习之路---基础概念扩展:变量,表达式,算法,语句,函数,模块,字符串
- 设置Redhat终端显示中文
- alertmanger告警配置
- 网络图片转InputStream,网络图片转MultipartFile,InputStream转MultipartFile
- java8中CompletableFuture异步处理超时
- ADOConnection调用连接窗口