【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!

2023-11-08

今天对接公众号,一直提示我签名有问题!但是我的签名和官方生成的签名一致,下面是对应数据比对

我的签名
在这里插入图片描述
微信官方提供签名
在这里插入图片描述

经过比对,两者是一致的,但是,就是一直提示错误! 后面是解决思路:
1、首先是需要在公众号管理平台配置对应服务器信息,包含白名单,回调地址等等;看图:

在这里插入图片描述在这里插入图片描述

说明:这里的.txt文件,如果你的服务重新发布了,然后恰巧你的文件夹被替换掉了,此时需要重新上传一下哦

在这里插入图片描述
在这里插入图片描述

以上配置完成之后,就是写接口啦;看官方文档就行;

在这里插入图片描述

下面是我的后端代码
  /**
     * 获取微信签名
     *
     * @param url
     * @return
     */
    @GetMapping("getJsSdkSign")
    public AjaxResult getJsSdkSign(String url) {
        return wechatOpenService.getJsSdkSign(url);
    }
	/**
     * 获取微信签名
     *
     * @param url
     * @return
     */
    @Override
    public AjaxResult getJsSdkSign(String url) {
        try {
            url = new URI(url).getPath();
        } catch (URISyntaxException e) {
            throw new RuntimeException(e);
        }
        AjaxResult result = new AjaxResult();
        String token = this.getToken();
        GetAccreditReq req = new GetAccreditReq();
        String nonceStr = UUID.randomUUID().toString();
        String timestamp = (System.currentTimeMillis() / 1000) + "";
        req.setToken(token);
        String content = "jsapi_ticket=" + this.getTicket(req) + "&noncestr=" + nonceStr + "&timestamp=" + timestamp + "&url=" + url;

        logger.info(String.format("获取微信签名-加密之前信息:%s", content));

        String signature = null;
        try {
            MessageDigest md = MessageDigest.getInstance("SHA-1");
            byte[] digest = md.digest(content.getBytes());
            signature = byteToStr(digest);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        String s = signature.toLowerCase();
        result.put("timestamp", timestamp);
        result.put("nonceStr", nonceStr);
        result.put("signature", s);
        result.put("url", url);

        logger.info(String.format("获取微信签名-加密之后信息:%s", s));
        return result;
    }


    public static String byteToStr(byte[] byteArray) {
        String strDigest = "";
        for (int i = 0; i < byteArray.length; i++) {
            strDigest += byteToHexStr(byteArray[i]);
        }
        return strDigest;
    }

    public static String byteToHexStr(byte mByte) {
        char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'};
        char[] tempArr = new char[2];
        tempArr[0] = Digit[(mByte >>> 4) & 0X0F];
        tempArr[1] = Digit[mByte & 0X0F];
        String s = new String(tempArr);
        return s;
    }
前端代码
   import wx from 'weixin-js-sdk'
  getWeChat() {
        var url = encodeURIComponent(window.location.href.split("#")[0]);
        axios.get(process.env.VUE_APP_BASE_API + "/wechatOpen/getJsSdkSign", {
          params: {
            url: url
          }
        }).then(res => {
          console.log("/wechatOpen/getJsSdkSign", res)
          wx.config({
            debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
            appId: 'xxxxxxx', // 必填,公众号的唯一标识
            timestamp: res.data.timestamp, // 必填,生成签名的时间戳
            nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
            signature: res.data.signature, // 必填,签名
            jsApiList: [
              'closeWindow', 'scanQRCode', 'chooseWXPay', 'openProductSpecificView', 'addCard', 'chooseCard',
              'openCard'
            ] // 必填,需要使用的JS接口列表 这里填写需要用到的微信api openlocation为使用微信内置地图查看位置接口,其中关闭浏览器的接口closeWindow(),也需要写在这个列表里面
          });
        })
        wx.ready(function() { //当页面加载完成时就需要调用的一些api需要写在ready里面,例如addCard,分享等。
          console.log("=====ready=====")
        });
        wx.error(function(res) { //微信api调用失败的回调函数
          console.log(res);
          console.log("=====error=====")
        });
      },
至此,如果你的签名也是准确的,.txt文件位置也是对的, 然后该配置的也配置了,理论上就可以正常啦,我这可是摸索了三个小时的结果!!!! 有问题留言哦
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!! 的相关文章

  • 如何在android上的python kivy中关闭应用程序后使服务继续工作

    我希望我的服务在关闭应用程序后继续工作 但我做不到 我听说我应该使用startForeground 但如何在Python中做到这一点呢 应用程序代码 from kivy app import App from kivy uix floatl
  • 是什么决定了从 lambda 创建哪个函数式接口?

    请考虑这个例子 import java util function Consumer public class Example public static void main String args Example example new
  • Java AES 128 加密方式与 openssl 不同

    我们遇到了一种奇怪的情况 即我们在 Java 中使用的加密方法会向 openssl 生成不同的输出 尽管它们在配置上看起来相同 使用相同的键和 IV 文本 敏捷的棕色狐狸跳过了懒狗 加密为 Base64 字符串 openssl A8cMRI
  • JAVA - Xuggler - 组合 MP3 音频文件和 MP4 电影时播放视频

    使用 JAVA 和 Xuggler 以下代码组合 MP3 音频文件和 MP4 电影文件并输出组合的 mp4 文件 我希望在合并音频和视频文件时应自动播放输出视频文件 String inputVideoFilePath in mp4 Stri
  • 按第一列排序二维数组,然后按第二列排序

    int arrs 1 100 11 22 1 11 2 12 Arrays sort arrs a b gt a 0 b 0 上面的数组已排序为 1 100 1 11 2 12 11 22 我希望它们按以下方式排序a 0 b 0 首先 如果
  • 如何安全地解决这个 Java 上下文类加载器问题?

    我的数百名用户中只有一位在启动我的 Java 桌面应用程序时遇到问题 他只有大约三分之一的时间开始 另外三分之二的时间在启动时抛出 NullPointerException Exception in thread AWT EventQueu
  • hibernate锁等待超时超时;

    我正在使用 Hibernate 尝试模拟对数据库中同一行的 2 个并发更新 编辑 我将 em1 getTransaction commit 移至 em1 flush 之后我没有收到任何 StaleObjectException 两个事务已成
  • 匿名类上的 NotSerializedException

    我有一个用于过滤项目的界面 public interface KeyValFilter extends Serializable public static final long serialVersionUID 7069537470113
  • 具有 java XSLT 扩展的数组

    我正在尝试使用 java 在 XSLT 扩展中使用数组 我收到以下错误 Caused by java lang ClassCastException org apache xpath objects XObject cannot be ca
  • 普罗米修斯指标 - 未找到

    我有 Spring Boot 应用程序 并且正在使用 vertx 我想监控服务和 jvm 为此我选择了 Prometheus 这是我的监控配置类 Configuration public class MonitoringConfig Bea
  • 编辑文件名在 JComboBox 中的显示方式,同时保持对文件的访问

    我对 Java 很陌生 对堆栈溢出也很陌生 我正在尝试利用 JMF API 创建一个用 Java 编码的简单媒体播放器 到目前为止 我已经能够设置一个简单的队列 播放列表来使用JComboBox called playListHolder
  • 如何在selenium服务器上提供自定义功能?

    我知道可以通过某种方法获得一些硒功能 其中之一如下 driver getCapabilities getBrowserName 它返回浏览器名称的值 但如果它指的是一个可用的方法 如果我没有误解的话 这似乎与自定义功能有关 就像我的意思是
  • IntelliJ - 调试模式 - 在程序内存中搜索文本

    我正在与无证的第三方库合作 我知道有一定的String存储在库深处的某个字段中的某处 我可以预测的动态值 但我想从库的 API 中获取它 有没有一种方法可以通过以下方式进行搜索 类似于全文搜索 full程序内存处于调试模式并在某个断点处停止
  • 如何在JSTL中调​​用java方法? [复制]

    这个问题在这里已经有答案了 这可能是重复的问题 我只想调用不是 getter 或 setter 方法的方法例如 xyz 类的 makeCall someObj stringvalue Java类 Class XYZ public Strin
  • 游戏内的java.awt.Robot?

    我正在尝试使用下面的代码来模拟击键 当我打开记事本时 它工作正常 但当我打开我想使用它的游戏时 它没有执行任何操作 所以按键似乎不起作用 我尝试模拟鼠标移动和点击 这些动作确实有效 有谁知道如何解决这个问题 我发现这个问题 如何在游戏中使用
  • 如何使用 JSch 将多行命令输出存储到变量中

    所以 我有一段很好的代码 我很难理解 它允许我向我的服务器发送命令 并获得一行响应 该代码有效 但我想从服务器返回多行 主要类是 JSch jSch new JSch MyUserInfo ui new MyUserInfo String
  • FileOutputStream.close() 中的设备 ioctl 不合适

    我有一些代码可以使用以下命令将一些首选项保存到文件中FileOutputStream 这是我已经写了一千遍的标准代码 FileOutputStream out new FileOutputStream file try BufferedOu
  • Trie 数据结构 - Java [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 是否有任何库或文档 链接提供了在 java 中实现 Trie 数据结构的更多信息 任何帮助都会很棒 Thanks 你可以阅读Java特里树
  • GUI Java 程序 - 绘图程序

    我一直试图找出我的代码有什么问题 这个想法是创建一个小的 Paint 程序并具有红色 绿色 蓝色和透明按钮 我拥有我能想到的让它工作的一切 但无法弄清楚代码有什么问题 该程序打开 然后立即关闭 import java awt import
  • 如何修复:“无法解析类型 java.lang.CharSequence。它是从所需的 .class 文件间接引用的”消息? [复制]

    这个问题在这里已经有答案了 我正在尝试使用这个字符串 amountStr amountStr replace replace replace 但我收到一条错误消息 我知道我收到的错误消息是因为我刚刚发布的字符串已过时 所以我想知道该字符串的

随机推荐

  • postgresql后端数据统计函数

    后端统计函数 函数 返回类型 描述 pg stat get backend idset int 设置当前活动的后端ID号 pg stat get backend activity interger text 后端最近查询文本 pg stat
  • html如何建立连接,HTML中如何使用JavaScript创建链接?

    给定一个HTML文档 如何使用JavaScript创建链接 并将其添加到文档中 下面本篇文章就来给大家介绍一下在HTML中使用JavaScript创建链接的方法 希望对大家有所帮助 image 做法 创建一个锚元素 创建一个文本节点 其中包
  • vite pwa项目使用

    pwa介绍 PWA Progressive Web App 就是一种网页应用 可以离线使用 变成独立应用安装到系统中 渐进式网页应用 是一种基于网页的应用 但它和传统的Web App有些不同 以下是不同点 离线 轻量 离线可用 跟普通的网页
  • java中的跳转_Java中程序跳转关键字详解

    Java中的goto是保留字 目前不能使用 虽然没有goto语句可以增强程序的安全性 但是也带来很多不便 比如说 我想在某个循环知道到某一步的时候就结束 现在就做不了这件事情 为了弥补这个缺陷 Java就提供了break continue和
  • java.lang.NoClassDefFoundError: Could not initialize class xxx 原因及解决方法

    NoClassDefFoundError产生的原因有好几种 这里记录静态变量或静态块引起的 具体抛出的异常类似 java lang NoClassDefFoundError Could not initialize class xxx JV
  • 将C++数字类型转换成字符串

    include
  • SpringBoot2.x 集成 AntiSamy 防御XSS攻击

    AntiSamy是OWASP的一个开源项目 通过对用户输入的HTML CSS JavaScript等内容进行检验和清理 确保输入符合应用规范 AntiSamy被广泛应用于Web服务对存储型和反射型XSS的防御中 XSS攻击全称为跨站脚本攻击
  • SourceTree如何修改账号密码

    修改SourceTree账号或密码 修改账号 找到 C Users Administrator AppData Local Atlassian SourceTree 中的 userhosts 文件 删除其中要修改的账户 返回SourceTr
  • MySQL WHERE语句筛选操作符

    使用SELECT语句但不使用WHERE子句在表中查询数据 则会获取表中的所有行记录 这些行记录中大部分是不想要的行记录 WHERE子句允许根据指定的过滤表达式或条件来指定要选择的行 1 等于 等于 几乎任何数据类型都可以使用它 2 lt g
  • 小程序坑录-wx.getLocation接口申请

    最近在用uni app通用框架做h5和小程序 结果在小程序审核的时候 又遇到了很多天坑 故记录之 从2022 年 7 月 14 日开始 使用位置接口 就必须在app json中进行声明了 除此之外 在正式使用时 还需要在开发管理 接口权限内
  • 期货开户关于基本面量化

    一 库存 供求矛盾看库存 东西没有了 缺了 就会涨价 不缺 一般不会涨 所以 一定要注意库存 去库存快的品种 特别是库存低 价格低的品种 要重点关注 库存有一点要特别注意 要是 有效去库存 通过降价让下游买货 这种 去库存 不是根本 因为库
  • Leetcode:链表刷题(7道经典题目)

    Leetcode 链表刷题 7道经典题目 本文带来的是以链表为主题的一些经典题目 203 移除链表元素 707 设计链表 206 反转链表 24 两两交换链表中的节点 19 删除链表的倒数第 N 个结点 面试题 02 07 链表相交 142
  • Redis设置失效时间

    Redis设置失效时间还有nx和nxx 通过设置失效时间 可以将到达规定时间对应的key和value进行删除 设置失效时间的两种方式 1 在设值的时候设置失效时间 set code test ex px 秒 毫秒 时间 数值 set cod
  • 深度学习 FairMOT多目标跟踪(PANDA)

    FairMOT 复赛期间对于多目标跟踪任务使用的baseline 本质属于联合学习检测和嵌入模型 Joint Detection and Embedding JDE 毕设项目演示地址 链接 毕业项目设计代做项目方向涵盖 目标检测 语义分割
  • 关于航模的几点积累(四)关于螺旋桨

    关于固定翼飞行器的螺旋桨 1 螺旋桨的几种类型 按材质 塑料 木质 碳纤维 玻璃纤维 尼龙等 按桨叶数量 单叶桨 双叶桨 三叶桨等 按固定方式 快拆桨 大孔桨 适配子弹头 小孔桨 适配螺旋桨保护器 这几种螺旋桨之间的对比分析 2 螺旋桨的重
  • 计算机软件工程操作系统期末复习题

    1 计算机操作系统的功能是 D A 把源程序代码转换为目标代码 B 实现计算机用户之间的相互交流 C 完成计算机硬件与软件之间的转换 D 控制 管理计算机系统的资源和程序的执行 在现代计算机系统中 用户用高级语言编写的源程序必须通过编译程序
  • Elasticsearch Head的使用

    目录 概述 一 安装 Elasticsearch Head 二 解压文件 三 安装Elasticsearch Head依赖 四 启动 Elasticsearch Head 五 修改Elasticsearch Head启动端口号 六 使用 E
  • STM32的PWM控制4个舵机

    本人虽然接触STM32快半年了 但是最近才开始系统的学习STM32 建议一边学 一边做东西 能够更快的提升自己 我用的定时器是TIM3 所以我会把我出现的问题 分享给大家 希望大佬多多指教 因为我先进行部分映射 但是控制某个舵机的PB4引脚
  • 【SVN内网穿透】远程访问Linux SVN服务

    文章目录 前言 1 Ubuntu安装SVN服务 2 修改配置文件 2 1 修改svnserve conf文件 2 2 修改passwd文件 2 3 修改authz文件 3 启动svn服务 4 内网穿透 4 1 安装cpolar内网穿透 4
  • 【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!

    今天对接公众号 一直提示我签名有问题 但是我的签名和官方生成的签名一致 下面是对应数据比对 我的签名 微信官方提供签名 经过比对 两者是一致的 但是 就是一直提示错误 后面是解决思路 1 首先是需要在公众号管理平台配置对应服务器信息 包含白