收藏
回答

H5页面引入jssdk wx.config报错:config:invalid signature ?

应用jssdk 分享给朋友功能

调用页面url :https://www.maitianshouwang.com/demo

使用官方签名工具检验签名均正确,但是还是会报此错误 为什么?

1、官方签名校验工具结果:

2、wx.config配置参数:

3、当前调用页面URL:

4、js安全域名:

最后一次编辑于  2023-05-22
回答关注问题邀请回答
收藏

12 个回答

  • 教父右手#3585
    教父右手#3585
    2023-05-22

    解决了,在前端页面使用encodeURIComponent(location.href.split(‘#’)[0])获取url值传给后端才行。。。。这文档里居然不提?

    2023-05-22
    有用 2
    回复 5
    • 2023-06-05
      你好。有类似问题麻烦问下,调用.wx.miniProgram.navigateTo失败,报invokeMiniProgramAPI:permission denied 错误想问下是为什么
      2023-06-05
      回复
    • summer
      summer
      2024-03-18
      +1我也是服了
      2024-03-18
      回复
    • 莲藕
      莲藕
      2024-03-22
      我还是不行
      2024-03-22
      2
      回复
    • Winter
      Winter
      2024-06-26回复莲藕
      请问最后怎么解决的呢
      2024-06-26
      回复
    • 等风来。
      等风来。
      2024-07-05回复莲藕
      解决了吗,我的也还是不行
      2024-07-05
      回复
  • 骆驼刺
    骆驼刺
    发表于移动端
    2023-05-23
    获取定位的签名也必须从前端传地址到后端吗
    2023-05-23
    有用 1
    回复
  • 16hour !
    16hour !
    04-29

    如果签名是在服务端完成的话,那么URL一定要编码。

    encodeURIComponent(location.href)


    04-29
    有用
    回复
  • Jing
    Jing
    02-18

    主要是config 前后url 注册不一致,加载的时候存一下缓存即可,

    main.js

    new Vue({
      router: router,
      store,
      render: h => h(App),
      created() {
        localStorage.setItem('firstEntryUrl', location.href);
      }
    }).$mount('#app')
    
    

    wechat.js

    function waitUserConfirmPay(packageInfo) {
        return new Promise((resolve, reject) => {
            let url = window.localStorage.getItem('firstEntryUrl')
            const jsApiList = ['requestMerchantTransfer'];
            console.log('注册的url', url)
            window.axios({
                method: 'GET',
                url: '/**/**/getJsSignature?url=' + url,
                headers: {'Content-Type': 'application/json' }
            }).then(result => {
                wx.config({
                    debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                    appId: result.appid, // 必填,公众号的唯一标识
                    timestamp: result.timestamp, // 必填,生成签名的时间戳
                    nonceStr: result.noncestr, // 必填,生成签名的随机串
                    signature: result.signature, // 必填,签名
                    jsApiList // 必填,需要使用的JS接口列表,JSAPI调起用户确认收款
                })
                wx.ready(function () {
                    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
                    console.log('微信调用ready表示成功')
                    wx.checkJsApi({
                        jsApiList,
                        success: function (res) {
                            if (res.checkResult['requestMerchantTransfer']) {
                                // eslint-disable-next-line no-undef
                                WeixinJSBridge.invoke('requestMerchantTransfer', {
                                        mchId: process.env.MCH_ID,
                                        appId: process.env.APP_ID,
                                        package: packageInfo,
                                    },
                                    function (res) {
                                        resolve(res);
                                    }
                                );
                            } else {
                                alert('你的微信版本过低,请更新至最新版本。');
                                    reject(new Error('微信版本过低'));
                            }
                        },
                        fail: function(res) {
                            reject({
                                payFail: res
                            })
                        }
                    });
                })
                wx.error(function (res) {
                    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
                    console.log('wxOpen微信调用错误' ,res)
                        reject(new Error('微信配置错误'));
                })
            }).catch(error => {
                console.error('请求签名失败', error);
                    reject(error);
            });
        });
    }
    
    02-18
    有用
    回复
  • 满山的鸭子我嘴最硬
    满山的鸭子我嘴最硬
    2024-04-04

    我刚调好 注意这个域名 一定要看仔细这个域

    2024-04-04
    有用
    回复 2
    • 淡月微云
      淡月微云
      2024-05-19
      大佬,请问怎么调好的啊,救救孩子吧.............
      2024-05-19
      回复
    • CHEN
      CHEN
      2024-08-23
      大佬牛哇!感谢!!感谢!!
      2024-08-23
      回复
  • 沐丨、子鱼
    沐丨、子鱼
    2024-03-19

    提供一种错误的情况 我人麻了。。后端把url=http://mp.weixin.qq.com?params=当前页面

    这样写的 看了半天。。。离谱

    应该是url=当前页面

    2024-03-19
    有用
    回复
  • 世界之大
    世界之大
    2024-03-02

    求解呀,大家都是这样的问题,官网能不能写的简单点,写的很多歧义呀,大家都理解不了

    2024-03-02
    有用
    回复
  • 李小燚(yi)
    李小燚(yi)
    2023-09-11

    我遇到的就更奇怪,使用https(已配置ssl,其他访问都正常,就jssdk的不行),访问就无法注入config,用http访问就正常,奇奇怪怪

    2023-09-11
    有用
    回复
  • 。。。。。
    。。。。。
    2023-08-21

    成功解决,配置扫一扫调用失败问题请看文章

    https://www.cnblogs.com/tangyuqi/p/17645890.html


    2023-08-21
    有用
    回复
  • 非凡
    非凡
    2023-07-03

    你好这个js安全域名必须要经过ICP备案的吗?

    2023-07-03
    有用
    回复 1
    • 。
      2023-09-05
      对, 不然在设置的时候就会提示并没有备案, 保存不了
      2023-09-05
      回复

正在加载...

登录 后发表内容