wxShare.ts 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. import Vue from 'vue'
  2. import WeiXinSDK from '@/utils/wx-js-sdk-register.ts'
  3. import { isWeiXinBrowser, androidOrIOS } from '@/utils/globalFunctions'
  4. import { getWxSdkSign } from '@/api/index.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. const firstUrl = location.href.split('#')[0]
  15. export async function getSdkSign (url: string) {
  16. const sdkInfo = await getWxSdkSign({ url })
  17. if (!sdkInfo) return
  18. const info = sdkInfo.data
  19. if (info && info.wxsdk && Array.isArray(info.wxsdk)) {
  20. const sdk = info.wxsdk
  21. return new WeiXinSDK({
  22. appId: sdk[0],
  23. timestamp: sdk[1],
  24. nonceStr: sdk[2],
  25. signature: sdk[3]
  26. })
  27. }
  28. }
  29. /* 微信自定义分享封装函数 */
  30. /**
  31. * url:获取微信分享签名的url地址
  32. * isShare:当前所在路径是否需要分享
  33. * */
  34. export async function weChatShare (options: any) {
  35. if (!inWeiXinBrowser) return
  36. const device = isAndroidOrIos
  37. // 获取并注册sdkSign
  38. const url = location.href.split('#')[0]
  39. if (device === 'ios') {
  40. // url = firstUrl
  41. console.log(firstUrl)
  42. }
  43. const wxSdk: any = await getSdkSign(url)
  44. Vue.prototype.$wxSdk = wxSdk
  45. wxSdk.shareToFriendAndQQ(options)
  46. wxSdk.shareToFriendsAndQZone(options)
  47. return wxSdk
  48. }
  49. export async function weChatPay (options: any) {
  50. if (!inWeiXinBrowser) return
  51. // 获取并注册sdkSign
  52. const url = location.href.split('#')[0]
  53. const wxSdk: any = await getSdkSign(url)
  54. Vue.prototype.$wxSdk = wxSdk
  55. wxSdk.chooseWXPayForWeiXinJSBridge(options)
  56. return wxSdk
  57. }