(基于nodejs)微信测试号(接口配置信息)验证服务器的URL

步骤1:查看微信公众号开发者文档
http://mp.weixin.qq.com/wiki/8/f9a0b8382e0b77d87b3bcc1ce6fbc104.html

这里写图片描述

我的理解如下:当开发者在测试号中配置点击提交后。微信服务器会发送一条GET请求到你所填写的服务器的地址上。
例如我这里是:http://123.206.96.249:8080 其中,GET请求携带四个参数(signature、timestamp、nonce、echostr)。
(友情建议:学生们应该玩玩腾讯云的云服务器,太给力了,每个月才1元!有了服务器,linux命令也慢慢得心应手了 !!!) 。

服务器接收到GET请求,取出四个参数,然后进行如下操作:
1)将token (自己设置的) 、timestamp(时间戳)、nonce(随机数)三个参数进行字典排序
2)将上面三个字符串拼接成一个字符串再进行sha1加密
3)将加密后的字符串与signature进行对比,若成功,返回echostr

这里写图片描述

步骤2:在你的服务器上新建一个verifyURL.js文件,代码如下:

var PORT=8080;                 //监听8080端口号
var http=require('http');  
var qs=require('qs');
var TOKEN='yezhenxu';           //必须与测试号所填写的Token相同

function checkSignature(params,token){
    var key=[token,params.timestamp,params.nonce].sort().join(''); 
     //将token (自己设置的) 、timestamp(时间戳)、nonce(随机数)三个参数进行字典排序
    var sha1=require('crypto').createHash('sha1');
     //将上面三个字符串拼接成一个字符串再进行sha1加密
    sha1.update(key);
    return sha1.digest('hex') ==params.signature;
     //将加密后的字符串与signature进行对比,若成功,返回echostr
}

var server=http.createServer(function (request,response) {
   var query=require('url').parse(request.url).query;
    var params=qs.parse(query);

    console.log(params);
    console.log("token :",TOKEN);


    if(!checkSignature(params,TOKEN)){
        //如果签名不对,结束请求并返回
        response.end('signature fail');
    }

    if (request.method == "GET") {
        //如果请求是GET,返回echostr用于通过服务器有效校验
        response.end(params.echostr);
    }else{
        //否则是微信给开发者服务器的POST请求
        var postdata='';
        request.addListener("data",function(postchunk){
            postdata+=postchunk;
        });
        //获取到了POST数据
        request.addListener("end",function(){
            console.log(postdata);
            response.end('success ');
        });
    }
});

server.listen(PORT, function () {
    console.log('Server running at port:'+PORT);
});


运行代码: node verifyURL.js (开启服务器)

步骤3:在你的测试号上填写服务器的配置(URL)

这里写图片描述

点击提交,OK,大功告成!!!

接下来,你就可以愉快地进行微信的开发之旅了……

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值