当前位置: 首页 > news >正文

微信公众账号 token 验证失败 解决办法

 问题:微信公众账号 开发过程中配置  token 提示 验证失败

如下图:

点击修改配置:

填写相关url与token(自定义):点击提交,会出现

出现这种情况,主要是对相关参数不熟悉,要了解url与token的关系

url可以访问:页面中有Token的定义。url地址如:http://www.***.com/pay/wx_token.aspx

Token:根据说明自定义即可,要与url对应页面上的Token一致。

示例文件:

using System;
using System.Web.Security;
using System.Web.UI;
using WxPayAPI;

namespace Alipay
{
    public partial class wx_token : Page
    {
        /// <summary>
        /// 要与基本配置中的Token一致
        /// </summary>
        public string Token = "Token";

        protected void Page_Load(object sender, EventArgs e)
        {
            string echoStr = Request.QueryString["echoStr"];
            Log.Debug("Token", "测试输出: echoStr = " + echoStr);
            if ( CheckSignature() && !string.IsNullOrEmpty(echoStr))
            {
                Response.Write(echoStr);
                Response.End();
            }
        }

        /// <summary>
        /// 验证微信签名
        /// </summary>
        /// * 将token、timestamp、nonce三个参数进行字典序排序
        /// * 将三个参数字符串拼接成一个字符串进行sha1加密
        /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。
        /// <returns></returns>
        private bool CheckSignature()
        {
            string signature = Request.QueryString["signature"];
            string timestamp = Request.QueryString["timestamp"];
            string nonce = Request.QueryString["nonce"];
            Log.Debug("Token", "测试输出: signature = " + signature);
            Log.Debug("Token", "测试输出: timestamp = " + timestamp);
            Log.Debug("Token", "测试输出: nonce = " + nonce);
            string[] arrTmp = { Token, timestamp, nonce };
            Array.Sort(arrTmp);
            string tmpStr = string.Join("", arrTmp);
            tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
            if (tmpStr != null)
            {
                tmpStr = tmpStr.ToLower();
                return tmpStr == signature;
            }
            return false;
        }
    }
}

 

示例文件中所用类库可以从公众号支付开发文档页面下载:https://pay.weixin.qq.com/wiki/doc/api/jsapi_sl.php?chapter=11_1

相关文章:

  • 简单的并发架构设计
  • 分布式消息系统Jafka入门指南之二
  • (一一四)第九章编程练习
  • 在windows下安装pandas
  • Debugview使用方法
  • 生成不重复的随机数(待完善)
  • 登录流程-1
  • C#通过指针读取文件
  • C# 基础数据与Byte
  • mysql 分页sql
  • SQL Server 2008数据库邮件配置及应用
  • vim 强大复制链接
  • nginx+fpm报499错误的解决方案
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • Linux curl命令
  • ES6核心特性
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • HomeBrew常规使用教程
  • Java程序员幽默爆笑锦集
  • MobX
  • rc-form之最单纯情况
  • React组件设计模式(一)
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Shadow DOM 内部构造及如何构建独立组件
  • 翻译:Hystrix - How To Use
  • 入口文件开始,分析Vue源码实现
  • 移动端唤起键盘时取消position:fixed定位
  • 我们雇佣了一只大猴子...
  • ​secrets --- 生成管理密码的安全随机数​
  • #QT项目实战(天气预报)
  • #Ubuntu(修改root信息)
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (Python) SOAP Web Service (HTTP POST)
  • (利用IDEA+Maven)定制属于自己的jar包
  • (提供数据集下载)基于大语言模型LangChain与ChatGLM3-6B本地知识库调优:数据集优化、参数调整、Prompt提示词优化实战
  • (一)WLAN定义和基本架构转
  • (已解决)vue+element-ui实现个人中心,仿照原神
  • (转) Android中ViewStub组件使用
  • (转)Unity3DUnity3D在android下调试
  • (转)母版页和相对路径
  • (转)视频码率,帧率和分辨率的联系与区别
  • .NET Core 通过 Ef Core 操作 Mysql
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • @Builder用法
  • @ConditionalOnProperty注解使用说明
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [c#基础]DataTable的Select方法
  • [C++] Boost智能指针——boost::scoped_ptr(使用及原理分析)
  • [C++] 多线程编程-thread::yield()-sleep_for()
  • [C++][数据结构][算法]单链式结构的深拷贝
  • [hdu 3746] Cyclic Nacklace [kmp]
  • [Hive] INSERT OVERWRITE DIRECTORY要注意的问题
  • [JavaEE系列] wait(等待) 和 notify(唤醒)