|
!(function(e, t) {
var config = {
wxconfig: 'http://api.tt4it.com/wx/jsapi_signature',
callback: 'callback'
}, wxData = {
debug: false,
imgUrl: '',
link: '',
desc: '',
title: '',
timeLine: ''
}, wxConfig = {
hide: false,
baseFlag: false,
baseHide: false,
close: false,
hideMenuItems: [],
showMenuItems: []
}, jsApiList = [
'checkJsApi',
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'onMenuShareQZone',
'hideMenuItems',
'showMenuItems',
'hideAllNonBaseMenuItem',
'showAllNonBaseMenuItem',
'translateVoice',
'startRecord',
'stopRecord',
'onRecordEnd',
'playVoice',
'pauseVoice',
'stopVoice',
'uploadVoice',
'downloadVoice',
'chooseImage',
'previewImage',
'uploadImage',
'downloadImage',
'getLocalImgData',
'getNetworkType',
'openLocation',
'getLocation',
'hideOptionMenu',
'showOptionMenu',
'closeWindow',
'scanQRCode',
'chooseWXPay',
'openEnterpriseRedPacket',
'openProductSpecificView',
'addCard',
'chooseCard',
'openCard'
], wxApiFun
function isEmpty(obj) {
if (obj == null) return true
if (obj.length > 0) return false
if (obj.length === 0) return true
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) return false
}
return true
}
function isNotEmpty(obj) {
return !isEmpty(obj)
}
function isOpenOnPC() { // 判断当前网页是否在 PC 浏览器中打开
var ua = navigator.userAgent
return /windows nt/i.test(ua) || /macintosh/i.test(ua) || /linux x86_64/i.test(ua)
}
function isOpenInWeixin() { // 判断当前网页是否在微信内置浏览器中打开
return /micromessenger/i.test(navigator.userAgent)
}
function getWeixinVersion() {
var ua = navigator.userAgent,
mt = ua.match(/micromessenger\/([\d.]+)/i)
return (mt ? mt[1] : '')
}
// This function checks whether Wechat is the appointed version or not
// Cmp: http://jsperf.com/regexp-test-vs-indexof-ignore-upper-and-lower
function isWeixinVersion(version) {
// return new RegExp('micromessenger/' + version , 'i').test(navigator.userAgent)
return navigator.userAgent.toLowerCase().indexOf('micromessenger/' + version) != -1
}
function hideOptionMenu() {
wxConfig.hide = true
fixedWxData()
}
function showOptionMenu() {
wxConfig.hide = false
fixedWxData()
}
function hideMenuItems(items) {
wxConfig.hideMenuItems = items
fixedWxData()
}
function showMenuItems(items) {
wxConfig.showMenuItems = items
fixedWxData()
}
function hideAllNonBaseMenuItem() {
wxConfig.baseFlag = true
wxConfig.baseHide = true
fixedWxData()
}
function showAllNonBaseMenuItem() {
wxConfig.baseFlag = true
wxConfig.baseHide = false
fixedWxData()
}
function closeWindow() {
wxConfig.close = true
fixedWxData()
}
function wxReady(data) {
data = typeof data === 'object' ? data : JSON.parse(data)
wx.config({
debug: wxData.debug,
appId: data.appId,
timestamp: data.timestamp,
nonceStr: data.nonceStr,
signature: data.signature,
jsApiList: jsApiList
})
var callbacks = {
trigger: function (res) {
// alert('用户点击发送给朋友')
if (JSWE.wxTrigger) {JSWE.wxTrigger(res)}
},
success: function (res) {
// alert('已分享')
if (JSWE.wxSuccess) {JSWE.wxSuccess(res)}
},
cancel: function (res) {
// alert('已取消')
if (JSWE.wxCancel) {JSWE.wxCancel(res)}
},
fail: function (res) {
// alert(JSON.stringify(res))
if (JSWE.wxFail) {JSWE.wxFail(res)}
}
}, shareInfo = function(flag) {
var _share = {
title: flag ? wxData.title : (wxData.timeLine || wxData.desc),
link: wxData.link,
imgUrl: wxData.imgUrl,
trigger: callbacks.trigger,
success: callbacks.success,
cancel: callbacks.cancel,
fail: callbacks.fail
}
if (flag) _share.desc = wxData.desc
return _share
}, wxShareApi = function() {
// 2. 分享接口
// 2.1 监听“分享给朋友”,按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareAppMessage(shareInfo(1))
// 2.2 监听“分享到朋友圈”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareTimeline(shareInfo(0))
// 2.3 监听“分享到QQ”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareQQ(shareInfo(1))
// 2.4 监听“分享到微博”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareWeibo(shareInfo(1))
// 2.5 监听“分享到QQ空间”按钮点击、自定义分享内容及分享结果接口
wx.onMenuShareQZone(shareInfo(1))
}, wxMenuApi = function () {
// 8. 界面操作接口
// 8.1 隐藏右上角菜单
// 8.2 显示右上角菜单
if (wxConfig.hide) {wx.hideOptionMenu()} else {wx.showOptionMenu()}
// 8.3 批量隐藏菜单项
if (isNotEmpty(wxConfig.hideMenuItems)) {
wx.hideMenuItems({
menuList: wxConfig.hideMenuItems,
success: function (res) {
if (JSWE.wxHideMenuItemsSuccess) {JSWE.wxHideMenuItemsSuccess(res)}
},
fail: function (res) {
if (JSWE.wxHideMenuItemsFail) {JSWE.wxHideMenuItemsFail(res)}
}
})
}
// 8.4 批量显示菜单项
if (isNotEmpty(wxConfig.showMenuItems)) {
wx.showMenuItems({
menuList: wxConfig.showMenuItems,
success: function (res) {
if (JSWE.wxShowMenuItemsSuccess) {JSWE.wxShowMenuItemsSuccess(res)}
},
fail: function (res) {
if (JSWE.wxShowMenuItemsFail) {JSWE.wxShowMenuItemsFail(res)}
}
})
}
// 8.5 隐藏所有非基本菜单项
// 8.6 显示所有被隐藏的非基本菜单项
if (wxConfig.baseFlag) {
if (wxConfig.baseHide) {wx.hideAllNonBaseMenuItem()} else {wx.showAllNonBaseMenuItem()}
}
// 8.7 关闭当前窗口
if (wxConfig.close) {wx.closeWindow()}
}, wxVoiceApi = function() {
// 4.3 监听录音自动停止
wx.onVoiceRecordEnd({
complete: function (res) {
voice.localId = res.localId
if (JSWE.wxVoiceRecordEnd) {JSWE.wxVoiceRecordEnd(res)}
}
})
// 4.7 监听录音播放停止
wx.onVoicePlayEnd({
complete: function (res) {
if (JSWE.wxVoicePlayEnd) {JSWE.wxVoicePlayEnd(res)}
}
})
}, wxApi = function () {
wxShareApi()
wxMenuApi()
wxVoiceApi()
}
wx.ready(wxApi)
return wxApiFun = wxApi
}
if (isOpenInWeixin() || isOpenOnPC()) {
if ('undefined' !== typeof JSWE_CONF_UPDATE) JSWE_CONF_UPDATE(config)
$.ajax({
url: config.wxconfig,
type: 'get',
dataType: 'jsonp',
jsonpCallback: config.callback,
data: {
url: window.location.href.split('#')[0]
},
success: wxReady
})
}
function initWxData(data, flag) {
for(var d in data) {if (d in wxData) wxData[d] = data[d]}
if (flag) fixedWxData()
}
function changeWxData(key, value, flag) {
if (key in falDwxDataata) {wxData[key] = value}
if (flag) fixedWxData()
}
function fixedWxData() {
if ('undefined' !== typeof wxApiFun) wxApiFun()
}
// 3 智能接口
var voice = {
localId: '',
serverId: ''
}
// 3.1 识别音频并返回识别结果
function translateVoice() {
if (voice.localId == '') {
if (JSWE.wxTranslateVoiceEmpty) {JSWE.wxTranslateVoiceEmpty()}
return
}
wx.translateVoice({
localId: voice.localId,
complete: function (res) {
if (JSWE.wxTranslateVoiceComplete) {JSWE.wxTranslateVoiceComplete(res)}
}
})
}
// 4 音频接口
// 4.1 开始录音
function startRecord() {
wx.startRecord({
cancel: function () {
if (JSWE.wxStartRecordCancel) {JSWE.wxStartRecordCancel(res)}
}
})
}
// 4.2 停止录音
function stopRecord() {
wx.stopRecord({
success: function (res) {
voice.localId = res.localId
if (JSWE.wxStopRecordSuccess) {JSWE.wxStopRecordSuccess(res)}
},
fail: function (res) {
if (JSWE.wxStopRecordFail) {JSWE.wxStopRecordFail(res)}
}
})
}
// 4.4 播放音频
function playVoice() {
if (voice.localId == '') {
if (JSWE.wxPlayVoiceEmpty) {JSWE.wxPlayVoiceEmpty()}
return
}
wx.playVoice({
localId: voice.localId
})
}
// 4.5 暂停播放音频
function pauseVoice() {
if (voice.localId == '') {
if (JSWE.wxPauseVoiceEmpty) {JSWE.wxPauseVoiceEmpty()}
return
}
wx.pauseVoice({
localId: voice.localId
})
}
// 4.6 停止播放音频
function stopVoice() {
if (voice.localId == '') {
if (JSWE.wxStopVoiceEmpty) {JSWE.wxStopVoiceEmpty()}
return
}
wx.stopVoice({
localId: voice.localId
})
}
// 4.8 上传语音
function uploadVoice() {
var localId = voice.localId
if (localId == '') {
if (JSWE.wxUploadVoiceEmpty) {JSWE.wxUploadVoiceEmpty()}
return
}
wx.uploadVoice({
localId: localId,
success: function (res) {
voice.serverId = res.serverId
if (JSWE.wxUploadVoiceSuccess) {JSWE.wxUploadVoiceSuccess(res, localId)}
}
})
}
// 4.9 下载语音
function downloadVoice() {
var serverId = voice.serverId
if (serverId == '') {
if (JSWE.wxDownloadVoiceEmpty) {JSWE.wxDownloadVoiceEmpty()}
return
}
wx.downloadVoice({
serverId: serverId,
success: function (res) {
voice.localId = res.localId
if (JSWE.wxDownloadVoiceSuccess) {JSWE.wxDownloadVoiceSuccess(res, serverId)}
}
})
}
// 5 图片接口
var images = {
localIds: [],
serverIds: []
}
// 5.1 拍照、本地选图
function chooseImage(choose_params) {
if ('undefined' === typeof choose_params) choose_params = {}
wx.chooseImage({
count: choose_params.count || 9, // 默认9
sizeType: choose_params.sizeType || ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: choose_params.sourceType || ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success: function (res) {
images.localIds = res.localIds // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
// 判断是否直接上传
if (choose_params.directUpload) {setTimeout(uploadImages({localIds: images.localIds, isShowProgressTips: choose_params.isShowProgressTips || 1}), 100)}
// 拍照、本地选图成功后的回调函数
if (JSWE.wxChooseImageSuccess) {JSWE.wxChooseImageSuccess(res, choose_params.extras || {})}
}
})
}
// 5.2 图片预览
function previewImage(preview_params) {
wx.previewImage({
current: preview_params.current, // 当前显示图片的链接,不填则默认为 urls 的第一张
urls: preview_params.urls // 需要预览的图片链接列表
})
}
// 5.3 上传图片
function uploadImage(upload_params) {
// 上传图片为异步处理,重复上传同一图片,返回的serverId也是不同的
var localId = upload_params.localId
wx.uploadImage({
localId: localId, // 需要上传的图片的本地ID,由chooseImage接口获得
isShowProgressTips: upload_params.isShowProgressTips || 1, // 默认为1,显示进度提示
success: function (res) {
images.serverIds.push(res.serverId) // 返回图片的服务器端ID
// 上传图片成功后的回调函数
if (JSWE.wxUploadImageSuccess) {JSWE.wxUploadImageSuccess(res, localId)}
}
})
}
function uploadImages(upload_params) {
var localIds = upload_params.localIds, isShowProgressTips = upload_params.isShowProgressTips || 1
images.serverIds = []
for (var idx in localIds) {uploadImage({localId: localIds[idx], isShowProgressTips: isShowProgressTips})}
}
// 5.4 下载图片
function downloadImage(download_params) {
var serverId = download_params.serverId
wx.downloadImage({
serverId: serverId, // 需要下载的图片的服务器端ID,由uploadImage接口获得
isShowProgressTips: download_params.isShowProgressTips || 1, // 默认为1,显示进度提示
success: function (res) {
images.localId.push(res.localId)
if (JSWE.wxDownloadImageSuccess) {JSWE.wxDownloadImageSuccess(res, serverId)}
}
})
}
function downloadImages(download_params) {
var serverIds = download_params.serverIds, isShowProgressTips = download_params.isShowProgressTips || 1
images.localIds = []
for (var idx in serverIds) {downloadImage({serverId: serverIds[idx], isShowProgressTips: isShowProgressTips})}
}
function getLocalImgData(localId) {
wx.getLocalImgData({
localId: localId, // 图片的localID
success: function (res) {
// var localData = res.localData; // localData是图片的base64数据,可以用img标签显示
if (JSWE.wxGetLocalImgDataSuccess) {JSWE.wxGetLocalImgDataSuccess(res)}
}
})
}
// 9 微信原生接口
// 9.1.1 扫描二维码并返回结果
// 9.1.2 扫描二维码并返回结果
function scanQRCode(scan_params) {
if ('undefined' === typeof scan_params) scan_params = {}
wx.scanQRCode({
needResult: scan_params.needResult || 0, // 默认为0,0扫描结果由微信处理,1直接返回扫描结果
scanType: scan_params.scanType || ['qrCode', 'barCode'], // 可以指定扫二维码还是一维码,默认二者都有
success: function (res) { // 当 needResult 为 1 时,扫码返回的结果
if (JSWE.wxScanQRCodeSuccess) {JSWE.wxScanQRCodeSuccess(res)}
}
})
}
// QRCode & BarCode is different
function parseScanQRCodeResultStr(resultStr) {
var strs = resultStr.split(',')
return strs[strs.length - 1]
}
// 10 微信支付接口
// 10.1 发起一个支付请求
function chooseWXPay(wxpay_params) {
wx.chooseWXPay({
timestamp: wxpay_params.timeStamp, // 支付签名时间戳,注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: wxpay_params.nonceStr, // 支付签名随机串,不长于 32 位
package: wxpay_params.package, // 统一支付接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: wxpay_params.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: wxpay_params.paySign, // 支付签名
success: function (res) {
// 支付成功后的回调函数
if (JSWE.wxPaySuccess) {JSWE.wxPaySuccess(res)}
}
})
}
// xx 微信原生企业红包接口
// xx.1 发起一个发送原生企业红包请求
function openEnterpriseRedPacket(wxredpack_params) {
wx.openEnterpriseRedPacket({
timeStamp: wxredpack_params.timeStamp, // 红包签名时间戳,注意原生企业红包接口timeStamp字段名需大写其中的S字符,而支付接口timeStamp字段名无需大写其中的S字符。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符
nonceStr: wxredpack_params.nonceStr, // 红包签名随机串,不长于 32 位
package: encodeURIComponent(wxredpack_params.package), // 发放红包接口返回的prepay_id参数值,提交格式如:prepay_id=***)
signType: wxredpack_params.signType, // 签名方式,默认为'SHA1',使用新版支付需传入'MD5'
paySign: wxredpack_params.paySign, // 红包签名
success: function (res) {
// 发送原生企业红包成功后的回调函数
if (JSWE.wxEnterpriseRedPacketSuccess) {JSWE.wxEnterpriseRedPacketSuccess(res)}
}
})
}
var v = {
version: '1.0.5',
// Basic Vars
config: config,
wxData: wxData,
jsApiList: jsApiList,
isEmpty: isEmpty,
isNotEmpty: isNotEmpty,
// Weixin Function
isOpenInWeixin: isOpenInWeixin,
getWeixinVersion: getWeixinVersion,
isWeixinVersion: isWeixinVersion,
// Menu Function
hideOptionMenu: hideOptionMenu,
showOptionMenu: showOptionMenu,
hideMenuItems: hideMenuItems,
showMenuItems: showMenuItems,
hideAllNonBaseMenuItem: hideAllNonBaseMenuItem,
showAllNonBaseMenuItem: showAllNonBaseMenuItem,
closeWindow: closeWindow,
// Share Function
initWxData: initWxData,
changeWxData: changeWxData,
fixedWxData: fixedWxData,
// Voice Function
voice: voice,
translateVoice: translateVoice,
startRecord: startRecord,
stopRecord: stopRecord,
playVoice: playVoice,
pauseVoice: pauseVoice,
stopVoice: stopVoice,
uploadVoice: uploadVoice,
downloadVoice: downloadVoice,
// Image Function
images: images,
chooseImage: chooseImage,
previewImage: previewImage,
uploadImage: uploadImage,
uploadImages: uploadImages,
downloadImage: downloadImage,
downloadImages: downloadImages,
getLocalImgData: getLocalImgData,
// Scan Function
scanQRCode: scanQRCode,
parseScanQRCodeResultStr: parseScanQRCodeResultStr,
// Pay Function
chooseWXPay: chooseWXPay,
// EnterpriseRedPacket Function
openEnterpriseRedPacket: openEnterpriseRedPacket
}
e.JSWE = e.V = v
})(window)
|