对接微信公众号 文档链接 https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141115 debug 地址 http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=jsapisign
/**
* Created by levy on 2018/8/15.
*/
import {wechatAppId, jsApiTicket} from '@/const/wechat'
export default function({app}) {
if (process.env.NODE_ENV !== 'production') return
app.router.afterEach(async (to, from) => {
let resp
try {
resp = await app.$axios.$get(jsApiTicket)
let ticket = resp.payload,
timestamp = new Date().getTime(),
nonceStr = 'nonceStr',
url = location.href.split('#')[0] // 这句话是一定的,无论路由模式是hash还是browserHistory
let str = `jsapi_ticket=${ticket}&noncestr=${nonceStr}×tamp=${timestamp}&url=${url}`,
signature = sha1(str)
// 配置菜单
wx.config({
// debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: wechatAppId, // 必填,公众号的唯一标识
timestamp, // 必填,生成签名的时间戳
nonceStr, // 必填,生成签名的随机串
signature, // 必填,签名,见附录1
jsApiList: [
'hideAllNonBaseMenuItem',
'scanQRCode',
'chooseWXPay',
'closeWindow'
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
})
wx.ready(function() {
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
// config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
// 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
// 隐藏所有传播菜单, 不能复制链接等, 只能刷新
wx.hideAllNonBaseMenuItem()
})
} catch (e) {
console.error('wechat sdk config error : ', e)
}
})
}
// 在页面引入js, 支持https
<script src="https://cdn.bootcss.com/js-sha1/0.4.1/sha1.min.js"></script>
<script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
// 获取js api ticket
// 并生成签名
Vue.http.get(jsApiTicket).then(resp => {
let ticket = resp.data.ticket || 'sM4AOVdWfPE4DxkXGEs8VGihp7O8Q-JvBGqoKZZAe58Ys9GswAPQPDJGQvbzCVCx9XgueyhJPtSA1Jm4tZFMiQ',
timestamp = new Date().getTime(),
nonceStr = 'nonceStr',
url = location.href.split('#')[0]
let str = `jsapi_ticket=${ticket}&noncestr=${nonceStr}×tamp=${timestamp}&url=${url}`,
signature = sha1(str)
// 配置菜单
wx.config({
// debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: 'wx7a4fea108c454323', // 必填,公众号的唯一标识
timestamp, // 必填,生成签名的时间戳
nonceStr, // 必填,生成签名的随机串
signature, // 必填,签名,见附录1
jsApiList: [
'hideAllNonBaseMenuItem'
] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
})
})
wx.ready(function(){
// config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,
// config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。
// 对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。
// 隐藏所有传播菜单, 不能复制链接等, 只能刷新
wx.hideAllNonBaseMenuItem()
})