123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- // 获取微信公众号SDK权限
- //接口请求方法
- import $http from '@/config/requestConfig';
- import base from '@/config/baseUrl';
- import { publicShareFun } from '@/config/html5Utils';
- //获取地理位置
- export const getLocation = () => {
- return new Promise((resolve, reject) => {
- //配置校验成功后执行
- jWeixin.ready(function () {
- // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
- jWeixin.getLocation({
- type: 'gcj02', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
- success: function (res) {
- console.log(res);
- resolve(res);
- },
- fail: (err) => {
- reject(err);
- }
- });
- });
- });
- }
- //设置分享信息
- export const setShare = (data, callback) => {
- //配置校验成功后执行
- jWeixin.ready(function () {
- if (!data.link) {
- let url = window.location.href;
- let index = url.indexOf("?");
- if (index != -1) {
- if (url.indexOf("#") != -1 && url.indexOf("#") > index) {
- url = url.substring(0, index) + url.substring(url.indexOf("#"));
- } else {
- url = url.substr(0, index);
- }
- }
- data.link = url;
- }
- // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
- jWeixin.updateAppMessageShareData({
- title: data.title, // 分享标题
- desc: data.desc, // 分享描述
- link: data.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
- imgUrl: data.imgUrl, // 分享图标
- success: function () {
- // 设置成功
- callback && callback();
- }
- });
- jWeixin.updateTimelineShareData({
- title: data.title, // 分享标题
- link: data.link, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
- imgUrl: data.imgUrl, // 分享图标
- success: function () {
- // 设置成功
- callback && callback();
- }
- });
- });
- }
- //微信扫一扫
- export const scanQRCode = ( callback,needResult = 1) => {
- //配置校验成功后执行
- jWeixin.ready(function () {
- jWeixin.scanQRCode({
- needResult: needResult, // 默认为0,扫描结果由微信处理,1则直接返回扫描结果,
- scanType: ["qrCode","barCode"], // 可以指定扫二维码还是一维码,默认二者都有
- success: function (res) {
- callback && callback(res);
- }
- });
- });
- }
- window.onload = function () {
- // 配置文件里面没有publicAppId将不激活微信SDK功能
- if (!base.publicAppId) {
- return;
- }
- //获取当前页面地址
- let url = window.location.href;
- url = url.substring(0, url.indexOf("#"));
- //获取微信公众号SDK权限的签名、随机数、时间戳
- $http.post("api/open/signature", {
- url: url
- }).then(res => {
- // 微信SDK配置
- jWeixin.config({
- debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
- appId: base.publicAppId, // 必填,公众号的唯一标识
- timestamp: res.timestamp, // 必填,生成签名的时间戳
- nonceStr: res.noncestr, // 必填,生成签名的随机串
- signature: res.signature,// 必填,签名
- jsApiList: [
- "getLocation",
- "updateAppMessageShareData",
- "updateTimelineShareData",
- 'onMenuShareAppMessage', //旧的接口,即将废弃
- 'onMenuShareTimeline' //旧的接口,即将废弃
- ] // 必填,需要使用的JS接口列表
- });
- //设置分享内容
- publicShareFun();
- });
- //配置校验失败后执行
- jWeixin.error(function (res) {
- // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。
- console.log(res);
- });
- };
|