月&盾

生活的精彩要去发现,而不是等待出现

文章详情

node.js作为微信接口服务器

    前端时间用node改写了下去年用Java练习时写的微信接口,可能是因为微信接口看的多了更加熟悉了,也可能是node开发更快速,反正不到一小时就搞定了微信token的验证,放到博客项目中,新增了一个URL请求,在微信公众平台上测试了下,没想到调试两三次就通过了,想当初用Java测试时各种问题不断。想起来可惜的是去年Java版的微信接口做的自定义菜单,自动回复等功能,由于BAE收费的缘故就废掉了

/**
 * Created by huopanpan on 2014/10/10.
 */
var crypto = require('crypto');
/**
 * 验证token
 * @param req
 * @param res
 */
function validateToken(req, res) {
    var query = req.query;
    var signature = query.signature;//微信服务器加密字符串
    var echostr = query.echostr;//随机字符串
    var timestamp = query['timestamp'];//时间戳
    var nonce = query.nonce;//nonce
    var oriArray = new Array();
    oriArray[0] = nonce;
    oriArray[1] = timestamp;
    oriArray[2] = "hale";//token
    oriArray.sort();
    var original = oriArray[0]+oriArray[1]+oriArray[2];
    console.log("Original Str:"+original);
    console.log("signature:"+signature);
    var scyptoString = sha1(original);//将三个参数拼接加密字符串,并与服务器发送的字符串对比
    if (signature == scyptoString) {
        res.send(echostr);
    }
    else {
        res.send("Bad Token!");
    }
}

/**
 * sha1加密
 * @param str
 * @returns {*}
 */
function sha1(str) {
    var md5sum = crypto.createHash('sha1');
    md5sum.update(str);
    str = md5sum.digest('hex');
    return str;
}
/**
 * 重新获取access_token
 * @type {validateToken}
 */
function getAccessToken(){
    var appid = "";
    var appsecret = "";
    var url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=fdgf&secret=dfdsgfrf";

}
exports.validateToken = validateToken;

关键字词:微信公众平台