wxJsSDK.js 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. // 获取微信公众号SDK权限
  2. //接口请求方法
  3. import $http from '@/config/requestConfig';
  4. import base from '@/config/baseUrl';
  5. import {
  6. publicShareFun
  7. } from '@/config/html5Utils';
  8. //获取地理位置
  9. export const getLocation = () => {
  10. return new Promise((resolve, reject) => {
  11. //配置校验成功后执行
  12. jWeixin.ready(function() {
  13. // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
  14. });
  15. });
  16. }
  17. //设置分享信息
  18. export const setShare = (data, callback) => {
  19. //配置校验成功后执行
  20. jWeixin.ready(function() {
  21. if (!data.link) {
  22. let url = window.location.href;
  23. let index = url.indexOf("?");
  24. if (index != -1) {
  25. if (url.indexOf("#") != -1 && url.indexOf("#") > index) {
  26. url = url.substring(0, index) + url.substring(url.indexOf("#"));
  27. } else {
  28. url = url.substr(0, index);
  29. }
  30. }
  31. data.link = url;
  32. }
  33. // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
  34. jWeixin.updateAppMessageShareData({
  35. title: data.title, // 分享标题
  36. desc: data.desc, // 分享描述
  37. link: data.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  38. imgUrl: data.imgUrl, // 分享图标
  39. success: function() {
  40. // 设置成功
  41. callback && callback();
  42. }
  43. });
  44. jWeixin.updateTimelineShareData({
  45. title: data.title, // 分享标题
  46. link: data.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
  47. imgUrl: data.imgUrl, // 分享图标
  48. success: function() {
  49. // 设置成功
  50. callback && callback();
  51. }
  52. });
  53. });
  54. }
  55. //微信扫一扫
  56. export const scanQRCode = (callback, needResult = 1) => {
  57. //配置校验成功后执行
  58. jWeixin.ready(function() {
  59. jWeixin.scanQRCode({
  60. needResult: needResult, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
  61. scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码,默认二者都有
  62. success: function(res) {
  63. callback && callback(res);
  64. }
  65. });
  66. });
  67. }
  68. window.onload = function() {
  69. // 配置文件里面没有publicAppId将不激活微信SDK功能
  70. if (!base.publicAppId) {
  71. return;
  72. }
  73. //获取当前页面地址
  74. let url = window.location.href;
  75. url = url.substring(0, url.indexOf("#"));
  76. //获取微信公众号SDK权限的签名、随机数、时间戳
  77. $http.post("api/open/signature", {
  78. url: url
  79. }).then(res => {
  80. // 微信SDK配置
  81. jWeixin.config({
  82. debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
  83. appId: base.publicAppId, // 必填,公众号的唯一标识
  84. timestamp: res.timestamp, // 必填,生成签名的时间戳
  85. nonceStr: res.noncestr, // 必填,生成签名的随机串
  86. signature: res.signature, // 必填,签名
  87. jsApiList: [
  88. "getLocation",
  89. "updateAppMessageShareData",
  90. "updateTimelineShareData",
  91. 'onMenuShareAppMessage', //旧的接口,即将废弃
  92. 'onMenuShareTimeline' //旧的接口,即将废弃
  93. ] // 必填,需要使用的JS接口列表
  94. });
  95. //设置分享内容
  96. publicShareFun();
  97. });
  98. //配置校验失败后执行
  99. jWeixin.error(function(res) {
  100. // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
  101. console.log(res);
  102. });
  103. };