js_sdk_utils.ts 3.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. // const wxjssdk = require('jweixin-module')
  2. import { getSignatureApi } from '@/services/gzh_home'
  3. import wxjssdk from 'weixin-js-sdk'
  4. import { appId } from '@/utils/http'
  5. //调用 返回的接口
  6. //获取签名--添加微信配置
  7. export const wxconfig = async () => {
  8. // const currenturl = encodeURIComponent(location.href.split('#')[0])
  9. const currenturl = location.href.split('#')[0]
  10. alert(currenturl)
  11. const response = await getSignatureApi({ url: currenturl })
  12. //将值装进微信的配置
  13. wxjssdk.config({
  14. debug: true,
  15. appId: appId,
  16. timestamp: response.data.timestamp,
  17. nonceStr: response.data.nonceStr,
  18. signature: response.data.signature,
  19. jsApiList: [
  20. // 'checkJsApi', //判断当前客户端版本是否支持指定JS接口
  21. 'chooseImage',
  22. // 'updateAppMessageShareData', //分享接口
  23. // // 'chooseImageApi', //扫一扫接口
  24. // 'chooseWXPay', //微信支付
  25. ],
  26. })
  27. }
  28. // 选择图片方法
  29. export const chooseImageApi = () => {
  30. return new Promise((resolve, reject) => {
  31. wxconfig()
  32. wxjssdk.ready(() => {
  33. console.log('微信验证')
  34. wxjssdk.chooseImage({
  35. count: 1, // 默认9
  36. sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
  37. sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
  38. success: function (res) {
  39. console.log(res)
  40. resolve(res)
  41. // var localIds = res.localIds; // 返回选定照片的本地ID列表,localId可以作为img标签的src属性显示图片
  42. },
  43. cancel: function (): void {
  44. console.log('用户取消了')
  45. // throw new Error('Function not implemented.')
  46. // throw new Error('Function not implemented.')
  47. },
  48. })
  49. }),
  50. wxjssdk.error((res) => {
  51. console.log('config fail:', res)
  52. //config fail,抛出失败原因
  53. console.log('-------------失败------------')
  54. reject(res)
  55. })
  56. })
  57. }
  58. //分享方法
  59. const shareAppApi = () => {
  60. return new Promise((resolve, reject) => {
  61. //注意----需在用户可能点击分享按钮前就先调用
  62. wxjssdk.ready(() => {
  63. //需在用户可能点击分享按钮前就先调用
  64. wxjssdk.updateAppMessageShareData({
  65. title: '', // 分享标题
  66. desc: '', // 分享描述
  67. link: '', // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  68. imgUrl: '', // 分享图标
  69. success: function () {
  70. resolve('分享成功')
  71. // 设置成功
  72. },
  73. })
  74. })
  75. })
  76. }
  77. // wxjssdk.checkJsApi({
  78. // jsApiList: ['chooseImage'], // 需要检测的JS接口列表,所有JS接口列表见附录2,
  79. // success: function (res) {
  80. // // 以键值对的形式返回,可用的api值true,不可用为false
  81. // // 如:{"checkResult":{"chooseImage":true},"errMsg":"checkJsApi:ok"}
  82. // },
  83. // })
  84. //
  85. // wxjssdk.ready(function () {
  86. // //微信config正确性验证通过了
  87. // console.log('微信验证通过了')
  88. // // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
  89. // })
  90. wxjssdk.error(function (res) {
  91. console.log('微信验证没有通过了')
  92. // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
  93. })