12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- // 引入 jweixin-module
- const jweixin = require('jweixin-module')
- // 通过export 暴露常用的方法
- export default {
- //判断是否在微信中
- isWechat: function () {
- var ua = window.navigator.userAgent.toLowerCase();
- if (ua.match(/micromessenger/i) == 'micromessenger') {
- //console.log('是微信客户端')
- return true;
- } else {
- //console.log('不是微信客户端')
- return false;
- }
- },
- // 初始化WXSDK
- initJssdk: async function (callback) {
- /* ****************************************
- * 获取当前url然后传递给后台获取授权和签名信息
- # TODO: 后台返回签名
- *************************************** */
- // let uri = encodeURIComponent(window.location.href.split('#')[0]);
- let uri = window.location.href.split('#')[0];
-
- //返回需要的参数appId,timestamp,noncestr,signature等
- let timestamp = parseInt(new Date().getTime() / 1000) + '';
- let nonceStr = Math.random().toString(36).substr(2, 15);
- // 获取后台返回的签名
- // 这里需要换成开发者自己的接口。
- // 此处我对uni.request进行了封装,
- // 直接采用uni.request方法然后在成功的回调里面完成SDK初始化也是可行的,根据实际情况处理
- let res = await GetSignature(nonceStr,timestamp,uri);
-
- //注入config权限配置
- let wxConf = {
- debug: false, // 是否开启调试,第一次尝试,建议开启,后续可关闭
- openTagList:['wx-open-launch-weapp'], //使用的开放标签列表,目前就两,本项目只用到跳转到小程序
- appId:"your_appid", // 公众号或者服务号的appid,自行前往服务号管理后台查看
- timestamp, // 上文计算的时间戳
- nonceStr, // 随机字符串,注意是小驼峰式写法
- signature:res, // 回台返回的签名
- jsApiList: [ //这里是需要用到的接口名称
- 'checkJsApi', //判断当前客户端版本是否支持指定JS接口
- 'onMenuShareAppMessage', //分享接口
- 'getLocation', //获取位置
- 'openLocation', //打开位置
- 'scanQRCode', //扫一扫接口
- 'chooseWXPay', //微信支付
- 'chooseImage', //拍照或从手机相册中选图接口
- 'previewImage', //预览图片接口
- 'uploadImage' //上传图片
- ]
- };
- jweixin.config(wxConf); //完成微信配置
- },
-
- /* ***************************************
- *
- * 微信SDK功能实例:调用微信扫码
- * 若没有初始化需要先调用initJssdk完成初始化
- * 若当前页面已经完成initJssdk初始化,调用扫码功能是可以直接调用 jweixin.scanQRCode
- *
- * **************************************/
- scanCode:function(callback,needResult=1){
- if (!this.isWechat()) {
- console.log('不是微信客户端')
- return;
- }
- this.initJssdk(function (res) {
- jweixin.ready(function () {
- jweixin.scanQRCode({
- needResult: needResult, // 0扫码结果由微信处理, 1是直接返回结果,由开发者处理
- scanType: ["qrCode","barCode"],
- success: function (rs) {
- console.log(rs);
- callback(rs)
- }
- })
- });
- });
- }
- }
|