h5在小程序中调用微信扫码功能

这篇具有很好参考价值的文章主要介绍了h5在小程序中调用微信扫码功能。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目前扫码模块是用原生小程序写的页面,登录和之后跳转的页面都是通过webView嵌套在小程序里面的h5。

  • 需求:h5页面扫码,拿到扫码后的结果,去查询列表的数据。
  • 方案:在h5中引入微信的sdk,在A页面跳转进入原生小程序的B扫码页面,在B扫码页面拿到扫码结果,再跳转回原来的A页面,并且在路由上携带扫码的结果

1.安装依赖

npm install weixin-js-sdk

2.h5使用依赖进行跳转

A.vue

<template>
  <van-col class="scan" span="3" @click="gotoScan">
     <van-icon class="scanIcon" name="scan" />
   </van-col>
</template>
<script>
import wx from "weixin-js-sdk";
export default {
  created() {
    // 获取传递回来的数据,token是要继续传回来的,因为扫码回来的跳转是调不同体系的页面了
    let { result, token, username } = this.$route.query || {};
    if (result) {//如果扫码结果存在
      localStorage.setItem("token", this.$route.query.token);
      localStorage.setItem("username", this.$route.query.username);
      //扫码失败
      if (result === "error") {
        return Toast("扫码失败!");
      } else {
        // 扫码成功
        this.queryValue = result;
        // 编码不存在
	    if (!result|| result=== "undefined") {
	        Toast("名称或编码不存在!");
	      } else {
	        Toast("扫码结果:" + result);
	        this.msgFun();
	     }
      }
    } else {
      // 如果路由没有参数,就直接查询列表
      this.msgFun();
    }
  },
  methods: {
    // 跳转到小程序的“扫一扫”页面
    gotoScan() {
      let that = this;
      if (navigator.userAgent.toLowerCase().indexOf("miniprogram") !== -1) {
        // 判断是否是微信环境
        // 微信环境 如果不是Vue导入方式,需要写成window.wx.miniProgram.getEnv()
        wx.miniProgram.getEnv(function (res) {
          if (res.miniprogram) {
            // 小程序环境下逻辑,跳转到小程序的页面地址,并且携带参数过去
 			wx.miniProgram.navigateTo({
              url:
                "../scan/scan?token=" +
                localStorage.getItem("token") +
         		"&username=" +
                localStorage.getItem("userName") +
                `&pageName=index`,
            });
          }
        });
      }  else {
        if (
          navigator.userAgent.toLowerCase().indexOf("micromessenger") !== -1
        ) {
          Toast("微信内置浏览器");
        } else Toast("非微信环境逻辑");
         // 非微信环境逻辑,比如在浏览器下,可以在这里写一些事件
     }
    },
        
    // 查询列表
    msgFun() {
      service
        .findTransportationTaskNew({ queryValue: this.queryValue })
        .then((res) => {
        	//----
        })
    }
}
</script>

3.小程序扫码

3.1 配置页面

app.json

{
    "pages": [
        "pages/index/index",
        "pages/scan/scan"
    ],
    "window": {
        "backgroundTextStyle": "light",
        "navigationBarBackgroundColor": "#fff",
        "navigationBarTitleText": "Weixin",
        "navigationBarTextStyle": "black"
    },
    "style": "v2",
    "sitemapLocation": "sitemap.json"
}

3.2 扫码页面

pages/scan/scan.js

// 注意,这里扫码后回跳转到首页去
Page({
    data: {},//页面的初始数据
    onLoad: function(options) {//生命周期函数--监听页面加载
        this.setData({
            token: options.token,
            id: options.id,
            username: options.username
        })
        //兼容ios微信无法立即调起扫一扫
        setTimeout(function () {
            wx.scanCode({//调用扫一扫
                onlyFromCamera: false,
                success: function (res) {//扫码成功的回调函数
                    wx.reLaunch({//失败的话,重定向到页面中,并且携带miniType参数和result参数
                        url: '../index/index?id=' + options.id + '&result=' + res.result + '&username=' + options.username + '&token=' + options.token + '&type=wechat'
                    })
                },
                error: function (err) {//扫码失败的回调函数
                    console.log('err');
                    wx.reLaunch({//失败的话,重定向到页面中,并且携带miniType参数和result参数
                        url: '../index/index?id=' + options.id + '&result=error&username=' + options.username + '&token=' + options.token + '&type=wechat'
                    })
                },
                fail: function(res) {//取消扫一扫
                    wx.reLaunch({//失败的话,重定向到页面中,并且携带miniType参数和result参数
                        url: '../index/index?id=' + options.id + '&result=error&username=' + options.username + '&token=' + options.token + '&type=wechat'
                    })
                }
            })
        }, 50)
    },
    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {
    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    }
})

pages/scan/scan.js

<view class="scan">数据加载中...</view>

3.3 首页(嵌套容器页面)

pages/index/index.js

// 获取应用实例
const app = getApp()

Page({
  data: {
    pathUrl: ''//嵌入web-view的地址
  },
  // 事件处理函数
  bindViewTap() {},
  onLoad(options) {
    //options为路由跳转携带的参数
    if (Object.keys(options) && Object.keys(options).length > 0) {
        if (options.result) {
            // 最终又跳回到h5的列表页(实际都通过)
            this.setData({
                pathUrl: '/#/h5/index?result=' + options.result + '&username=' + options.username + '&token=' + options.token + '&type=wechat'
            })
        } else this.setData({
            pathUrl: '/#/barCodeDetail' + '?' + options.scene
        })
    }
  },
})

pages/index/index.wxml文章来源地址https://www.toymoban.com/news/detail-689365.html

<view class="container">
	<!--通过{{}}绑定变量-->
	<web-view src="{{'https://xxx.com'+pathUrl}}"></web-view>
</view>

到了这里,关于h5在小程序中调用微信扫码功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【h5+微信小程序】vue2实现h5扫码登录功能

    需要实现在同域名的h5页面上增加一个微信扫码登录的功能,如果用户已经有小程序的账号,可以直接登录。 使用 :vue2+微信小程序原生开发 可以实现上述功能的 前提 是:同一用户,对同一个微信开放平台下的不同应用,UnionID是相同的。域名已经配置。 可以用什么来区分

    2024年02月14日
    浏览(71)
  • 微信扫码跳转微信小程序

    一:首先声明为什么需要这样做         项目中需要在后台管理页面进行扫码支付,其他人弄了微信小程序支付,所以就需要挑战小程序进行支付,在跳转的时候需要参数例如订单编号等 二:跳转小程序的方法有多种         接口调用凭证 | 微信开放文档          具体可

    2024年02月11日
    浏览(70)
  • 微信扫码进入小程序特定页面

    小程序配置 开发 - 开发管理 - 开发设置-普通链接二维码打开小程序 配置好的截图 如下:二维码规则建议是自己的域名 + /mini/ 功能页面 pages/index/index 是为了方便跳转其他页面 记得把校验文件发给后端 web 端处理 二维码格式为: 二维码规则/功能页/你想跳转的页面 小程序处

    2024年01月22日
    浏览(49)
  • 微信扫码跳转到微信小程序指定页面

    用户想通过在微信上扫描实验室二维码直接进入小程序申请加入实验室 1、首先我们需要在微信公众平台的开发管理——开发设置,找到(扫普通链接二维码打开小程序),点击添加,会出现下面的页面,配置好之后点击保存就行了 填写页配置点击保存之后要再发布 2、在微

    2024年02月16日
    浏览(140)
  • 微信扫码跳转小程序并传参

    微信公众平台 扫码登录小程序的后台 开发》开发管理》开发设置》扫普通链接二维码打开小程序》添加 这里我用一个aa.txt来替代。把他放到test文件夹下 添加一个路由转发 访问页面验证 这里新增一个测试连接 https://我的域名/test?aa=333 然后使用二维码在线生成工具生成一个

    2024年02月12日
    浏览(76)
  • 前端怎么从H5调起微信扫描二维码?小程序使用扫码功能.

    wx.scanCode(Object object) 参数 属性 类型 默认值 必填 说明 最低版本 onlyFromCamera boolean false 否 是否只能从相机扫码,不允许从相册选择图片 1.2.0 scanType Array.string [\\\'barCode\\\', \\\'qrCode\\\'] 否 扫码类型 1.7.0 合法值 说明 barCode 一维码 qrCode 二维码 datamatrix Data Matrix 码 pdf417 PDF417 条码 success

    2024年02月10日
    浏览(51)
  • 微信扫码点餐小程序springboot外卖点餐系统源码和论文

     开发工具:      后端:idea   用户端:微信开发者工具     数据库 :mysql5.7+     技术:java  springboot  mybatis  微信原生技术    角色:   管理员  多商家    用户 在中国餐饮业的开展现状看,中国餐饮业当今的特点之一就是在线点餐效劳开展迅速,随着互联网普及率

    2024年02月16日
    浏览(41)
  • WebView引入的页面如何实现交互。通过webview方式嵌套在小程序里面的页面如何实现保存到相册的功能

    通过 WebView 方式嵌套在小程序中的页面,保存图片到相册的功能需要借助 WebView 的内部通信机制。以下是实现步骤: 1. 小程序端,给 WebView 组件添加一个监听事件,以便接收来自 WebView 页面的消息: ```html web-view src=\\\"your-website.com domain name is for sale. Inquire now.\\\" bindmessage=\\\"handle

    2024年01月17日
    浏览(38)
  • uniapp - 详细手机端h5网页调用手机摄像头进行二维码识别扫描,在uniapp的H5移动端微信网页平台中,在浏览器中调用手机扫码功能详细教程,识别二维码并获取扫描结果(完整示例源码,一键复制即用

    正常情况下,使用uniapp扫码API是不行的,因为不支持h5端。 在uniapp h5移动端网页项目中,实现了浏览器中调用手机摄像头扫码功能,uniapp手机网页H5扫描二维码功能实现,uni-app h5端调用摄像头扫码,提供完整可运行的代码。 跟着本文的步骤,复制源代码后运行改下就行了。

    2024年02月04日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包