1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- 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
- }
|