|
- <template>
- <view></view>
- </template>
- <script>
- import wx from '@/common/js/weixin-js-sdk.js';
- export default {
- name:"scanCode",
- props:{},
- data() {
- return {
- wxObject:null,
- };
- },
- mounted() {
- this.setConfig()
- },
- methods: {
- setConfig() {
- const promise = new Promise((resolve, reject) => {
- // let url = window.location.href
- let url = /(Android)/i.test(navigator.userAgent) ? location.href.split('#')[0] : window.localStorage.getItem('scanUrl')
- this.HTTP_GET("weixinapi/getweixinwebaccess_token?url=" + encodeURIComponent(url)).then((success)=>{
- if(!success){
- resolve(false)
- return
- }
- this.wxObject = wx
- this.wxObject.config({
- debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
- appId: success.appid, // 必填,公众号的唯一标识
- timestamp: success.timestamp, // 必填,生成签名的时间戳
- nonceStr: success.noncestr, // 必填,生成签名的随机串
- signature: success.certificate, // 必填,签名
- jsApiList: ["scanQRCode"] // 必填,需要使用的JS接口列表
- });
- this.wxObject.ready(() => {
- this.TOAST("扫码初始化成功")
- })
- this.wxObject.error(() => {
- this.TOAST("扫码初始化失败")
- })
- })
- })
- return promise
- },
- scanCode(){
- return new Promise((resolve)=>{
- if(!this.wxObject||!this.wxObject.scanQRCode){
- this.TOAST("无效方法")
- resolve(false)
- }else{
- this.TOAST("正在调用扫码...")
- }
- this.wxObject.scanQRCode({
- needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
- scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
- success: (res) => {
- this.TOAST("方法调用成功")
- var result = res.resultStr; // 当 needResult 为 1 时,扫码返回的结果
- var resultArr = result.split(','); // 扫描结果以逗号分割数组
- var codeContent = resultArr[resultArr.length - 1]; // 获取数组最后一个元素,也就是最终的内容
- resolve({result:codeContent})
- },
- fail: (res) =>{
- this.TOAST("调用扫码失败")
- resolve(false)
- }
- });
- })
- }
- },
- }
- </script>
-
- <style>
-
- </style>
|