From 179da7c0d9275811d82f5d889cd982ea216cf033 Mon Sep 17 00:00:00 2001 From: Jackson Tian Date: Fri, 5 Dec 2014 12:08:03 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=9C=89=E5=89=8D=E7=BD=AEcr?= =?UTF-8?q?yptor=EF=BC=8C=E4=BD=BF=E7=94=A8=E5=89=8D=E7=BD=AEcryptor?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/wechat.js | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/wechat.js b/lib/wechat.js index bcbd4fc0..45bed7b8 100644 --- a/lib/wechat.js +++ b/lib/wechat.js @@ -343,14 +343,17 @@ var serveEncrypt = function (that, req, res, next, _respond) { var timestamp = req.query.timestamp; var nonce = req.query.nonce; + // 判断是否已有前置cryptor + var cryptor = req.cryptor || that.cryptor; + if (method === 'GET') { var echostr = req.query.echostr; - if (signature !== that.cryptor.getSignature(timestamp, nonce, echostr)) { + if (signature !== cryptor.getSignature(timestamp, nonce, echostr)) { res.writeHead(401); res.end('Invalid signature'); return; } - var result = that.cryptor.decrypt(echostr); + var result = cryptor.decrypt(echostr); // TODO 检查appId的正确性 res.writeHead(200); res.end(result.message); @@ -372,12 +375,12 @@ var serveEncrypt = function (that, req, res, next, _respond) { } var xml = formatMessage(result.xml); var encryptMessage = xml.Encrypt; - if (signature !== that.cryptor.getSignature(timestamp, nonce, encryptMessage)) { + if (signature !== cryptor.getSignature(timestamp, nonce, encryptMessage)) { res.writeHead(401); res.end('Invalid signature'); return; } - var decrypted = that.cryptor.decrypt(encryptMessage); + var decrypted = cryptor.decrypt(encryptMessage); var messageWrapXml = decrypted.message; if (messageWrapXml === '') { res.writeHead(401);