h5中如何调起微信的扫一扫功能?

2 篇文章 0 订阅

看到这个需求的时候有点懵,第一反应就是去找文档,最后在微信官方文档-公众号-微信网页开发中-js-sdk文档说明中找到了这个调起微信扫一扫接口的功能。
接下来记录下是如何实现的吧。
首先我们肯定是要引入微信的js文件的

<script type="text/javascript" src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>

其次要调用微信内置的方法,那么我们就得配置wx.config

$.ajax({
	type: "post",
	url: '',//后台提供的接口
	data: {
		type: "signature",
		url: window.location.href.split("#")[0],
		weixinidx: 1
	},
	cache: false,
	dataType: 'json',
	success: function (res) {
		if (res.s) {
			var con = res.d;
			wx.config(
			{
				debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数
				appId: con.appid,
				timestamp: con.timestamp, // 必填,生成签名的时间戳
				nonceStr: con.noncestr, // 必填,生成签名的随机串
				signature: con.signature,// 必填,签名
				jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表
			});
		}
	},
	fail: function (e) {
	    layer.msg(e.msg)
	}
});

然后判断下当前客户端版本是否支持指定JS接口

wx.ready(function () {
	wx.checkJsApi({
		jsApiList: ['scanQRCode'],
		success: function (res) {
		},
		fail: function (e) {
		    layer.msg('当前登录环境不支持扫码,请切换微信环境')
		}
	});
}); 

最后就可以在需要实现扫一扫的地方调用接口了:

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

vue3开发的h5项目中如何调用微信扫一扫

JS-SDK说明文档官方链接地址

1.项目中引入微信js-sdk

npm install weixin-jsapi --save 或者 yarn add weixin-jsapi --save

2.封装微信校验和扫码方法

import { Toast } from 'vant'  //引入vant框架提示方法
import wx from "weixin-jsapi"; // 引入微信js-sdk 
import { getSign } from '@/api/common' // api
/**
 1. 获取微信签名,注入权限验证配置
 2. @returns 
 */
export  function requestWxConfig () {
  // 获取当前扫码界面的url,url后面不能携带任何参数及#号,所以在此进行分割
  const url = window.location.href.split("#")[0]
  getSign({ url }).then((res: any) => {
    if (res.code == 0) {
      let wxinfo = res.data
      wx.config({
        debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来
        appId: 'wxbec32ae3d8b95af4', // 必填,公众号的唯一标识
        timestamp: wxinfo.timestamp, // 必填,生成签名的时间戳
        nonceStr: wxinfo.nonceStr, // 必填,生成签名的随机串
        signature: wxinfo.signature, // 必填,签名,见附录1
        jsApiList: ['checkJsApi', 'scanQRCode'], // 必填,需要使用的JS接口列表,
      })
      /**wx.error可以返回微信config配置是否成功*/
      wx.error(function (res) {
        Toast(res.errMsg)
        console.log('微信config配置失败res', res)
      })
    }else{
      console.log('api接口报错==>', res)
    }
  })
}
/**
 点击扫描按钮的时候执行onScanQRCode方法
 */
export function onScanQRCode () {
  wx.scanQRCode({
    needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
    scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
    success:(res:any)=>{
      // 当needResult 为 1 时,扫码返回的结果
      console.log('wx.scanQRCode成功res==>', res)
    },
    fail: (err:any) => { 
      Toast(err.errMsg)
      console.log('wx.scanQRCode失败===>', err)
    }
  })
}
  1. 使用
<template>
<div @click="onScan">点击扫码</div>
</template>
  <script lang="ts">
import { onMounted } from 'vue';
import { onScanQRCode ,requestWxConfig } from '@/utils/common'
export default {
    setup(props: any, ctx: any) {
        /*.................................onMounted............................*/
    onMounted(() => {
      requestWxConfig ()//获取微信签名,注入权限验证配置
    })
     const onScan = () => {
        onScanQRCode()
     }
     return {
         ...toRefs(data),
            onScan 
     }
    },
}
</script>
  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
要在Vue H5调用小程序的扫一扫功能,可以按照以下步骤进行操作。 首先,我们需要在Vue项目引入微信的JS-SDK,可以使用npm安装weixin-js-sdk包。 ``` npm install weixin-js-sdk --save ``` 然后,在Vue组件引入微信JS-SDK,并进行配置。 ```javascript import wx from 'weixin-js-sdk' export default { mounted() { // 微信JS-SDK配置 wx.config({ appId: '', // 你的小程序AppID timestamp: '', // 生成签名的时间戳 nonceStr: '', // 生成签名的随机串 signature: '', // 签名 jsApiList: ['scanQRCode'] // 需要使用的JS接口列表 }) // 配置成功后,调用微信扫一扫功能 wx.ready(() => { document.querySelector('#scanBtn').addEventListener('click', () => { wx.scanQRCode({ needResult: 1, scanType: ['qrCode', 'barCode'], success: function (res) { var result = res.resultStr.split(',')[1] // 扫描结果 // 处理扫描结果 } }); }) }) }, } ``` 上述代码,需要将需要填写的一些参数替换为实际的值,例如小程序AppID、生成签名的时间戳、生成签名的随机串和签名等。 最后,我们在组件的模板添加一个按钮,并绑定点击事件。 ```html <template> <div> <button id="scanBtn">扫一扫</button> </div> </template> ``` 这样,当用户点击按钮时,就会触发微信扫一扫功能,并获取扫描结果进行处理。 以上就是在Vue H5调用小程序的扫一扫功能的简要步骤。注意,需要确保在微信环境才能正常使用微信JS-SDK。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值