微信公众号iframe导致的jsp扫码签名出错问题

微信小程序的星级评价样式和处理逻辑

       前段时间写了一个微信公众号,里面有一个扫码登录网页端的操作,明明是按照在别的界面扫码获取条形码数字的方法来写的,但是却不知道为什么一直提示签名错误。

       jssdk报config:fail,Error: 系统错误,错误码:63002,invalid signature

       想了挺久,明明配置,appid等参数都是一样的,为何在另外一个界面可行,在“我的”界面却是不行。难道是因为iframe导致的问题?因为我在子界面使用location.href.split(’#’)[0]获取的链接和我的界面链接对不上。

       界面如下所示:

在这里插入图片描述

       因此我想了一个法子,我将获取签名、wxConfig等方法写入到主界面main.jsp之中,然后在iframe里面调用父界面的代码,果然签名就成功通过,可以调用扫码功能了。

       大概的jsp代码如下:
       (1)main中的代码:
       _getWechatSignUrl为java文件中定义的获取微信签名的代码,因为不是重点,便不再此累述。

			//获取签名
			function getsign(){
				var _getWechatSignUrl = 'wechat/getSign';
				var token_data = encodeURIComponent(location.href.split('#')[0]);
				$.ajax({
					url:_getWechatSignUrl,
					data:{"url":token_data},
					dataType:"json",
					type: 'POST',
					cache:false,
					success:function(res){
						console.log(res);
						//获得签名之后传入配置中进行配置
						wxConfig(res.appId,res.timestamp,res.nonceStr,res.signature);
					}
				})
			}
			function wxConfig(_appId,_timestamp, _nonceStr, _signature) {
				wx.config({
					debug:false,// 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
					appId: _appId,// 必填,公众号的唯一标识
					timestamp: _timestamp,// 必填,生成签名的时间戳
					nonceStr: _nonceStr,// 必填,生成签名的随机串
					signature: _signature,// 必填,签名,见附录1
					jsApiList: ['checkJsApi', 'startRecord', 'stopRecord','translateVoice','scanQRCode', 'openCard']
					// 必填,需要使用的JS接口列表,所有JS接口列表见附录2
				});
			}
			function ScanQrCode(){
			 	wx.scanQRCode({
		            desc: 'scanQRCode desc',
		            needResult : 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
		            scanType : [ "qrCode", "barCode" ], // 可以指定扫二维码还是一维码,默认二者都有
		            success : function(res) {
		                //调用你需要调用的代码
		            },
					error:function(res){
						$.toptip(res.errMsg);
					}
		        }); 
			}

       (1)mine中的代码:
       mine主要是在点击扫码图标之后,调用父界面的开启摄像头扫码的方法。

		$("#scanQRCode").click(function(event){
		   //调用父界面的扫一扫功能
		   parent.ScanQrCode();
	   })
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值