import wx from 'weixin-js-sdk'; import request from "./http.js"; export default { /* 判断是否在微信中 */ isWechat: function() { var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/micromessenger/i) == 'micromessenger') { //console.log('是微信客户端') return true; } else { //console.log('不是微信客户端') //以下是我项目中所需要的操作其他,可以自定义 uni.showModal({ title: '提示', content: '请在微信浏览器中打开', showCancel: false, confirmColor: '#00875a', success: function(res) { if (res.confirm) { // console.log('用户点击确定'); } else if (res.cancel) { // console.log('用户点击取消'); } } }); return false; } }, /* 获取sdk初始化配置 */ initJssdk: async function(callback) { //获取当前url然后传递给后台获取授权和签名信息 var url = encodeURIComponent(window.location.href.split('#')[0]); //当前网页的URL,不包含#及其后面部分 console.log(window.location.href.split('#')[0]); //这里调用的是后端的接口,后端去获取签名以及config里面所需的信息 const { data } = await request.get('/com/wechat/jssdk', { url: '' }) //返回需要的参数appId,timestamp,noncestr,signature等 //注入config权限配置 const { appId, timestamp, nonceStr, signature, debug, jsApiList } = data; wx.config({ debug: debug, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 // beta: true, // 文档没有这个参数,这个参数需设为true,才能调用那些微信还没有正式开放的新接口比如wx.invoke appId: appId, // 必填,公众号的唯一标识 timestamp: timestamp, // 必填,生成签名的时间戳 nonceStr: nonceStr, // 必填,生成签名的随机串 signature: signature, // 必填,签名 jsApiList: jsApiList }); // 本地环境测试使用,里面信息是测试号的appid和签名 // jWeixin.config({ // debug: true, // appId: 'wx451eff21c6c0d938', // timestamp: 1659065946, // nonceStr: 'dzklsf', // signature: 'd2ada1c92409e14c9e720ed58056dcd3800ab0a7', // jsApiList: ['scanQRCode'] // }) // 本地环境测试结束 if (callback) { callback(data); } }, //选择图片 chooseImage: function(callback) { if (!this.isWechat()) { //console.log('不是微信客户端') return; } //console.log(data); this.initJssdk(function(res) { wx.ready(function() { wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album'], success: function(rs) { callback(rs) } }) }); }); }, //微信支付 wxpay: function(data, callback) { if (!this.isWechat()) { //console.log('不是微信客户端') return; } this.initJssdk(function(res) { WeixinJSBridge.invoke( 'getBrandWCPayRequest', { appId: 'wxcf948c7b5a0863b1', timeStamp: data.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr: data.nonceStr, // 支付签名随机串,不长于 32 位 package: data.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) signType: data.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' paySign: data.paySign, // 支付签名 }, function(res) { callback(res) } ); // wx.ready(function() { // wx.chooseWXPay({ // timeStamp: data // .timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 // nonceStr: data.nonceStr, // 支付签名随机串,不长于 32 位 // package: data // .package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) // signType: data.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' // paySign: data.paySign, // 支付签名 // success: function(res) { // // console.log(res); // callback(res) // }, // fail: function(res) { // callback(res) // }, // }); // }); }); }, }