import Vue from 'vue' import WeiXinSDK from '@/utils/wx-js-sdk-register.ts' import { isWeiXinBrowser, androidOrIOS } from '@/utils/globalFunctions' import { getWxSdkSign } from '@/api/index.ts' declare module 'vue/types/vue' { interface Vue { $env: any; $registerWxSdk: any; $wxSdk: any; } } const inWeiXinBrowser = isWeiXinBrowser() const isAndroidOrIos = androidOrIOS() const firstUrl = location.href.split('#')[0] export async function getSdkSign (url: string) { const sdkInfo = await getWxSdkSign({ url }) if (!sdkInfo) return const info = sdkInfo.data if (info && info.wxsdk && Array.isArray(info.wxsdk)) { const sdk = info.wxsdk return new WeiXinSDK({ appId: sdk[0], timestamp: sdk[1], nonceStr: sdk[2], signature: sdk[3] }) } } /* 微信自定义分享封装函数 */ /** * url:获取微信分享签名的url地址 * isShare:当前所在路径是否需要分享 * */ export async function weChatShare (options: any) { if (!inWeiXinBrowser) return const device = isAndroidOrIos // 获取并注册sdkSign const url = location.href.split('#')[0] if (device === 'ios') { // url = firstUrl console.log(firstUrl) } const wxSdk: any = await getSdkSign(url) Vue.prototype.$wxSdk = wxSdk wxSdk.shareToFriendAndQQ(options) wxSdk.shareToFriendsAndQZone(options) return wxSdk } export async function weChatPay (options: any) { if (!inWeiXinBrowser) return // 获取并注册sdkSign const url = location.href.split('#')[0] const wxSdk: any = await getSdkSign(url) Vue.prototype.$wxSdk = wxSdk wxSdk.chooseWXPayForWeiXinJSBridge(options) return wxSdk }