// #ifdef H5 const wechat = require("@/common/libs/jssdk/wechat"); import config from '@/common/config/config'; // #endif export default { //判断是否在微信中 isWechat: function() { var ua = window.navigator.userAgent.toLowerCase(); if (ua.match(/micromessenger/i) == 'micromessenger') { return true; } else { return false; } }, // 初始化 initJssdk: function(callback) { // 记录进入app时的url if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') { window.entryUrl = location.href.split('#')[0] } let isiOS = !!navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios终端 // 进行签名的时候 Android 不用使用之前的链接, ios 需要 let signLink = isiOS ? window.entryUrl : location.href.split('#')[0]; var uri = encodeURIComponent(signLink); //获取当前url然后传递给后台获取授权和签名信息 //服务端进行签名 uni.request({ url: '/wanlshop/wechat/config', data: { url: uri }, success: res => { wechat.config(res.data); wechat.ready(function() { if (callback) { callback(); } }) } }); }, //在需要定位页面调用 getlocation: function(callback) { if (!this.isWechat()) { //console.log('不是微信客户端') return; } this.initJssdk(function(res) { wechat.ready(function() { wechat.getLocation({ type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02' success: function(res) { // console.log(res); callback(res) }, fail: function(res) { // console.log(res) }, // complete:function(res){ // console.log(res) // } }); }); }); }, openlocation: function(data, callback) { //打开位置 if (!this.isWechat()) { //console.log('不是微信客户端') return; } this.initJssdk(function(res) { wechat.ready(function() { wechat.openLocation({ //根据传入的坐标打开地图 latitude: data.latitude, longitude: data.longitude }); }); }); }, chooseImage: function(callback) { //选择图片 if (!this.isWechat()) { //console.log('不是微信客户端') return; } //console.log(data); this.initJssdk(function(res) { wechat.ready(function() { wechat.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album'], success: function(res) { callback(res) } }) }); }); }, //微信支付 wxpay: function(params = {}) { if (!this.isWechat()) { console.log('不是微信客户端') return; } this.initJssdk(function() { wechat.chooseWXPay({ timestamp: params.data.timeStamp, // 支付签名时间戳,注意微信wechat中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符 nonceStr: params.data.nonceStr, // 支付签名随机串,不长于 32 位 package: params.data.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*) signType: params.data.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5' paySign: params.data.paySign, // 支付签名 success: function(res) { // console.log(res); // console.log('微信JSAPI返回支付成功') params.success(res) }, cancel: function(res) { params.fail(res) // console.log('微信JSAPI返回支付失败') }, // complete:function(res){ // console.log(res) // } }); }); }, //在需要自定义分享的页面中调用 share: function(data) { if (!this.isWechat()) { //console.log('不是微信客户端') return; } //每次都需要重新初始化配置,才可以进行分享 this.initJssdk(function() { var shareData = { title: data && data.title ? data.title : '我发现了一个很好的线上购物商城', desc: data && data.desc ? data.desc : '品质好而且很省钱如果自己在上面购买,每年可以省下1%~40%的钱', link: data && data.link ? data.link : window.location.href, imgUrl: data && data.imgUrl ? data.imgUrl : `${config.cdnurl}/assets/img/logo.png`, success: function(res) { //用户点击分享后的回调,这里可以进行统计,例如分享送金币之类的 }, cancel: function(res) {} }; //分享给朋友接口 wechat.onMenuShareAppMessage(shareData); //分享到朋友圈接口 wechat.onMenuShareTimeline(shareData); }); }, // 选择通讯地址 chooseAddress: function(callback) { if (!this.isWechat()) { //console.log('不是微信客户端') return; } this.initJssdk(function() { wechat.openAddress({ success: function(res) { callback(res) } }) }) } }