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

简介: 【微信公众号对接】有关签名一直报错,提示invalid signature问题(我的签名和使用微信开发者工具验证返回的签名的是一致的)但还是报错!!!
今天对接公众号,一直提示我签名有问题!但是我的签名和官方生成的签名一致,下面是对应数据比对

我的签名

微信官方提供签名

经过比对,两者是一致的,但是,就是一直提示错误! 后面是解决思路:
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文件位置也是对的, 然后该配置的也配置了,理论上就可以正常啦,我这可是摸索了三个小时的结果!!!! 有问题留言哦
相关文章
|
2月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
660 7
|
4月前
|
网络协议
企业微信——给国外的邮箱发邮件报错Authentication results: DKIM = did not pass
企业微信——给国外的邮箱发邮件报错Authentication results: DKIM = did not pass
296 2
|
3天前
|
API 开发者
微信native支付对接案例详解
本文详细介绍了微信Native支付的对接流程,包括效果展示、产品介绍、接入前准备、开发指引、API列表、支付通知等,并强调了只有通过微信认证的服务号才能对接微信支付。每年需支付300元认证费用。
16 3
|
2月前
微信接口报错 "errcode":40163,"errmsg":"code been used, 如何处理?
【10月更文挑战第11天】微信接口报错 "errcode":40163,"errmsg":"code been used, 如何处理?
1112 1
|
5月前
|
文字识别 小程序 安全
印刷文字识别操作报错合集之微信小程序调用API时路径总是返回不对,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
4月前
|
前端开发 JavaScript API
微信公众号项目,实现微信支付(具体流程和参数)
微信公众号项目,实现微信支付(具体流程和参数)
|
5月前
|
小程序 开发者
【微信小程序】 微信小程序报错不在以下request合法域名列表中
【微信小程序】 微信小程序报错不在以下request合法域名列表中
1032 0
|
2月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
732 1
|
2月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
137 7
ly~
|
3月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
84 6