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);