微信扫一扫,ios系统扫码失效解决

发布时间:2024-01-08 17:53:40

问题场景:

调用微信扫一扫的 sdk时,安卓系统没有问题,苹果系统怎么点击都没反应

解决一:扫一扫的页面,是需要给接口传递当前页面地址生成签名的,ios系统不行,不能访问根路径/的地址,访问根路径,微信会用根路径签名,签名会过不去(必须用当前页面地址签名),所以项目a页面跳转b页面(有扫一扫按钮的页面)时,最好是location.href的方式跳转到b页面

window.location.href = import.meta.env.VITE_APP_CONTEXTURL + '/ticket-verificate'

解决二:根据官网要求调用ready方法,在?config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后?概述 | 微信开放文档

// 获取微信jsdk配置 扫一扫
const sdkData = ref({})
const urlsdk = location.href
const onClickScanIt = async () => {
    useData.value = {}
    const { code, data, msg } = await apiGetJssdkConfig({ url: urlsdk })
    if (code == 200) {
        sdkData.value = data
        wx.config({
            beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题
            appId: import.meta.env.VITE_APP_ID, // 必填,公众号的唯一标识
            timestamp: data.timeStamp, // 必填,生成签名的时间戳    <%= Html.Encode(ViewData["timestamp" ]) %>
            nonceStr: data.nonceStr, // 必填,生成签名的随机串
            signature: data.signature, // 必填,签名
            jsApiList: ['checkJsApi', 'scanQRCode'] // 必填,需要使用的JS接口列表, 这里只需要调用扫一扫
        });
        wx.ready(function () {
            wx.scanQRCode({
                needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
                success: function (res) {
                    console.log("调用扫描成功", res);
                    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
                    searchValue.value = result;
                    getUseorderinfo();
                },
                error: function (res) {
                    console.log(res)
                    if (res.errMsg.indexOf('function_not_exist') > 0) {
                        alert('版本过低请升级')
                    }
                }
            });
            wx.error(function (res) {
                alert("错误信息:" + JSON.stringify(res));
            });
        })
    }
}

文章来源:https://blog.csdn.net/luoxiaonuan_hi/article/details/135456788
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。