Commit 9c1451b6 authored by coolfish's avatar coolfish

增加jssdk

parent 6a8dfb73
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -7,21 +7,23 @@
"dev": "nodemon index.js --exec babel-node"
},
"dependencies": {
"babel-cli": "^6.24.1",
"babel-core": "^6.24.1",
"babel-eslint": "^7.2.3",
"babel-polyfill": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"body-parser": "~1.17.1",
"cookie-parser": "~1.4.3",
"debug": "~2.6.3",
"dotenv": "^4.0.0",
"ejs": "~2.5.6",
"express": "~4.15.2",
"jssha": "^2.3.1",
"mongoose": "^4.10.5",
"morgan": "~1.8.1",
"serve-favicon": "~2.4.2",
"babel-cli": "^6.24.1",
"babel-core": "^6.24.1",
"babel-eslint": "^7.2.3",
"babel-polyfill": "^6.23.0",
"babel-preset-es2015": "^6.24.1",
"babel-preset-stage-2": "^6.24.1",
"nodemon": "^1.11.0"
"nodemon": "^1.11.0",
"request": "^2.81.0",
"serve-favicon": "~2.4.2"
}
}
var express = require('express');
var router = express.Router();
var wx = require('./util/wx.js');
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index');
wx.getWXSign(function (err, data) {
res.render('index', {
appid: data.appid || '',
timestamp: data.timestamp || '',
nonceStr: data.nonceStr || '',
signature: data.signature || ''
});
});
});
// router.get('/list', function(req, res, next) {
// res.render('list');
......
import request from 'request'
import jsSHA from 'jssha'
const appid = 'wx66e59f0e402601f3';
const secret = '184897070ca93a0e563cb6b79962a98c';
const url = 'http://hfads.apps.xiaoyun.com';
const wxStatus = {
'token': '',
'ticket': '',
'timestamp': null
};
const createNonceStr = function () {
return Math.random().toString(36).substr(2, 15);
};
const createTimestamp = function () {
return parseInt(new Date().getTime() / 1000) + '';
};
const raw = function (args) {
var keys = Object.keys(args);
keys = keys.sort()
var newArgs = {};
keys.forEach(function (key) {
newArgs[key.toLowerCase()] = args[key];
});
var string = '';
for (var k in newArgs) {
string += '&' + k + '=' + newArgs[k];
}
string = string.substr(1);
return string;
};
const sign = function (jsapi_ticket, url) {
var ret = {
jsapi_ticket: jsapi_ticket,
nonceStr: createNonceStr(),
timestamp: createTimestamp(),
url: url
};
var string = raw(ret);
console.log(string)
var shaObj = new jsSHA('SHA-1', 'TEXT');
shaObj.update(string);
ret.signature = shaObj.getHash('HEX');
console.log(ret)
return {
appid: appid,
nonceStr: ret.nonceStr,
timestamp: ret.timestamp,
signature: ret.signature
};
};
const getAccessToken = function (callback) {
request.get({
'url': `https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appid}&secret=${secret}`
}, (err, res, body) => {
if (!err && res.statusCode === 200) {
body = JSON.parse(body);
wxStatus['token'] = body.access_token;
wxStatus['timestamp'] = createTimestamp();
}
callback(err);
});
}
const getJsapiTicket = function (callback) {
getAccessToken(function (err) {
request.get({
'url': `http://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=${wxStatus['token']}`
}, (err, res, body) => {
if (!err && res.statusCode === 200) {
body = JSON.parse(body);
wxStatus['ticket'] = body.ticket;
}
callback(err);
});
});
}
const getWXSign = function (callback) {
var nowTime = createTimestamp();
var result = {};
if (!wxStatus['timestamp'] || nowTime - wxStatus['timestamp'] > 7000) {
getJsapiTicket(function (err) {
if (err) {
callback(err);
}
result = sign(wxStatus['ticket'], url);
callback(null, result);
});
} else {
result = sign(wxStatus['ticket'], url);
callback(null, result);
}
};
export {
getWXSign,
sign
}
......@@ -4,6 +4,7 @@
<title>红椒易X小云蜂巢新媒体广告平台</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<link rel='stylesheet' href='/css/style.css' />
<script src="http://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script>
<script src="js/jquery.min.js"></script>
<script src="js/particles.js"></script>
<script src="js/main.js"></script>
......@@ -176,4 +177,55 @@
</div>
</div>
</body>
<script type="text/javascript">
var shareIcon = 'http://hfads.apps.xiaoyun.com/images/hjy@2x.png';
var shareUrl = 'http://hfads.apps.xiaoyun.com/';
var shareTitle = '红椒易X小云蜂巢新媒体广告平台';
var shareDesc = '整合内容资源,提升广告主的品牌曝光能力,只需四步,即可完成广告投放需求。';
wx.config({
debug: true,
appId: <%- appid || '' %>,
timestamp: <%- timestamp || '' %>,
nonceStr: <%- nonceStr || '' %>,
signature: <%- signature || '' %>,
jsApiList: [
'onMenuShareTimeline',
'onMenuShareAppMessage',
'onMenuShareQQ',
'onMenuShareWeibo',
'onMenuShareQZone'
]
});
wx.ready(function () {
wx.onMenuShareTimeline({
title: shareTitle,
link: shareIcon,
imgUrl: shareUrl
});
wx.onMenuShareAppMessage({
title: shareTitle,
desc: shareDesc,
link: shareUrl,
imgUrl: shareIcon
});
wx.onMenuShareQQ({
title: shareTitle,
desc: shareDesc,
link: shareUrl,
imgUrl: shareIcon
});
wx.onMenuShareWeibo({
title: shareTitle,
desc: shareDesc,
link: shareUrl,
imgUrl: shareIcon
});
wx.onMenuShareQZone({
title: shareTitle,
desc: shareDesc,
link: shareUrl,
imgUrl: shareIcon
});
});
</script>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment