|
|
|
|
/*
|
|
|
|
|
* 微信JS-SDK工具
|
|
|
|
|
* 用于H5端的微信分享功能
|
|
|
|
|
*/
|
|
|
|
|
import { ROOTPATH, WECHAT_APPID } from '@/common/config.js'
|
|
|
|
|
|
|
|
|
|
let wx = null
|
|
|
|
|
|
|
|
|
|
// 动态加载微信JS-SDK
|
|
|
|
|
const loadWxSDK = () => {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
// #ifdef H5
|
|
|
|
|
if (typeof window !== 'undefined' && !window.wx) {
|
|
|
|
|
const script = document.createElement('script')
|
|
|
|
|
script.src = 'https://res.wx.qq.com/open/js/jweixin-1.6.0.js'
|
|
|
|
|
script.onload = () => {
|
|
|
|
|
wx = window.wx
|
|
|
|
|
resolve(wx)
|
|
|
|
|
}
|
|
|
|
|
script.onerror = () => {
|
|
|
|
|
reject(new Error('加载微信JS-SDK失败'))
|
|
|
|
|
}
|
|
|
|
|
document.head.appendChild(script)
|
|
|
|
|
} else if (window.wx) {
|
|
|
|
|
wx = window.wx
|
|
|
|
|
resolve(wx)
|
|
|
|
|
} else {
|
|
|
|
|
reject(new Error('不支持的环境'))
|
|
|
|
|
}
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifndef H5
|
|
|
|
|
resolve(null)
|
|
|
|
|
// #endif
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取微信JS-SDK签名
|
|
|
|
|
const getWxSignature = () => {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
// #ifdef H5
|
|
|
|
|
const url = window.location.href.split('#')[0]
|
|
|
|
|
uni.request({
|
|
|
|
|
url: `${ROOTPATH}/api/mobile/user/wechat-share`,
|
|
|
|
|
method: 'GET',
|
|
|
|
|
data: {
|
|
|
|
|
url: url,
|
|
|
|
|
activity_tag: 'walksz',
|
|
|
|
|
activity_list_id: 13
|
|
|
|
|
},
|
|
|
|
|
success: (res) => {
|
|
|
|
|
if (res.data && res.data.signature) {
|
|
|
|
|
resolve(res.data)
|
|
|
|
|
} else {
|
|
|
|
|
reject(new Error('获取签名失败'))
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
fail: (err) => {
|
|
|
|
|
reject(err)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifndef H5
|
|
|
|
|
resolve(null)
|
|
|
|
|
// #endif
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 初始化微信JS-SDK
|
|
|
|
|
const initWxSDK = (shareConfig = {}) => {
|
|
|
|
|
return new Promise((resolve, reject) => {
|
|
|
|
|
// #ifdef H5
|
|
|
|
|
loadWxSDK().then(() => {
|
|
|
|
|
getWxSignature().then((signatureData) => {
|
|
|
|
|
const { signature, timestamp, nonceStr } = signatureData
|
|
|
|
|
|
|
|
|
|
wx.config({
|
|
|
|
|
debug: false,
|
|
|
|
|
appId: WECHAT_APPID,
|
|
|
|
|
timestamp: timestamp,
|
|
|
|
|
nonceStr: nonceStr,
|
|
|
|
|
signature: signature,
|
|
|
|
|
jsApiList: ['updateAppMessageShareData', 'updateTimelineShareData']
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
wx.ready(() => {
|
|
|
|
|
// 分享到朋友
|
|
|
|
|
wx.updateAppMessageShareData({
|
|
|
|
|
title: shareConfig.title || '打卡苏州市党史教育基地',
|
|
|
|
|
desc: shareConfig.desc || '打卡苏州市党史教育基地',
|
|
|
|
|
link: shareConfig.link || window.location.href,
|
|
|
|
|
imgUrl: shareConfig.imgUrl || `${window.location.origin}/h5walksz/static/share.jpg`,
|
|
|
|
|
success: () => {
|
|
|
|
|
console.log('分享到朋友成功')
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
// 分享到朋友圈
|
|
|
|
|
wx.updateTimelineShareData({
|
|
|
|
|
title: shareConfig.title || '打卡苏州市党史教育基地',
|
|
|
|
|
link: shareConfig.link || window.location.href,
|
|
|
|
|
imgUrl: shareConfig.imgUrl || `${window.location.origin}/h5walksz/static/share.jpg`,
|
|
|
|
|
success: () => {
|
|
|
|
|
console.log('分享到朋友圈成功')
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
resolve(wx)
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
wx.error((res) => {
|
|
|
|
|
console.error('微信JS-SDK配置失败', res)
|
|
|
|
|
reject(res)
|
|
|
|
|
})
|
|
|
|
|
}).catch((err) => {
|
|
|
|
|
console.error('获取签名失败', err)
|
|
|
|
|
reject(err)
|
|
|
|
|
})
|
|
|
|
|
}).catch((err) => {
|
|
|
|
|
console.error('加载微信JS-SDK失败', err)
|
|
|
|
|
reject(err)
|
|
|
|
|
})
|
|
|
|
|
// #endif
|
|
|
|
|
// #ifndef H5
|
|
|
|
|
resolve(null)
|
|
|
|
|
// #endif
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export {
|
|
|
|
|
loadWxSDK,
|
|
|
|
|
getWxSignature,
|
|
|
|
|
initWxSDK
|
|
|
|
|
}
|
|
|
|
|
|