You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
188 lines
5.2 KiB
188 lines
5.2 KiB
var jweixin = require("jweixin-module");
|
|
import http from "@/shopro/request/index";
|
|
import $platform from "@/shopro/platform";
|
|
export default {
|
|
//判断是否在微信中
|
|
isWechat() {
|
|
var ua = window.navigator.userAgent.toLowerCase();
|
|
if (ua.match(/micromessenger/i) == "micromessenger") {
|
|
return true;
|
|
} else {
|
|
return false;
|
|
}
|
|
},
|
|
// 鉴权页面
|
|
initJssdk(callback) {
|
|
http("common.wxJssdk", {
|
|
uri: encodeURIComponent($platform.entry())
|
|
}).then(res => {
|
|
jweixin.config({
|
|
debug: res.data.debug,
|
|
appId: res.data.appId,
|
|
timestamp: res.data.timestamp,
|
|
nonceStr: res.data.nonceStr,
|
|
signature: res.data.signature,
|
|
jsApiList: res.data.jsApiList,
|
|
openTagList: res.data.openTagList
|
|
});
|
|
if (callback) {
|
|
callback(res.data);
|
|
}
|
|
});
|
|
},
|
|
|
|
//在需要定位页面调用
|
|
getLocation(callback) {
|
|
this.isWechat() && this.initJssdk(function(res) {
|
|
jweixin.ready(function() {
|
|
jweixin.getLocation({
|
|
type: "gcj02", // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
|
|
success: function(res) {
|
|
callback(res);
|
|
},
|
|
fail: function(res) {
|
|
console.log("%c微信H5sdk,getLocation失败:",
|
|
"color:green;background:yellow");
|
|
},
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
//获取微信收货地址
|
|
openAddress(callback) {
|
|
this.isWechat() && this.initJssdk(function(res) {
|
|
jweixin.ready(function() {
|
|
jweixin.openAddress({
|
|
success: function(res) {
|
|
callback(res);
|
|
},
|
|
fail: function(err) {
|
|
console.log("%c微信H5sdk,openAddress失败:",
|
|
"color:green;background:yellow");
|
|
},
|
|
complete: function(msg) {}
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
// 微信扫码
|
|
scanQRCode(callback) {
|
|
this.isWechat() && this.initJssdk(function(res) {
|
|
jweixin.ready(function() {
|
|
jweixin.scanQRCode({
|
|
needResult: 1, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
|
|
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
|
|
success: function(res) {
|
|
callback(res);
|
|
},
|
|
fail: function(res) {
|
|
console.log("%c微信H5sdk,scanQRCode失败:",
|
|
"color:green;background:yellow");
|
|
},
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
// 微信分享
|
|
share(data, callback) {
|
|
this.isWechat() && this.initJssdk(function(res) {
|
|
jweixin.ready(function() {
|
|
var shareData = {
|
|
title: data.title,
|
|
desc: data.desc,
|
|
link: data.path,
|
|
imgUrl: data.image,
|
|
success: function(res) {
|
|
callback(res);
|
|
// 分享后的一些操作,比如分享统计等等
|
|
},
|
|
cancel: function(res) {}
|
|
};
|
|
|
|
jweixin.updateAppMessageShareData(shareData); //新版接口
|
|
//分享到朋友圈接口
|
|
// jweixin.updateTimelineShareData(shareData);
|
|
|
|
|
|
});
|
|
});
|
|
|
|
},
|
|
|
|
|
|
// 打开坐标位置
|
|
openLocation(data, callback) { //打开位置
|
|
this.isWechat() && this.initJssdk(function(res) {
|
|
jweixin.ready(function() {
|
|
jweixin.openLocation({ //根据传入的坐标打开地图
|
|
latitude: data.latitude,
|
|
longitude: data.longitude
|
|
});
|
|
});
|
|
});
|
|
},
|
|
// 选择图片
|
|
chooseImage(callback) { //选择图片
|
|
this.isWechat() && this.initJssdk(function(res) {
|
|
jweixin.ready(function() {
|
|
jweixin.chooseImage({
|
|
count: 1,
|
|
sizeType: ["compressed"],
|
|
sourceType: ["album"],
|
|
success: function(rs) {
|
|
callback(rs);
|
|
}
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
//微信支付
|
|
wxpay(data, callback) {
|
|
let that = this;
|
|
this.isWechat() && this.initJssdk(function(res) {
|
|
jweixin.ready(function() {
|
|
|
|
WeixinJSBridge.invoke('getBrandWCPayRequest', {
|
|
"appId": data.appId, //公众号ID,由商户传入
|
|
"timeStamp": data.timeStamp, //时间戳,自1970年以来的秒数
|
|
"nonceStr": data.nonceStr, //随机串
|
|
"package": data.package,
|
|
"signType": data.signType, //微信签名方式:
|
|
"paySign": data.paySign,
|
|
},
|
|
function(res) {
|
|
if (res.err_msg == "get_brand_wcpay_request:ok") {
|
|
callback(res);
|
|
} else {
|
|
console.log("%c微信H5sdk,chooseWXPay失败:",
|
|
"color:green;background:yellow");
|
|
callback(res);
|
|
}
|
|
});
|
|
|
|
// jweixin.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) {
|
|
// callback(res);
|
|
// },
|
|
// fail: function(res) {
|
|
// console.log("%c微信H5sdk,chooseWXPay失败:",
|
|
// "color:green;background:yellow");
|
|
// callback(res);
|
|
// },
|
|
// cancel: function(res) {
|
|
|
|
// },
|
|
// });
|
|
});
|
|
});
|
|
}
|
|
};
|
|
|