/**
* @author 何秀刚
* @description wechat 工具类,依赖JQuery,如果引入此文件,自动绑定分享事件。
* @version V.1.0
*/
// 获取绑定微信JSSDK的配置参数
var getConfigUrl = path +"/watero/config/get";
// JSSDK是否绑定成功
var jssdkSuccess = true;
//是否隐藏全局菜单
if (window.hiddenAllWechatMenu == null) {
window.hiddenAllWechatMenu = false;
}
// 分享信息全局变量
window.wxFriend = null;
if (window.repleFlag) {
// 自定义
window.wxFriend = window.repleWxData;
} else {
// 使用全局默认
window.wxFriend = {
"appId": "",
"imgUrl":'https://s.iamberry.com/watero/images/shop/index.jpg',
"link":"https://s.iamberry.com/watero/wechat/index.html",
"desc":"Watero水时代商城,开启优雅生活",
"title":"Watero水时代商城,好水,好茶,生活不将就!",
"netError":"您的网络异常,请刷新重试!如多次刷新无效,请向我们反应 ~",
"shareTimeSuccess":"这里是分享朋友圈后调用的文字",
"shareTimeCancel":"这里是取消分享给朋友圈后调用的文字",
"shareAppSuccess":"这里是分享好友后调用的文字",
"shareAppCancel":"这里是取消分享给好友后调用的文字"
};
}
// 微信共享地址数据
window.wechatAddr = {
"status":false, // 是否调用成功,true成功,false失败
"statusMsg":"失败时信息",
"detailInfo":"详细地址",
"postalCode":"邮编",
"userName":"收货人",
"userTel":"收货人电话",
"nationalCode":"收货地址国家码"
};
/** 引入JSSDK1.0基本组件,微信共享地址智能使用1.0版本,并且需要服务器返回参数支持 */
//incoldeJSFile("//res.wx.qq.com/open/js/jweixin-1.0.0.js");
/** 引入JSSDK1.1基本组件 ,支持摇一摇、微信共享地址 */
incoldeJSFile("//res.wx.qq.com/open/js/jweixin-1.1.0.js");
getConfig(); // 配置JSSDK组件
/** 获取服务器JSSDK参数配置 */
function getConfig(){
$.ajax({
type: 'get', url: getConfigUrl, data: {appid: "", url: location.href,"date":new Date().getTime()}, dataType: 'json', timeout: 10000, context: $('body'),
success: function(data){setConfig(data);},
error: function(xhr, type){
getConfig();
mui.alert('网络异常,请刷新重试,否则某些功能不能使用!')
}
});
}
/**配置JS-SDK*/
function setConfig(config){
wx.config({
debug: false,
appId: config.appId,
timestamp: config.timestamp,
nonceStr: config.nonceStr,
signature: config.signature,
jsApiList: [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'hideMenuItems',
'showMenuItems'
]
});
wx.ready(function(){ //JSSDK绑定成功
wxReadySuccess();
});
wx.error(function(res){ // JSSDK绑定失败的方法
wxReadyError();
});
}
/** JSSDK绑定成功调用事件 */
function wxReadySuccess() {
window.jssdkSuccess = true;
shareMessage();
wx.getNetworkType({success: function (res) {}});
if (window.hiddenAllWechatMenu) {
wx.showMenuItems({
menuList: [
] // 要显示的菜单项,所有menu项见附录3
});
wx.hideMenuItems({
menuList: [
"menuItem:copyUrl",
"menuItem:openWithSafari",
"menuItem:originPage",
"menuItem:share:email",
"menuItem:dayMode",
"menuItem:setFont",
"menuItem:nightMode",
"menuItem:share:qq",
"menuItem:dayMode",
"menuItem:exposeArticle",
"menuItem:nightMode",
"menuItem:openWithQQBrowser",
"menuItem:share:QZone",
"menuItem:favorite",
"menuItem:share:facebook",
"menuItem:share:appMessage",
"menuItem:share:timeline"
] // 要隐藏的菜单项,所有menu项见附录3
});
} else {
wx.showMenuItems({
menuList: [
"menuItem:share:appMessage",
"menuItem:share:timeline"
] // 要显示的菜单项,所有menu项见附录3
});
wx.hideMenuItems({
menuList: [
"menuItem:copyUrl",
"menuItem:openWithSafari",
"menuItem:originPage",
"menuItem:share:email",
"menuItem:dayMode",
"menuItem:setFont",
"menuItem:nightMode",
"menuItem:share:qq",
"menuItem:dayMode",
"menuItem:exposeArticle",
"menuItem:nightMode",
"menuItem:openWithQQBrowser",
"menuItem:share:QZone",
"menuItem:favorite",
"menuItem:share:facebook"
] // 要隐藏的菜单项,所有menu项见附录3
});
}
}
/** JSSDK 绑定失败调用方法 */
function wxReadyError() {
// alert(wxFriend.netError);
}
/** 分享时、分享后调用方法 */
function shareMessage(title, message) {
title = title || wxFriend.title;
message = message || wxFriend.desc;
wx.onMenuShareTimeline({ //分享到朋友圈,只有标题、图标,没有内容简介
title: title, link: wxFriend.link, imgUrl: wxFriend.imgUrl,
success: function () {
if (wxFriend.shareAppSuccess != null && wxFriend.shareAppSuccess != "") {
// alert(wxFriend.shareAppSuccess);
}
},
cancel: function () {
if (wxFriend.shareTimeCancel != null && wxFriend.shareTimeCancel != "") {
// alert(wxFriend.shareTimeCancel);
}
}
});
wx.onMenuShareAppMessage({ // 分享给好友,有标题、内容简介、图标
title: title, desc: message, link: wxFriend.link, imgUrl: wxFriend.imgUrl,
success: function () {
if (wxFriend.shareAppSuccess != null && wxFriend.shareAppSuccess != "") {
// alert(wxFriend.shareAppSuccess);
}
},
cancel: function () {
if (wxFriend.shareTimeCancel != null && wxFriend.shareTimeCancel != "") {
// alert(wxFriend.shareTimeCancel);
}
}
});
}
/**
* 微信支付
* str:微信支付参数,字符串
* paySuccessCallBack:微信支付成功后回调方法,此方法必须为全局时,方可以回调成功
* payCancelCallBack:微信支付失败后回调方法,此方法必须为全局时,方可以回调成功
*/
function wechatPay(str, paySuccessCallBack, payCancelCallBack) {
if (typeof WeixinJSBridge == "undefined"){
alert("非微信浏览器!无法发起微信支付请求!");
return;
}
var obj = JSON.parse("{" + str + "}");
WeixinJSBridge.invoke('getBrandWCPayRequest', obj, function(res) {
if(res.err_msg=='get_brand_wcpay_request:ok'){
paySuccessCallBack
}else{
payCancelCallBack
}
});
}
if (typeof WeixinJSBridge == "undefined"){
if( document.addEventListener ){
document.addEventListener('WeixinJSBridgeReady', wechatPay, false);
}else if (document.attachEvent){
document.attachEvent('WeixinJSBridgeReady', wechatPay);
document.attachEvent('onWeixinJSBridgeReady', wechatPay);
}
}
/** 发起微信共享地址Version 1.0 */
function editAddrV0(config) {
WeixinJSBridge.invoke('editAddress', {"appId" : config.appId, "scope" : "jsapi_address", "signType" : "SHA1", "addrSign" : config.addrSign, "timeStamp" : config.timestamp, "nonceStr" : config.nonceStr},
function(res) {
if ("edit_address:ok" == res.err_msg) {
var address = res.proviceFirstStageName + "-" + res.addressCitySecondStageName + "-" + res.addressCountiesThirdStageName + "-" + res.addressDetailInfo;
wechatAddr.status = true;
wechatAddr.detailInfo = address;
wechatAddr.postalCode = res.addressPostalCode;
wechatAddr.userName = res.userName;
wechatAddr.userTel = res.telNumber;
return wechatAddr;
} else if ("edit_address:fail" == res.err_msg) {// 没有选择
wechatAddr.statusMsg = "您没有选择收货地址!";
return wechatAddr;
} else { // 参数过时,请刷新
wechatAddr.statusMsg = "操作过时,请刷新重试!";
return wechatAddr;
}
}
);
}
/**
* 发起微信共享地址Version 1.1
* {
* status : 状态,true:请求成功,false:请求失败
* errorInfo : 请求失败时的提示信息
* res: { 请求成功时的地址信息,失败为空
* userName : 收货人姓名。
* postalCode : 邮编。
* provinceName 国标收货地址第一级地址(省)。
* cityName : 国标收货地址第二级地址(市)。
* countryName : 国标收货地址第三级地址(区)。
* detailInfo : 详细收货地址信息。
* nationalCode : 收货地址国家码。
* telNumber : 收货人电话
* }
* }
*/
function editAddrV1(successCallback, errorCallback) {
if (!window.jssdkSuccess) {
mui.alert("错误啦 ~~ 请刷新重试!");
return;
}
wx.openAddress({
success: successCallback,
cancel: errorCallback
});
}
/** 动态引入wechat utils JavaScript */
function incoldeJSFile(jsUrl) {
var typeHand = document.getElementsByTagName('head').item(0);
var typeScript= document.createElement("script");
typeScript.type = "text/javascript";
typeScript.src=jsUrl;
typeHand.appendChild(typeScript);
}