wechat.js
2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/**
* Created by Tommy Huang on 18/04/06.
*/
const config = require('config-lite')({
config_basedir: __dirname,
config_dir: 'config'
})
const moment = require('moment')
const axios = require('axios')
const Helper = require('./helper')
const WechatTicket = require('../models').WechatTicket
exports.buildTicket = async function(req, res) {
try {
let ticket = await WechatTicket.findOne({
where: {
appid: config.wx.appId
}
})
let accessToken, jsapiTicket
if (!ticket || moment(ticket.created_at).add(30, 'minutes').isBefore(moment())) {
const tokenRes = await axios.get(`https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${config.wx.appId}&secret=${config.wx.appSecret}`)
console.log(tokenRes.data)
if (!tokenRes.data.access_token) throw new Error('获取微信授权失败,请联系运营人员解决')
accessToken = tokenRes.data.access_token
const jsapiRes = await axios.get(`https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=${accessToken}&type=jsapi`)
console.log(jsapiRes.data)
if (jsapiRes.data.errcode !== 0 || !jsapiRes.data.ticket) throw new Error('获取微信授权失败,请联系运营人员解决')
jsapiTicket = jsapiRes.data.ticket
if (!ticket) {
ticket = await WechatTicket.create({
appid: config.wx.appId,
accessToken: accessToken,
jsapiTicket: jsapiTicket
})
} else {
const update = await ticket.update({
accessToken: accessToken,
jsapiTicket: jsapiTicket
})
}
} else {
accessToken = ticket.accessToken
jsapiTicket = ticket.jsapiTicket
}
let ticketRes = Helper.buildWeChatConfig(jsapiTicket, `https://www.51liuliang.cc/netiou/shareIOU?id=${req.query.id}`)
ticketRes.appId = config.wx.appId
res.json({
success: 1,
config: ticketRes
})
} catch (e) {
console.log(e)
res.json({
success: 0,
msg: `${e.message}`
})
}
}