wx.config的时候总是报错63002是什么原因,配置时总是 invalid signature

真的是真的是,我都弄的崩溃了差点,卡了三天的问题,各种留言各种找人还是不行,为了不再让各位体验那种感觉,zkhh666我的wx

首先说,我用的hbuilderx的uni做的,使用了推荐的插件jweixin-module,

ps:**我的问题是url后面少了/,**因为会自动默认有/的,其他往下看,**我还遇到了url填当前页面不行,**但首页的就可以的为

很好的一个插件,首先是historyhash都可以的

我的后端用了集成的一个方法,说是经过检验,上百家企业用过的方法,所以一直不敢往他那边想问题,但还是怕他jsapi_ticket获取失败,一再让他检查是不是问题,因为看到一个帖子是这个问题,楼主都快急哭了(我已经急哭了)

在这里插入图片描述
飞机票链接跳转

再说一下我的问题:

1、使用了history
2、前后端分离,使用的测试公众号(看b站上都是一个人写,使用的也是自己公众号)所以没法照着写

3、我是由于url不正确导致的:(据说百分之八十都是)

4、对了有可能是encodeURI() 。需要编译一下(我是没用到)

alert(location.href.split(’#’)[0])我弹了一下,好家伙,url里面有个’/'没有加上,好了,直接上截图比较明显了

在这里插入图片描述

使用映射地址是可以的

在这里插入图片描述

好了再上代码,借鉴https://blog.csdn.net/weixin_39793790/article/details/108767478

jws.js文件

import request from './request.js'     //请求
// jwx.js
//#ifdef H5
const jweixin = require('jweixin-module')
//#endif
export function configWeiXin(callback) {
		//我弹了一下,真的管用 alert(location.href.split('#')[0])
		//因为我没结构出来,太激动了,以后再说
		  request.request('/wechat/getJsapiTicket',{url: 'http://b7h4km.natappfree.cc/',appId: 'wx873ee40d6bbd9b4e'},'GET')
		  .then(res=>{										
			  console.log(res,'调用原功能参数')
		  // 可能需要用到的能力 需要啥就写啥。多写也没有坏处
			  let apiList = [ 
			  	'onMenuShareAppMessage',
			  	'onMenuShareTimeline',
			  	'hideOptionMenu',
				'scanQRCode',
			  	'showOptionMenu',
			  	'chooseWXPay',
			  	'checkJsApi',
			  	'openLocation',
			  	'getLocation',
				'uploadImage',
				'updateAppMessageShareData',
			  ];
			  	console.log(jweixin,res.result.timestamp,res.result.nonceStr,res.result.signature,apiList,'222222')
			  let info = {
				  // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
			  	  debug: true, // 调试是true,发布的时候改为false
				  appId: res.result.appId, // 必填,公众号的唯一标识
				  timestamp: res.result.timestamp, // 必填,生成签名的时间戳
				  nonceStr: res.result.nonceStr, // 必填,生成签名的随机串
				  // signature: res.result.signature.toLowerCase(),// 必填,签名
				  signature: res.result.signature,// 必填,签名
			  	  jsApiList: apiList
			  };
			  
			  jweixin.config(info);
			  jweixin.error(err => {
			  	console.log('config fail:', err);
			  });
			  
			  jweixin.ready(res => {
			  	if (callback) callback(jweixin);
			  });
			
		  })

		.catch(err=>{
			console.log(err,'调用签名错误拉!')
		})
}

vue页面里面

import * as jwx from '../../utils/jws.js'
methods: {
			fn(val){
				console.log(wx.config)
				console.log(jwx.configWeiXin)
				switch(val){
					case '调用扫码':
					jwx.configWeiXin(jweixin => {
						jweixin.scanQRCode({
						  needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
						  scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
						  success: function (res) {
							  console.log(res)
							var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
						  },
						  fail: function (err){
							  console.log(err)
						  }
						});
						
					})
					break
				}
			},
}

先贴一下排查方法吧,下面再说问题:

invalid signature签名错误建议按如下顺序检查:



   
(1)确认签名算法正确,可用 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign 页面工具进行校验。



   
(2)确认config中nonceStr(js中驼峰标准大写S, timestamp与用以签名中的对应noncestr, timestamp一致。



   
(3)确认url是页面完整的url(请在当前页面alert(location.href.split('#')[0])确认),包括'http(s)://'部分,以及'?'后面的GET参数部分,但不包括'#'hash后面的部分。



   
(4)确认 config 中的 appid 与用来获取 jsapi_ticket 的 appid 一致。



   
(5)确保一定缓存access_token和jsapi_ticket。



   
(6)确保你获取用来签名的url是动态获取的,动态页面可参见实例代码中php的实现方式。如果是html的静态页面在前端通过ajax将url传到后台签名,前端需要用js获取当前页面除去'#'hash部分的链接(可用location.href.split('#')[0]获取,而且需要encodeURIComponent),因为页面一旦分享,微信客户端会在你的链接末尾加入其它参数,如果不是动态获取当前链接,将导致分享后的页面签名失败。


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值