微信网页调用jssdk扫一扫,63002报错的坑,ios的兼容问题

2023-10-31

一,因为项目需要用到微信网页扫一扫功能,并且去找了很多文章都没有统一的整理,所以就整理了一下 比较常见的坑

1.如何在网页调用扫一扫功能

1. 先引入npm

npm install weixin-js-sdk

如果你需要用微信的支付那些api 那就需要多引入
weixin-jsapi,当然如果你不需要也可以不引入

npm install weixin-jsapi

2. 引入之后在你需要用到扫一扫的页面引入(已经兼容ios的扫一扫的写法)

import wx from 'weixin-jsapi'
methods:{
    // 扫一扫 
    scanFn () {
     // 这是触发 扫一扫的方法
      wx.scanQRCode({
            needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
            success: (res) => {
              console.log(res)
              // 这是扫码获取到的,在resultStr 是一个字符串
              let type = res.resultStr
              console.log(type)
            }
        })
    },
    // 请求接口获取参数
    apiWxConfig (val) {
      console.log(val)
      return new Promise((resolve)=>{
         写你请求后台获取到的信息
        // reslove()
      })
    },
    async wxScanCode() {
    // 判断 是什么端解决ios 的兼容问题,如果是安卓端则直接把整个url传给后台就行,要是ios 则需要截取#号
      var u = navigator.userAgent;
      var isAndroid = u.indexOf('Android') > -1 || u.indexOf('Linux') > -1; //android终端或者uc浏览器 
      var isiOS = !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 
      let onurl = null
      if (isAndroid) {
         onurl = window.location.href
      }
      if (isiOS) {
        onurl = window.location.href.split('#')[0]
      }
      let result = await this.apiWxConfig({
        url: onurl, // 获取当前扫码界面的url,url后面不能携带任何参数及#号,所以在此进行分割
      })
      console.log("result", result);
      if (!result.success) {
      return  this.$toast(result.message)
      }
      if (result.success) {
        // 后端返回的参数
        var timestamp = result.data.timestamp;
        var noncestr = result.data.nonceStr;
        var signature = result.data.signature;
        var appId = result.data.appId;
        console.log("rresult.data.timestamp", result.data.timestamp);
        wx.config({
          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          // debug : true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          appId: appId, // 必填,公众号的唯一标识
          timestamp: timestamp, // 必填,生成签名的时间戳
          nonceStr: noncestr, // 必填,生成签名的随机串
          signature: signature, // 必填,签名,见附录1
          jsApiList: ["checkJsApi", "scanQRCode", "chooseWXPay"], // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
        }); // 错误时
        wx.error(function (res) {
          this.$toast("出错了:" + res.errMsg); //这个地方的好处就是wx.config配置错误,会弹出窗口哪里错误,然后根据微信文档查询即可。
        });
       wx.ready(function () {
            wx.checkJsApi({
                jsApiList: ['scanQRCode'],
                success: function () {
                }
            })
        })
      } else {
        this.$toast("js-sdk,微信配置失败");
      }
    }
  },

上面的 scanFn 是触发扫一扫的功能。wxScanCode 是初始化,可以在mounted的时候直接调用wxScanCode方法进行初始化,按钮点击再触发scanFn 扫一扫,这样分离出来就不用每次都初始化之后才调用扫一扫

3.关于63002的报错,基本按照上面的写法是不是出现的不过也说一下吧
是因为 传输到后台的path 和 当前页面path不匹配导致的,百度的很多是截取页面的#号前面部分传输给后台,但这其实是IOS的做法,安卓是直接用整个path就行

