uniapp中调用微信JSSDK在IOS中invalid signature签名失败

542 阅读1分钟

业务场景

项目中用的是uniapp开发H5网页,在网页中调用微信的扫一扫功能,就使用微信的JSSDK,安卓手机扫码没一点问题,但是用苹果手机一到调用微信扫一扫的页面,就会报签名失效问题,如下图所示

1724306530470.jpg

安卓手机没有任何问题,苹果手机签名失效,微信扫一扫的功能也不能调用,因为生成签名的时候要把当前的路由地址发送给后端,但是在ios系统和安卓系统生成的路由地址不一样,导致ios系统每次会签名失效,

解决办法

在app.vue中加上这段代码,进到页面就获取一下当前的路由地址

mounted() {
  uni.setStorage({
   key: 'WxCodeUrl',
   data: location.href
  });
}

然后在每个页面调用的时候去判断一下是否为ios系统

getUrl() {
  var signLink = ''
  var ua = navigator.userAgent.toLowerCase();
  if (/iphone|ipad|ipod/.test(ua)) {
   signLink = uni.getStorageSync('WxCodeUrl');
   if (!signLink) signLink = location.href
  } else {
   signLink = location.href
  }
  return signLink;
}

然后把上面返回的url传给后端就可以了,如果大家有什么简单的办法,可以一起讨论留言