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.
 
 
 
 
 

234 lines
7.6 KiB

import App from "@/common/js/app.js"
const wxApi = {
configData: null,
/**
* [wxRegister 微信Api初始化]
*/
wxRegister(callback) {
let _this = this,
signUrl = encodeURIComponent(location.href.split("#")[0]),
jsApiList = ["hideAllNonBaseMenuItem", "onMenuShareTimeline", "onMenuShareAppMessage", "openBusinessView",
"scanQRCode",
"getLocation", "chooseImage", "uploadImage", "openAddress", "openLocation", "translateVoice", 'stopRecord',
'startRecord', "WeixinJSBridgeReady",'playVoice',"uploadVoice","downloadVoice","updateAppMessageShareData","updateTimelineShareData"
];
App._post_form("&do=getJssdk", {
sign_url: signUrl
}, (res) => {
let data = res.data;
jWeixin.config({
debug: false, // 开启调试模式
appId: data.appId, // 必填,公众号的唯一标识
timestamp: data.timestamp, // 必填,生成签名的时间戳
nonceStr: data.nonceStr, // 必填,生成签名的随机串
signature: data.signature, // 必填,签名
jsApiList: jsApiList ,// 必填,需要使用的JS接口列表
openTagList:['wx-open-launch-weapp','wx-open-subscribe']
});
jWeixin.ready(() => {
// jWeixin.hideMenuItems({
// menuList: ["menuItem:copyUrl"] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮
// });
callback && callback();
});
_this.configData = {
...data,
url: signUrl
}
jWeixin.error((optinos) => {
// config信息验证失败会执行error函数,
//如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,
//也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
console.log(optinos, 'optinos',_this.configData.url)
// App.showError(optinos.errMsg)
});
// jWeixin.success((options) => {
// console.log(optinos, 'optinos')
// })
// wx.ready(function() {
// wx.hideMenuItems({
// menuList: ["menuItem:copyUrl"] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮
// });
// });
// jWeixin.ready(function() {
// jWeixin.hideMenuItems({
// menuList: ["menuItem:copyUrl","menuItem:editTag","menuItem:delete","menuItem:originPage","menuItem:readMode", "menuItem:openWithQQBrowser", "menuItem:openWithSafari","menuItem:share:email","menuItem:share:brand","menuItem:share:qq","menuItem:share:QZone"] // 要隐藏的菜单项,只能隐藏“传播类”和“保护类”按钮
// });
// });
});
},
wxShare(options){
jWeixin.onMenuShareAppMessage(options);
jWeixin.onMenuShareTimeline(options);
// jWeixin.updateAppMessageShareData(options);
// jWeixin.updateTimelineShareData(options);
},
oldWxShare(options) {
jWeixin.onMenuShareAppMessage(options);
jWeixin.onMenuShareTimeline(options);
jWeixin.updateAppMessageShareData(options);
jWeixin.updateTimelineShareData(options);
// jWeixin.onMenuShareTimeline({
// title: options.title, // 分享标题
// desc: options.desc, // 分享描述
// link: options.link, // 分享链接
// imgUrl: options.imgUrl, // 分享图标
// success: function() {
// // 用户点击了分享后执行的回调函数
// },
// })
},
WxopenLocation(lat, lng, storename, address) {
jWeixin.openLocation({
latitude: Number(lat), // 纬度,浮点数,范围为90 ~ -90
longitude: Number(lng), // 经度,浮点数,范围为180 ~ -180。
name: storename, // 位置名
address: address, // 地址详情说明
scale: 14, // 地图缩放级别,整形值,范围从1~28。默认为最大
infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
});
},
wxPay(options) {
jWeixin.chooseWXPay({
timestamp: options.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: options.nonceStr, // 支付签名随机串,不长于 32 位
package: options.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=\*\*\*)
signType: options.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: options.paySign, // 支付签名
success(res) {
// 支付成功后的回调函数
options.success && options.success(res)
},
cancel(res) {
options.cancel && options.cancel(res)
},
fail(res) {
options.fail && options.fail(res)
}
});
},
scanQRCode(callback) {
jWeixin.scanQRCode({
needResult: 0, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
complete(res) {
callback && callback(res);
}
});
},
hideMenuItem() {
jWeixin.hideAllNonBaseMenuItem();
},
getLocation(optinos) {
jWeixin.getLocation(optinos);
},
getLocation1() {
jWeixin.getLocation({
type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function(res) {
jWeixin.openLocation({
latitude: res.latitude, // 纬度,浮点数,范围为90 ~ -90
longitude: res.longitude, // 经度,浮点数,范围为180 ~ -180。
name: '', // 位置名
address: '', // 地址详情说明
scale: 14, // 地图缩放级别,整形值,范围从1~28。默认为最大
infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
});
}
});
},
// 选取图片
choseImage(callback,num=1) {
jWeixin.chooseImage({
count: num, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
complete: function(res) {
callback && callback(res);
}
});
},
//上传图片
uoloadIg(localId, callback) {
debugger
// App._upLoad()
jWeixin.uploadImage({
localId: localId, // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
complete: function(res) {
callback && callback(res)
}
});
},
/**
* 微信好物圈
*/
wxGoodsCircle(queryString, success, fail) {
jWeixin.openBusinessView({
businessType: 'friendGoodsRecommend',
queryString: queryString,
success(res) {
success && success(res);
},
fail(res) {
fail && fail(res);
}
})
},
wxOpenAddress(callback) {
console.info(jWeixin)
jWeixin.openAddress({
success(res) {
callback && callback(res)
},
fail(errMsg) {
callback && callback(errMsg)
console.info('我失败了')
}
})
},
// 监听录音自动停止接口
wxStartRecord() {
console.info('startRecord')
jWeixin.startRecord({})
},
// 停止录音接口
wxStopRecord(callback) {
console.info('wxStopRecord')
jWeixin.stopRecord({
success: function(res) {
console.info('localId', res.localId)
callback && callback(res.localId)
}
})
},
//监听播放录音
wxPlayVoice(id){
jWeixin.playVoice({
localId:id
})
},
//录音上传
wxUploadVoice(localId,callback){
jWeixin.uploadVoice({
localId:localId,
success: function (res) {
callback && callback(res.serverId);
}
})
},
// 识别音频并返回识别结果接口
wxTranslateVoice(localId, callback) {
jWeixin.translateVoice({
localId: localId, // 需要识别的音频的本地Id,由录音相关接口获得
isShowProgressTips: 1, // 默认为1,显示进度提示
success: function(res) {
callback && callback(res.translateResult) // 语音识别的结果
}
})
}
}
export default wxApi