window.location.href.split(’#’)[0]

所以 上面的代码已经做了兼容

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信网页调用jssdk扫一扫,63002报错的坑,ios的兼容问题 的相关文章

  • Angular $http.get:如何捕获所有错误?

    我发送一个表单到nodejs进行身份验证 使用 http get在以下函数中并添加promise gt then 在生产中 这是否可以处理我可能从服务器收到的所有错误 我还需要向此功能添加其他内容吗 MyApp controller Log
  • 少吞咽然后缩小任务

    我必须在 gulp 中执行 2 个步骤 减少 css 文件格式 缩小生成的 css 文件 这是我的吞咽文件 var gulp require gulp watch require gulp watch less require gulp l
  • 使用浏览器内的 JS 数值求解三角方程[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 给定变量值s v and h 并给定一个库 例如数字 js http www numericjs com index php我怎样才能用数
  • 如何在React-Native中选择ListView的一项?

    我是 React Native 的新手 我想使用 ListView 选择一项 当我第一次按下 item 时 ListView renderRow 被调用 但终究不起作用 我该如何修复这个错误 我的问题出在哪里 我写了一个演示here htt
  • 流媒体性能 - Canvas 与

    我正在开发一个应用程序 需要通过 webSocket 连接以每秒至少 30 帧的速度持续传输图像 我遇到了一些性能问题 并希望尽我所能进行优化 我想知道使用不断更新的图像之间的性能差异是什么 就像这样 img src someDynamic
  • 为什么我的箭头函数有原型属性?

    正如文档中提到的https developer mozilla org en docs Web JavaScript Reference Functions Arrow functions https developer mozilla o
  • 将其作为参数传递给 addEventListener()

    我想添加change一组复选框的事件 我如何访问this在我的事件函数中 这样当我执行事件时我可以访问复选框的值 这是我当前的代码 var checkboxes document getElementsByClassName cb Arra
  • 按日期对 JSON 进行排序

    我知道这一定相对简单 但我有一个 JSON 数据集 我想按日期排序 到目前为止 我每次都会遇到问题 现在我将日期存储为this lastUpdated 如果有帮助的话 我可以访问 jquery 但我意识到 sort 是本机 JS 提前致谢
  • Javascript“命名空间”和 jQuery AJAX

    我正在使用此处列出的建议 http www odetocode com articles 473 aspx http www odetocode com articles 473 aspx 使用模拟的JavaScript AJAX网络聊天系
  • React JS“this”没有按预期工作

    我有下面的代码 save function var this this console log this refs itemText this setState isEditing false function console log In
  • 它们是“相同的”吗?代码大战

    这是完整的问题描述 给定两个数组 a 和 b 编写一个函数 comp a b Clojure 中的 compSame a b 来检查这两个数组是否具有 相同 元素以及相同的重数 这里 相同 意味着 b 中的元素是 a 平方中的元素 无论顺序
  • 如何使用 JavaScript 播放任意 MIDI 音符?

    澄清一下 我不想生成 MIDI 文件 也不想播放 MIDI 文件 我希望即时播放 MIDI 音符 我尝试使用https github com mudcube MIDI js https github com mudcube MIDI js作
  • 单击时突出显示文本(javascript jquery html)

    当您在所有浏览器中双击某个单词时 它们会自动突出显示单击下的单词 但是否有可能找到一种方法exact单击一下就会发生同样的事情吗 我想这涉及到的事情可能是 TextRange 的东西 对所有段落 或整个正文或 div 的 onclick 做
  • 如何与使用 child_process.spawn 创建的新创建的服务器交互

    我正在尝试为我的私人托管的 反恐精英全球攻势 服务器制作一个前端 当我点击运行服务器时 在前端 一切正常 服务器启动并记录到控制台 但是如何查看服务器IP地址 服务器中的玩家等信息呢 这是我到目前为止运行服务器的内容 router post
  • 按钮导致页面重新加载

    我在我的页面上使用 html 和 jquery 在我的 html 中 我有一个按钮 单击该按钮将触发一个功能 当页面加载时 我调用文档准备中的主函数 这是我的代码 div div
  • onClick 事件适用于触摸屏设备上的触摸吗?

    我用过onclick我的网站上的活动 但是 当我在谷歌浏览器的开发人员模式移动视图中打开它时 触摸使用鼠标单击的元素没有任何反应 所以我的问题是 我还必须添加吗ontouch事件连同onclick事件或 onClick 事件适用于所有触摸屏
  • .parents() 没有 jquery - 或 querySelectorAll 为父母[重复]

    这个问题在这里已经有答案了 可能的重复 使用 matchesSelector js 检查 event target parentElement https stackoverflow com questions 12977658 check
  • 自动更改 Twitter Bootstrap 选项卡

    我希望 Twitter Bootstrap 选项卡按时间顺序更改 我使用它们有点像旋转木马 我希望选项卡每 10 秒切换到下一个选项卡 这是一个例子 http library buffalo edu http library buffalo
  • 保留对 React 状态变量的“引用”

    据我所知 Javascript 中没有指针 我有以下问题 但我想知道是否有一个解决方案让我无法解决 解决方案可能是普通的 Javascript 或者像 Context API 这样的 React js 钩子 useContext 或者更多
  • 调试客户端时使用 Chrome/Firefox

    我正在使用带有 getUserMedia 的相机 但出现了一些需要修复的错误 问题是 Visual Studio 只允许我使用 IE 调试 JavaScript 我的意思是命中断点 而 IE 不支持 getUserMedia 如果您想在 I

随机推荐

  • TS如何解决属性在另一个类型中不存在的问题?

    先来看一个例子 export interface Cat coatColor string 毛色 varieties string 品种 weight number 体重 meow gt void 喵喵叫 export interface
  • XSS笔记

    一 xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中 通过用户本地浏览器执行的 所以xss漏洞关键就是寻找参数未过滤的输出函数 二 XSS的攻击方式 1 反射型XSS lt 非持久化 gt 攻击者事先制作好
  • 魅蓝5s 显示无服务器,魅蓝5s评测:只为让你机不离手

    其实对于魅族来说 搞魅蓝全家桶算是一种无奈的选择 毕竟之前只能用联发科的处理器 想在高端市场发力也是拳头打在棉花上有力使不出的感觉 不过换一个角度来思考 魅族对于那块联发科处理器的打磨相对于别家来讲自然是更有经验的 所以魅族能够更加放心而大
  • 手动添加Windows右键菜单即图标 Sublime Text举例

    有时候想把软件添加到右键菜单 可以这样做 1 Window R 打开 运行 regedit 进入组侧表 2 找到HKEY CLASSES ROOT gt gt shell下 新建项命名为Sublime Text 3 即路径为HKEY CLA
  • 码猿之道

    既不是最强的 也不是最聪明的 而是最能适应变化的生存了下来 达尔文 抓紧智能时代的缰绳 2016年是计算机历史上一个具有纪念意义的年份 它是一个旧时代的终结 也是一个新时代的开始 这一年距离1956年麦卡锡 明斯基 香农等计算机先贤提出人工
  • Python基础学完了再学什么?

    Python基础学完了再学什么 基础阶段学完Python 基础语法 python 容器 函数和文件操作 面向对象 python编程和web基础 Linux 操作系统多任务编程 Python 网络编程 静态 web 服务器 HTML CSS
  • HTML实现简单的注册页面

    HTML是一种标记语言 用于创建网页 这里使用HTML创建了一个简单的注册页面 其中包含表单元素 如文本框 密码框 单选按钮 下拉列表 文件上传和文本域 先看看效果图 代码如下
  • 可视化图片时显示中文标签

    coding UTF 8 import cv2 import glob import os from PIL import Image ImageFont ImageDraw import numpy as np color 0 255 0
  • 无线连接让智能手表用户可以自行沟通和监控

    诸如智能手表和智能眼镜之类的产品正在激增 它们中的大多数由于多个传感器 低功耗嵌入式处理器 直视或虚拟显示器以及无线通信链路 Wi Fi或蓝牙 来连接到智能手机 从而提供各种功能 主机系统 或互联网 尽管这些高度集成的系统中有许多提供了所需
  • Flutter: Dart 参数,以及 @required 与 required

    1 Dart 参数 Dart 函数的参数分 3 种类型 位置参数 命名参数 可选位置参数 1 1 位置参数 positional parameters 参数位置重要 名称任意 定义 void debugger String message
  • uniapp开发的App(安卓)端跳转uniapp微信小程序

    本文总结两种跳转方法 适合自己的才是最好的 1 根据微信开放文档提供的方法获取小程序的URL 两种 小程序的URL Scheme weixin dl business t TICKET 小程序的URL Link https wxaurl c
  • 宝塔控制面板无法访问,浏览器提示连接失败

    防火墙已经关闭 端口已经开好 但宝塔控制面板无法访问 浏览器提示连接失败 错误信息 火狐浏览器提示连接失败 解决思路 连接ssl重启宝塔 宝塔重启命令 bt restart
  • 全国地区树形结构列表。TreeNode工具

    Select select from shop region order by id ResultType java util LinkedList class 虽然这里用了LinkedList 但好像后面并没有用到 List
  • 三色标记算法

    什么是三色标记 CMS的运行过程中存在并发标记过程 由于不产生STW 所以对垃圾的清理必须存在标记和删除两个过程分开 而不能看到是垃圾就直接清除 否则会引起不必要的麻烦 CMS为了解决这个问题 采用了三色标记算法来记录对象是否已经被扫描过
  • 环境篇-在Qt工程中调用OpenSSL

    本文属于 OpenSSL加密算法库使用系列教程 之一 欢迎查看其它文章 我们知道OpenSSL有一个命令行工具openssl exe 可以通过命令实现很多的操作 同时OpenSSL还提供了动态库 所以如果我们想调用OpenSSL 有2种方法
  • 树的应用举例

    二叉树 先序遍历 这里指根在先 from collections import deque class BitTree def init self self root None def insert self node pos pass s
  • meilisearch使用记录

    分页 查找内容 默认一页十条 def search q from size 10 return client index indexName search q opt params limit size offset from 当前页 st
  • 剖析RedHat Linux中三个重要内核文件

    在网络中 不少服务器采用的是Linux系统 为了进一步提高服务器的性能 可能需要根据特定的硬件及需求重新编译Linux内核 编译Linux内核 需要根据规定的步骤进行 编译内核过程中涉及到几个重要的文件 比如对于RedHat Linux 在
  • (简单成功)原生js实现点击复制文本

    目录 背景 核心代码 案例 背景 我们开发中可能会有点击复制的功能 那么下面将讲述 核心代码 select 方法用于选择该元素中的文本 document execCommand copy 执行浏览器复制命令 案例
  • 微信网页调用jssdk扫一扫,63002报错的坑,ios的兼容问题

    一 因为项目需要用到微信网页扫一扫功能 并且去找了很多文章都没有统一的整理 所以就整理了一下 比较常见的坑 1 如何在网页调用扫一扫功能 1 先引入npm npm install weixin js sdk 如果你需要用微信的支付那些api