根据文档

main.js中

npm install weixin-js-sdk
import wx from ‘weixin-js-sdk’;
Vue.prototype.$wx = wx; //写不写这个 在组件中引用wx的时候都是undefined

解决方法:
在需要的页面 直接 import wx from ‘weixin-js-sdk’;

但是像一些分享功能需要每个页面都要用这种方式就不可取了
我的做法:直接在public静态文件夹中放一个微信的sdk直接引入,全局都能用wx
在这里插入图片描述在这里插入图片描述
接下来得获取微信签名
传统的jq项目都是只要把当前页面给服务端就行了,vue项目因为是单页面应用,路由采用hash的模式(history这里不讨论),只要将锚点前面的传给服务器就可以了

还有一个问题

很多博客说是每个路由切换的时候都得重新config,比较麻烦,直接将获取微信签名放入index.html页面底部代码如下:

<script>
    //   // 获取微信签名
    console.log(wx)
    var _getWechatSignUrl = location.protocol + "//" + 'tstgo.u-breath.cn'+'/Wapi/Pfdevice/configJsSdk';
    axios.post(_getWechatSignUrl, {
      html:'index.html'		(这个具体传什么要跟后台商量 我这边只要index。htm就行了  有些是还要加上域名的)
    })
    .then(function (res) {
      wx.config({
          debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
          appId: res.data.data.appid, // 必填,公众号的唯一标识
          timestamp: res.data.data.time, // 必填,生成签名的时间戳
          nonceStr: res.data.data.noncestr, // 必填,生成签名的随机串
          signature: res.data.data.sha1, // 必填,签名,见附录1
          jsApiList: [ 'scanQRCode'
          ]
          // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
        });
      console.log(res.data.data);
    })
    .catch(function (error) {
      console.log(error);
    });		 
  </script>

接下来就是组件中的调用(分享功能可以写上面index.html里)

methods: {
  //扫一扫的方法
    scanning(){
      // this.weixinApi.scanCode(res=>{
      //   console.log('sao')
      // })
      console.log('12322')
      wx.ready(function() {
            wx.scanQRCode({
                needResult: 1,
                // scanType: ["qrCode","barCode"],
                success: function(res) {
                    var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
                    // result=result.split(",");
                    console.log(result[1])
                },
                fail: function(res) {
                    console.log(res,'222222')
                }
            });
        })
    }

  },
Logo

前往低代码交流专区

更多推荐