import Vue from 'vue' import WeiXinSDK from '@/utils/wx-js-sdk-register.ts' import { androidOrIOS } from '@/utils/globalFunctions' import { inWeiXinBrowser } from '@/utils/platform' import { getWxSdkSign } from '@/api/' declare module 'vue/types/vue' { interface Vue { $env: any; $envs: any; $registerWxSdk: any; $wxSdk: any; } } const isAndroidOrIos = androidOrIOS() 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] }) } } /* 微信自定义分享封装函数 */ export async function weChatShare (options: any) { if (!inWeiXinBrowser) return const device = isAndroidOrIos // 获取并注册sdkSign let url = location.href.split('#')[0] if (device === 'ios') { url = (Vue as any).prototype.$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 }