nodejs 위 챗 메시지 송 수신 인터페이스 구현

2226 단어
1. 우선 공중 번호 개발 자 센터 에서 서버 설정 을 사용 해 야 합 니 다.
exports.wechat = function (req, res) {
    
    var echostr, nonce, signature, timestamp;
    signature = req.query.signature;
    timestamp = req.query.timestamp;
    nonce = req.query.nonce;
    echostr = req.query.echostr;
    if(check(timestamp,nonce,signature,"weixin")){
        return res.send(echostr);
    }else{
        return res.end();
    }
};

function check(timestamp, nonce, signature ,token) {
    var currSign, tmp;
    tmp = [token, timestamp, nonce].sort().join("");
    currSign = crypto.createHash("sha1").update(tmp).digest("hex");
    return currSign === signature;
};

2. 사용자 가 공중 번호 로 메 시 지 를 보 내 면 위 챗 서버 는 서버 설정 에 있 는 URL 을 요청 하 는 post 를 보 냅 니 다. post 에서 온 xml 내용 을 xml 형식 으로 되 돌려 받 으 면 메시지 의 수신 과 답장 을 실현 할 수 있 습 니 다.
exports.wechatdo = function (req, res) {
    var _da;
    req.on("data",function(data){
        /*          xml   , buffer  ,  js           ,      toString xml      */
        _da = data.toString("utf-8");

    });
    req.on("end",function(){
        //console.log("end");
        var ToUserName = getXMLNodeValue('ToUserName',_da);
        var FromUserName = getXMLNodeValue('FromUserName',_da);
        var CreateTime = getXMLNodeValue('CreateTime',_da);
        var MsgType = getXMLNodeValue('MsgType',_da);
        var Content = getXMLNodeValue('Content',_da);
        var MsgId = getXMLNodeValue('MsgId',_da);
        console.log(ToUserName);
        console.log(FromUserName);
        console.log(CreateTime);
        console.log(MsgType);
        console.log(Content);
        console.log(MsgId);
        var xml = ''+FromUserName+''+ToUserName+''+CreateTime+''+MsgType+''+Content+'';
        res.send(xml);
    });
};

function getXMLNodeValue(node_name,xml){
    var tmp = xml.split("");
    var _tmp = tmp[1].split(""+node_name+">");
    return _tmp[0];
}

좋은 웹페이지 즐겨찾기