Skip to content

Commit

Permalink
支持多账号发送到相同URL
Browse files Browse the repository at this point in the history
  • Loading branch information
JacksonTian committed Aug 9, 2017
1 parent 2fa4006 commit 2cacdb9
Showing 1 changed file with 11 additions and 8 deletions.
19 changes: 11 additions & 8 deletions lib/wechat.js
Expand Up @@ -189,22 +189,25 @@ class Wechat {
const echostr = query.echostr;
const method = ctx.method;

const TOKEN = ctx.wx_token || this.token;
const CRYPTOR = ctx.wx_cryptor || this.cryptor;

if (method === 'GET') {
var valid = false;
if (encrypted) {
var signature = query.msg_signature;
valid = signature === this.cryptor.getSignature(timestamp, nonce, echostr);
valid = signature === CRYPTOR.getSignature(timestamp, nonce, echostr);
} else {
// 校验
valid = query.signature === getSignature(timestamp, nonce, this.token);
valid = query.signature === getSignature(timestamp, nonce, TOKEN);
}

if (!valid) {
ctx.status = 401;
ctx.body = 'Invalid signature';
} else {
if (encrypted) {
var decrypted = this.cryptor.decrypt(echostr);
var decrypted = CRYPTOR.decrypt(echostr);
// TODO 检查appId的正确性
ctx.body = decrypted.message;
} else {
Expand All @@ -214,7 +217,7 @@ class Wechat {
} else if (method === 'POST') {
if (!encrypted) {
// 校验
if (query.signature !== getSignature(timestamp, nonce, this.token)) {
if (query.signature !== getSignature(timestamp, nonce, TOKEN)) {
ctx.status = 401;
ctx.body = 'Invalid signature';
return;
Expand All @@ -240,12 +243,12 @@ class Wechat {
var formatted = formatMessage(result.xml);
if (encrypted) {
var encryptMessage = formatted.Encrypt;
if (query.msg_signature !== this.cryptor.getSignature(timestamp, nonce, encryptMessage)) {
if (query.msg_signature !== CRYPTOR.getSignature(timestamp, nonce, encryptMessage)) {
ctx.status = 401;
ctx.body = 'Invalid signature';
return;
}
var decryptedXML = this.cryptor.decrypt(encryptMessage);
var decryptedXML = CRYPTOR.decrypt(encryptMessage);
var messageWrapXml = decryptedXML.message;
if (messageWrapXml === '') {
ctx.status = 401;
Expand Down Expand Up @@ -274,10 +277,10 @@ class Wechat {
ctx.body = replyMessageXml;
} else {
var wrap = {};
wrap.encrypt = this.cryptor.encrypt(replyMessageXml);
wrap.encrypt = CRYPTOR.encrypt(replyMessageXml);
wrap.nonce = parseInt((Math.random() * 100000000000), 10);
wrap.timestamp = new Date().getTime();
wrap.signature = this.cryptor.getSignature(wrap.timestamp, wrap.nonce, wrap.encrypt);
wrap.signature = CRYPTOR.getSignature(wrap.timestamp, wrap.nonce, wrap.encrypt);
ctx.body = encryptWrap(wrap);
}

Expand Down

0 comments on commit 2cacdb9

Please sign in to comment.