var jweixin = require('jweixin-module');
import config from '@/config'
import {
getSign
} from '@/api/login.js'
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;
}
},
// 初始化
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];
console.warn('-----------当前签名url--------------')
console.warn(signLink)
// var uri = encodeURIComponent(location.href.split('#')[0]); //获取当前url然后传递给后台获取授权和签名信息
var uri = encodeURIComponent(signLink); //获取当前url然后传递给后台获取授权和签名信息
console.log(uri)
//服务端进行签名
getSign({url:uri}).then((res) => {
jweixin.config({
debug: false,
appId: config.appid,
timestamp: res.data.timestamp,
nonceStr: res.data.nonceStr,
signature: res.data.signature,
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData','scanQRCode','openLocation', 'chooseImage',
'previewImage',
'uploadImage',
'downloadImage'
]
});
jweixin.ready(function() {
console.log('config注入成功')
console.log(callback, 'callbackcallback')
if (callback) {
callback();
}
})
})
},
//在需要定位页面调用
getlocation: function(callback) {
if (!this.isWechat()) {
console.log('不是微信客户端')
return;
}
this.initJssdk(function(res) {
jweixin.ready(function() {
jweixin.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) { //打开位置
console.log(data,'ppp')
if (!this.isWechat()) {
//console.log('不是微信客户端')
return;
}
this.initJssdk(function(res) {
jweixin.ready(function() {
jweixin.openLocation({ //根据传入的坐标打开地图
type: 'gcj02',
latitude: parseFloat(data.latitude),
longitude: parseFloat(data.longitude),
name: '', // 位置名
address: '', // 地址详情说明
scale: 1, // 地图缩放级别,整型值,范围从1~28。默认为最大
infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
});
});
});
},
chooseImage: function(callback) { //选择图片
if (!this.isWechat()) {
//console.log('不是微信客户端')
return;
}
//console.log(data);
this.initJssdk(function(res) {
jweixin.ready(function() {
jweixin.chooseImage({
count: 1,
sizeType: ['compressed'],
sourceType: ['album'],
success: function(res) {
callback(res)
},
fail: function(err) {
console.log(err)
}
})
});
});
},
// 微信扫一扫
toggle: function(callback) {
if (!this.isWechat()) {
//console.log('不是微信客户端')
return;
}
this.initJssdk(function(res) {
jweixin.ready(function() {
jweixin.scanQRCode({
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
success: function(res) {
// var result = res.resultStr; // 当needResult 为 1 时,扫码返回的结果
callback(res)
},
fail: function(err) {
console.log(err)
}
});
})
})
},
//在需要自定义分享的页面中调用
share: function(data) {
console.log(data)
//每次都需要重新初始化配置,才可以进行分享
this.initJssdk(function() {
var shareData = {
title: data && data.title ? data.title : 'h5',
desc: data && data.desc ? data.desc : '邀请加入',
link: data && data.link ? data.link : window.location.href,
imgUrl: data && data.imgUrl ? data.imgUrl : 'http://shanhe.yunthings.com:82/logo.png',
success: function(res) {
//用户点击分享后的回调,这里可以进行统计,例如分享送金币之类的
console.log('分享成功','ppppp')
},
fail: function(err) {
console.log(err)
},
cancel: function(res) {
console.log('askasask是')
}
};
//分享给朋友接口(只是更改分享面板的格式)
jweixin.ready(function() {
jweixin.updateAppMessageShareData(shareData);
jweixin.updateTimelineShareData(shareData);
})
})
},
//微信支付
wxpay: function(params = {},type,merOrderId,callback) {
if (!this.isWechat()) {
console.log('不是微信客户端')
return;
}
this.initJssdk(function() {
jweixin.chooseWXPay({
timestamp: params.timeStamp, // 支付签名时间戳
nonceStr: params.nonceStr, // 支付签名随机串,不长于 32 位
package: params.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
signType: params.signType, // 签名方式,默认为'SHA1'
paySign: params.paySign, // 支付签名
success: function(res) {
console.log(微信支付成功可调接口跳页面,'sdsds')
},
cancel: function(res) {
console.log('微信JSAPI返回支付失败',res)
},
complete: function(res) {
callback(res)
console.log(res,'ssss')
}
});
});
},
// 选择通讯地址
chooseAddress: function(callback) {
this.initJssdk(function() {
jweixin.openAddress({
success: function(res) {
callback(res)
}
})
})
}
}
基于微信公众号开发h5调取扫一扫,打开内置地图,更改分享面板等api
于 2024-07-30 17:48:25 首次发布