H5公众号调用微信扫一扫功能(vue)

1.引入微信sdk 

import wx from 'weixin-js-sdk'

2.初始化微信sdk,构建扫一扫所需要的参数

 async initWxConfig() {

      //首先获取当前url地址

      let url = await getSignUrl()

      let params = {

        appid: this.$route.query.appid,

        url: url,

      }

      //调用后端接口获取公众号参数

      const resp = await apiGet(apiGetSignature, params)

      if (resp.code == 200) {

        wx.config({

          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。

          appId: resp.data.appid, // 必填,公众号的唯一标识

          timestamp: resp.data.timestamp, // 必填,生成签名的时间戳

          nonceStr: resp.data.nonceStr, // 必填,生成签名的随机串

          signature: resp.data.signature, // 必填,签名

          jsApiList: ['checkJsApi', 'scanQRCode'],

          openTagList: ['wx-open-launch-weapp'],

          success: function () {

            console.log('调用成功')

          },

          fail: function (error) {

            console.log(error)

          },

        })

      } else {

        console.log('auth wx url error')

      }

    },

getSignUrl获取当前项目链接(此处封装的公用方法,便于后续其他页面调用): 

export function getSignUrl(){

    var signLink = ''

    var ua = navigator.userAgent.toLowerCase();

    if (/iphone|ipad|ipod/.test(ua)) {

        signLink =window.entryUrl;

        if(!signLink)signLink = location.href

    } else {

        signLink = location.href

    }

    return signLink;

}

3.点击页面按钮调用微信提供的扫一扫方法:

 

  handleClick() {

      wx.ready(function () {

        wx.checkJsApi({

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

          jsApiList: ['scanQRCode'],

          success: function (res) {

            // 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}

            if (res.checkResult.scanQRCode != true) {

              console.log('抱歉,当前客户端版本不支持扫一扫')

            }

          },

          fail: function (res) {

            //检测getNetworkType该功能失败时处理

            alert('checkJsApi error')

          },

        }) //wx.checkJsApi结束

        // 调起企业微信扫一扫接口

        wx.scanQRCode({

          desc: 'scanQRCode desc',

          needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,

          scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有

          success: function (res) {

            console.log('调用扫描成功', res)

            var result = res.resultStr // 当needResult 为 1 时,扫码返回的结果

            $('#codeValue').val(result) //显示结果

            // alert("扫码结果为:" + result);

          },

          error: function (res) {

            console.log(res)

            if (res.errMsg.indexOf('function_not_exist') > 0) {

              alert('版本过低请升级')

            }

          },

        }) //wx.scanQRcode结束

      }) //wx.ready结束

    },

 

全部完整代码: 

