wechat.js 3.2 KB
import {
  isWeiXin
} from '@/utils/utils';

function wxSign() {
  return new Promise((resolve, reject) => {
    app.post({
      url: app.api.wxJsSign,
      data: {
        url: location.href
      },
      // mode: "custom"
    }).then(res => {
      if (!window.wx) {
        return
      }
      wx.config({
        debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
        appId: res.appId, // 必填,公众号的唯一标识
        timestamp: res.timestamp, // 必填,生成签名的时间戳
        nonceStr: res.nonceStr, // 必填,生成签名的随机串
        signature: res.signature, // 必填,签名,见附录1
        jsApiList: [
          "updateAppMessageShareData",
          "updateTimelineShareData",
          "onMenuShareTimeline",
          "onMenuShareAppMessage",
          "chooseWXPay",
        ] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
      });
      wx.ready(() => {
        resolve()
      })
    });
  })
}

function setShare(title, description, image, url) {
  wx.updateAppMessageShareData({
    title: title, // 分享标题
    desc: description, // 分享描述
    link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    imgUrl: image, // 分享图标
    success() {
      // 设置成功
    }
  });


  wx.updateTimelineShareData({
    title: title, // 分享标题
    link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
    imgUrl: image, // 分享图标
    success() {
      // 设置成功
    }
  });
}


let wechat = {
  init() {
    return new Promise((resolve, reject) => {
      if (isWeiXin()) {
        wxSign().then(() => {
          resolve();
        }).catch(e => {
          resolve();
        });
      } else {
        resolve();
      }
    });
  },
  wxShare(title, description, image, url) {
    title = title || process.env.VUE_APP_MALL_NAME + "";
    description = description || "";
    image = image || "";
    url = url || location.href;

    return new Promise((resolve, reject) => {
      if (isWeiXin()) {
        wx.onMenuShareAppMessage({
          title: title, // 分享标题
          desc: description, // 分享描述
          link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
          imgUrl: image, // 分享图标
          success: function () {
            // 分享成功
            // alert("ShareApp")
            resolve("ShareApp")
          }
        });

        wx.onMenuShareTimeline({
          title: title, // 分享标题
          link: url, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
          imgUrl: image, // 分享图标
          success: function () {
            // 分享成功
            // alert("ShareTimeline")
            resolve("ShareTimeline")
          }
        });
      }
    });

    // if (isWeiXin()) {
    //   setShare(title, description, image, url);
    // }
  }
};

export default wechat;