h5页面的按钮按下调用出微信扫一扫功能

h5页面的按钮按下调用出微信扫一扫功能,这个功能怎么实现。
h5页面的按钮按下调用出微信扫一扫功能,这个功能怎么实现。h5页面的按钮按下调用出微信扫一扫功能,这个功能怎么实现。

这个 需要 借助 wx官方的jdk

img

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#1

页面上点击按钮打开扫一扫的话,你可以使用js-sdk(https://mp.weixin.qq.com/wiki 中的微信网页开发——》微信JS-SDK说明文档)

https://my.oschina.net/u/4538334/blog/5270581

这个需要用到微信的js-sdk,想要使用这个sdk,你首先需要获取签名,签名的逻辑必须在后端实现,这是后端实现签名的文档
https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62

前端的做法就是先调用后端签名的接口,然后拿到后端返回的签名,调用wx.config注入需要用的功能,
我之前做过,前端代码你可以参考

scan() {
            let urls = location.href.split("#")[0];
            postAjax( `这里是后端签名的接口地址`,{
                url:urls,//接口参数必要当前页面的url,
                appId:"",//appid根据需求,如果只有一个公众号,可以在后端写死,如果有多个,可以前端传入
            }).then((res: any) => {
                //console.log(res);
              //这里的判断逻辑根据后端返回的参数来写
                if (res.data.code == 200) {
                    let result = res.data.data;
                    let that = this;
                    // @ts-ignore
                    wx.config({
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
                        appId: result.appId, // 必填,公众号的唯一标识
                        timestamp: result.timestamp, // 必填,生成签名的时间戳
                        nonceStr: result.nonceStr, // 必填,生成签名的随机串
                        signature: result.signature,// 必填,签名
                        jsApiList: ["scanQRCode"] // 必填,需要使用的JS接口列表
                    });
                    // @ts-ignore
                    wx.ready(function () {
                        // @ts-ignore
                        wx.scanQRCode({
                            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                            scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
                            success: function (tes: any) {
                                let result: string = tes.resultStr; // 当needResult 为 1 时,扫码返回的结果
                            }
                        });
                    });
                    // @ts-ignore
                    wx.error(function (res: any) {
                        // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
                        console.log("签名失败", res);
                    });
                }
            })
        }

不同环境在不同环境下使用,例如:
微信浏览器使用微信的扫一扫

通用的话,建议用打开图片拍照,然后识别图片里的二维码

1、绑定域名,先登录微信公众平台进入“公众号设置”的“功能设置”里填写“JS接口安全域名”。
2、引入 JS 文件,在需要调用 JS 接口的页面引入如下 JS 文件,http://res.wx.qq.com/open/js/jweixin-1.6.0.js
3、通过 config 接口注入权限验证配置

wx.config({
  debug: true, // 开启调试模式,调用的所有 api 的返回值会在客户端 alert 出来,若要查看传入的参数,可以在 pc 端打开,参数信息会通过 log 打出,仅在 pc 端时才会打印。
  appId: '', // 必填,公众号的唯一标识
  timestamp: , // 必填,生成签名的时间戳
  nonceStr: '', // 必填,生成签名的随机串
  signature: '',// 必填,签名
  jsApiList: [] // 必填,需要使用的 JS 接口列表
});

4、调用微信扫一扫接口,将以下代码放到你的按钮click事件里面即可。

wx.scanQRCode({
  needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  success: function (res) {
    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
  }
});

官网有对应的api

用微信公众平台提供的js-sdk就可以实现,去看微信公众号开发文档