<!-- 微信扫一扫 -->
<template><div class="collaborative_page common_page"><van-button type="primary" @click="handleClick">点击扫一扫</van-button></div>
</template><script>
import { apiGetSignature } from '@/api/common.js'
import { getSignUrl } from '@/utils/share.js'
import wx from 'weixin-js-sdk'
export default {data() {return {}},created() {this.LoginInfo = mySessionStorage.getItem('LoginInfo')? JSON.parse(mySessionStorage.getItem('LoginInfo')): {}this.initWxConfig()},mounted() {},methods: {//点击按钮扫一扫handleClick() {wx.ready(function () {wx.checkJsApi({//判断当前客户端版本是否支持指定JS接口jsApiList: ['scanQRCode'],success: function (res) {// 以键值对的形式返回,可用true,不可用false。如:{"checkResult":{"scanQRCode":true},"errMsg":"checkJsApi:ok"}if (res.checkResult.scanQRCode != true) {console.log('抱歉,当前客户端版本不支持扫一扫')}},fail: function (res) {//检测getNetworkType该功能失败时处理alert('checkJsApi error')},}) //wx.checkJsApi结束// 调起企业微信扫一扫接口wx.scanQRCode({desc: 'scanQRCode desc',needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,scanType: ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有success: function (res) {console.log('调用扫描成功', res)var result = res.resultStr // 当needResult 为 1 时,扫码返回的结果$('#codeValue').val(result) //显示结果// alert("扫码结果为:" + result);},error: function (res) {console.log(res)if (res.errMsg.indexOf('function_not_exist') > 0) {alert('版本过低请升级')}},}) //wx.scanQRcode结束}) //wx.ready结束},async initWxConfig() {//首先获取当前url地址let url = await getSignUrl()let params = {appid: this.$route.query.appid,url: url,}//调用后端接口获取公众号参数const resp = await apiGetSignature(params)if (resp.code == 200) {wx.config({debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。appId: resp.data.appid, // 必填,公众号的唯一标识timestamp: resp.data.timestamp, // 必填,生成签名的时间戳nonceStr: resp.data.nonceStr, // 必填,生成签名的随机串signature: resp.data.signature, // 必填,签名jsApiList: ['checkJsApi', 'scanQRCode'],openTagList: ['wx-open-launch-weapp'],success: function () {console.log('调用成功')},fail: function (error) {console.log(error)},})} else {console.log('auth wx url error')}},},
}
</script>

官方文档提供的扫一扫方法:

概述 | 微信开放文档 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1551473.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

湖州市自闭症寄宿学校:个性化关爱让每个孩子都能茁壮成长

在探索自闭症儿童教育的广阔领域中&#xff0c;湖州市的自闭症寄宿学校以其个性化的教育模式&#xff0c;为众多家庭点亮了希望之光。然而&#xff0c;当我们把视线转向中国南方的一座现代化大都市——广州&#xff0c;会发现另一所同样在自闭症儿童教育领域深耕细作、成果斐然…

推荐一个可以把PDF样本册转换为翻页电子书的网站

​随着互联网的普及&#xff0c;越来越多的企业和个人开始意识到线上展览的重要性。如何将实体样本册转化为线上版本&#xff0c;让更多人了解和欣赏自己的产品与服务&#xff1f; 一、网站简介 这款PDF样本册免费上传网站名为“FLBOOK”&#xff0c;致力于为广大用户提供便捷…

非关键尺寸的失效模式和效应分析(FMEA)是否有必要进行?

在追求极致的过程中&#xff0c;一个看似不起眼的细节——非关键尺寸的失效模式和效应分析&#xff08;FMEA&#xff09;&#xff0c;却常常被忽视或低估其重要性。本文&#xff0c;深圳天行健企业管理咨询公司旨在分享为何在非关键领域&#xff0c;FMEA同样不可或缺&#xff0…

redis面试-2024

1、Redis的基本数据结构类型 string、list、set、hash、zet。还有三种特殊类型&#xff1a;Geospatial、Hyperloglog、bitMap。 2、各数据类型对应的场景 3、redis快的原因 *基于内存 内存读写效率远高于磁盘读写&#xff0c;省去磁盘IO操作 *存储形式 Redis作为K-V键值对…

Oracle 日志文件多路复用

多路复用 PRODCDB 数据库的所有日志组中的 redo log 文件&#xff0c;存放目录&#xff1a; /u01/app/oracle/oradata/MREDO 1.创建目录 mkdir -p /u01/app/oracle/oradata/MREDO 2.查看日志文件路径 select group#,member from v$logfile; 3.增加日志组文件 alter database a…

828华为云征文|华为云Flexus X实例初体验

一直想有自己的一款的服务器&#xff0c;为了更好的进行家庭娱乐&#xff0c;甚至偶尔可以满足个人搭建开发环境的需求&#xff0c;直到接触到了华为云 Flexus X 云服务器。 Flexus 云服务器 X 实例是面向中小企业和开发者打造的轻量级云服务器。提供快速应用部署和简易的管理…

【论文阅读】MEDICAL GRAPH RAG: TOWARDS SAFE MEDICAL LARGE LANGUAGE MODEL VIA

论文地址&#xff1a;https://arxiv.org/abs/2408.04187#:~:textWe%20introduce%20a%20novel%20graph-based%20Retrieval-Augmented 代码地址&#xff1a; GitHub - MedicineToken/Medical-Graph-RAG: Medical Graph RAG: Graph RAG for the Medical Data 1 研究背景&#xff1…

英伟达GPU和互联路线发展分析

英伟达最新GPU和互联路线图 Nvidia在计算、网络和图形领域独树一帜&#xff0c;雄厚资金助力其在生成式AI市场领跑&#xff0c;可自由探索创新路线图。 21世纪&#xff0c;Nvidia虽无需拓展数据中心计算&#xff0c;却因HPC研究人员引领进入加速计算。AI研究人员借助GPU计算开…

C/C++ 中的未定义行为(Undefined Behavior, UB)

0. 简介 在 C/C 编程中&#xff0c;理解未定义行为&#xff08;UB&#xff09;及其相关概念至关重要。本文将对未定义行为进行详细解析&#xff0c;并通过实例展示其影响与处理方法。 1. 概念辨析 在 C/C 中&#xff0c;未定义行为容易与以下两个概念混淆&#xff1a; 1.1 …

广西容县霞烟鸡,品牌兴农,助力乡村振兴!

在两广与港澳地区,流传着一句深入人心的饮食谚语——“无鸡不成宴”,它不仅是一种习俗的体现,更是对餐桌礼仪与待客之道的深刻诠释。每逢家宴欢聚、祭祖庆典或盛宴宾客,一只精心烹制的鸡总是不可或缺的主角,其缺席往往被视为对宾客的不敬。在这片美食文化的沃土上,广西容县的霞…

YashanDB Docker镜像制作

本文作者&#xff1a;YashanDB中级服务工程师鲍健昕 为什么需要Docker部署数据库 常规使用 yasboot 部署数据库的方法&#xff0c;操作流程复杂&#xff0c;需要配置许多配置文件以及环境变量&#xff0c;不同用户使用的环境不同&#xff0c;那么环境配置也会存在差异&#x…

聊一下数据脱敏

背景 随着信息社会高速发展&#xff0c;大家对隐私数据的安全越来越重视&#xff0c;现在市面上各种搜集个人信息的网站&#xff0c;app层出不穷&#xff0c;你也不知道你的信息提交上去后&#xff0c;提供服务的那边&#xff0c;是不是会妥善保管好你的个人数据&#xff0c;包…

Web和UE5像素流送、通信教程

一、web端配置 首先打开Github地址&#xff1a;https://github.com/EpicGamesExt/PixelStreamingInfrastructure 找到自己虚幻引擎对应版本的项目并下载下来&#xff0c;我这里用的是5.3。 打开项目找到PixelStreamingInfrastructure-master > Frontend > implementat…

【pytorch】pytorch入门5:最大池化层(Pooling layers )

文章目录 前言一、定义概念 缩写二、参数三、最大池化操作四、使用步骤总结参考文献 前言 使用 B站小土堆课程 一、定义概念 缩写 池化&#xff08;Pooling&#xff09;是深度学习中常用的一种操作&#xff0c;用于降低卷积神经网络&#xff08;CNN&#xff09;或循环神经网…

GWAS分析中显著位点如何注释基因:excel???

大家好&#xff0c;我是邓飞。 今天星球的小伙伴问了一个问题&#xff1a; 我现在在做GWAS分析&#xff0c;现在已经找到性状关联的SNP位点&#xff0c;下一步我如何根据position 找到基因呢&#xff1f; 关于基因注释&#xff0c;之前写过一些博客&#xff0c;可以用到的软件…

windows全局配置pip镜像源

在Windows系统中&#xff0c;可以在用户目录下创建一个名为pip的文件夹&#xff0c;然后创建一个名为pip.ini的配置文件&#xff0c;其中输入镜像源信息。 [global] index-url http://mirrors.aliyun.com/pypi/simple/ [install] trusted-hostmirrors.aliyun.com

什么是reactor以及其三种版本

写在前面 本文来看下什么是reactor以及其三种版本。 1&#xff1a;什么是reactor以及其三种版本 为了更好的理解什么是reactor&#xff0c;我们结合现实生活中的例子来看下。 翠花是个貌美如花的姑娘&#xff0c;人称赛东施&#xff0c;她的梦想是嫁给王子&#xff0c;可是天…

AI产品经理如何做好职业规划❓

AI如何做好职业规划❓ 一、认识AI产品经理的角色 AI产品经理是连接技术与市场的桥梁&#xff0c;需要具备以下核心能力: 1)技术理解力 深入理解AI技术&#xff0c;包括机器学习、深度学习、自然语言处理等。 2)市场洞察力 敏锐捕捉市场动态&#xff0c;理解用户需求和行业趋…

中概股浪潮中暴涨20%的知乎,被低估了吗?

“在未来&#xff0c;要么被AI统治&#xff0c;要么成为AI的创造者”——埃隆马斯克 9月27日以来&#xff0c;受政策以及AI应用前景的利好&#xff0c;中概股开启了一轮强力的反弹。其中&#xff0c;知乎涨超10%&#xff0c;领涨一众中概股&#xff0c;花旗、福瑞集团均给出了…

企业内训|AI助力智能办公与职场效能提升-青岛某国资平台

9月25日&#xff0c;TsingtaoAI派驻讲师进驻现场&#xff0c;为青岛市某国资平台公司员工交付“AI助力智能办公与职场效能提升”企业内训&#xff0c;整个培训通过AIGC的实际应用案例&#xff0c;帮助学员掌握智能办公的常用工具&#xff0c;提升工作流程优化和决策效率。课程涵…