H5页面调用扫一扫功能

想要实现H5页面调用微信扫一扫功能,必须先了解微信JS-SDK接口

企业号开发接口文档地址:https://qydev.weixin.qq.com/wiki/index.php?title=%E9%A6%96%E9%A1%B5

我们来看下使用的大概步骤

1、在页面引入js文件http://res.wx.qq.com/open/js/jweixin-1.2.0.js

2、通过config接口注入权限验证配置

所有需要使用JS-SDK的页面必须先注入配置信息

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

 3、通过ready接口处理成功验证

wx.ready(function(){
    // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个
客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
});

 4、通过error接口处理失败验证

wx.error(function(res){
    // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
});

5、接口调用说明

所有接口通过wx对象来调用,有以下通用参数:

(1)success:接口调用成功的回调

(2)fail:接口调用失败的回调

(3)complete:接口调用完成时执行,不论失败或成功都执行

(4)cancel:用户点击取消时执行

(5)trigger: 监听Menu中的按钮点击时触发的方法

6、项目实例:

<html>
    <head>
        <meta charset="utf-8" />
	    <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <script src="../../js/jweixin-1.3.2.js"></script>
    </head>
    <body>
        <button v-on:click="scan()">扫描二维码</button>
        <script>
            ...
            ...
            doconfig() {
                let url = location.href.split('#')[0];
                let params = {
                    url: encodeURIComponent(url),
                    jsApiList: ['scanQRCode']
                }
                this.$http.post(this.baseUrl + '/api/wechat/jssdk', params, {
                    headers: {
                        Authorization: this.token
                    }
                }).then(function (res) {
                    let data = JSON.parse(res.body.message);
                    wx.config({
                        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,测试完成后需要关闭。
                        appId: data.appId, // 必填,公众号的唯一标识
                        timestamp: data.timestamp, // 必填,生成签名的时间戳
                        nonceStr: data.nonceStr, // 必填,生成签名的随机串
                        signature: data.signature, // 必填,签名(加密后,下文有实现)
                        jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表,开发文档上有所有接口名称,根据需要选用就好。
                    });
                }, function () {
                    console.log('请求失败处理');
                });
            },
            scan() {
                this.doconfig();
                let that = this;
                wx.scanQRCode({
                    needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
                    scanType: ["qrCode"], // 可以指定扫二维码还是一维码,默认二者都有
                    success: function (res) {
                        var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
                        that.putscan(res.resultStr)
                    }
                });
            },
        </script>
    </body>
</html>

 

要在Vue H5页面中使用扫一扫功能,你需要使用HTML5的API,比如MediaDevices.getUserMedia()和Canvas等。 首先,你需要在页面中引入一个二维码扫描库,比如zxing-js。然后,你可以使用Vue的生命周期钩子函数mounted()来初始化二维码扫描器,并在页面中创建一个canvas元素来显示扫描到的二维码图像。 以下是一个简单的示例代码: ```html <template> <div> <canvas ref="canvas"></canvas> </div> </template> <script> import QrScanner from 'zxing'; export default { mounted() { const canvasElement = this.$refs.canvas; const qrScanner = new QrScanner(canvasElement, result => { console.log(result); qrScanner.stop(); }); qrScanner.start(); } } </script> ``` 在这个示例中,我们引入了zxing-js库,并在mounted()钩子函数中初始化了一个QrScanner对象。我们将canvas元素传递给QrScanner构造函数,并在回调函数中处理扫描到的二维码数据。最后,我们调用qrScanner.start()方法来启动扫描器。 请注意,要在移动设备上使用摄像头,你需要在页面中请求用户授权。你可以使用navigator.mediaDevices.getUserMedia()方法来请求摄像头访问权限,例如: ```javascript const stream = await navigator.mediaDevices.getUserMedia({ video: true }); ``` 然后,你可以将流传递给QrScanner对象: ```javascript const qrScanner = new QrScanner(canvasElement, result => { console.log(result); qrScanner.stop(); }); qrScanner.start(stream); ```
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值