globalVariable.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import Vue from 'vue'
  2. import WeiXinSDK from '@/utils/wx-js-sdk-register.ts'
  3. import { isWeiXinBrowser, androidOrIOS } from '@/utils/globalFunctions.ts'
  4. import { getWxSdkSign } from '@/api/pay.ts'
  5. declare module 'vue/types/vue' {
  6. interface Vue {
  7. $env: any;
  8. $registerWxSdk: any;
  9. $wxSdk: any;
  10. }
  11. }
  12. const inWeiXinBrowser = isWeiXinBrowser()
  13. const isAndroidOrIos = androidOrIOS()
  14. // 全局变量
  15. Vue.prototype.$env = {
  16. isWeiXinBrowser: inWeiXinBrowser,
  17. platform: inWeiXinBrowser ? 'wx' : 'app',
  18. isAndroid: isAndroidOrIos === 'android',
  19. isIOS: isAndroidOrIos === 'ios'
  20. }
  21. // 如果是微信浏览器, 注册一个微信SDK初始化函数
  22. if (inWeiXinBrowser) {
  23. Vue.prototype.$registerWxSdk = () => {
  24. getWxSdkSign({ url: location.href.split('#')[0] }).then(result => {
  25. const res = result.data
  26. if (res && res.wxsdk && Array.isArray(res.wxsdk) && res.wxsdk !== 0) {
  27. const sdk = res.wxsdk
  28. Vue.prototype.$wxSdk = new WeiXinSDK({
  29. appId: sdk[0],
  30. timestamp: sdk[1],
  31. nonceStr: sdk[2],
  32. signature: sdk[3]
  33. })
  34. }
  35. }).catch(err => {
  36. console.log(err)
  37. })
  38. }
  39. }