u
This commit is contained in:
parent
9926655fa9
commit
cad985ad62
@ -44,7 +44,7 @@ public class WeixinMessageDecoder extends
|
||||
@Override
|
||||
protected void decode(ChannelHandlerContext ctx, FullHttpRequest req,
|
||||
List<Object> out) throws WeixinException {
|
||||
String content = req.content().toString(Consts.UTF_8);
|
||||
String messageContent = req.content().toString(Consts.UTF_8);
|
||||
QueryStringDecoder queryDecoder = new QueryStringDecoder(req.getUri(),
|
||||
true);
|
||||
String methodName = req.getMethod().name();
|
||||
@ -67,28 +67,28 @@ public class WeixinMessageDecoder extends
|
||||
String weixinId = parameters.containsKey("weixin_id") ? parameters.get(
|
||||
"weixin_id").get(0) : null;
|
||||
AesToken aesToken = aesTokenMap.get(weixinId);
|
||||
String originalContent = content;
|
||||
String encryptContent = null;
|
||||
if (!StringUtil.isBlank(content) && encryptType == EncryptType.AES) {
|
||||
if (!StringUtil.isBlank(messageContent)
|
||||
&& encryptType == EncryptType.AES) {
|
||||
if (StringUtil.isBlank(aesToken.getAesKey())) {
|
||||
throw new WeixinException(
|
||||
"AESEncodingKey not be null in AES mode");
|
||||
}
|
||||
EncryptMessageHandler encrypt = EncryptMessageHandler
|
||||
.parser(content);
|
||||
encryptContent = encrypt.getEncryptContent();
|
||||
EncryptMessageHandler encryptHandler = EncryptMessageHandler
|
||||
.parser(messageContent);
|
||||
encryptContent = encryptHandler.getEncryptContent();
|
||||
/**
|
||||
* 企业号第三方套件 ╮(╯_╰)╭
|
||||
*/
|
||||
if (aesToken.getWeixinId().startsWith("tj")) {
|
||||
aesToken = new AesToken(encrypt.getToUserName(),
|
||||
aesToken = new AesToken(encryptHandler.getToUserName(),
|
||||
aesToken.getToken(), aesToken.getAesKey());
|
||||
}
|
||||
originalContent = MessageUtil.aesDecrypt(aesToken.getWeixinId(),
|
||||
messageContent = MessageUtil.aesDecrypt(aesToken.getWeixinId(),
|
||||
aesToken.getAesKey(), encryptContent);
|
||||
}
|
||||
out.add(new WeixinRequest(methodName, encryptType, echoStr, timeStamp,
|
||||
nonce, signature, msgSignature, originalContent,
|
||||
encryptContent, aesToken, parameters));
|
||||
nonce, signature, msgSignature, messageContent, encryptContent,
|
||||
aesToken, parameters));
|
||||
}
|
||||
}
|
||||
|
||||
@ -110,9 +110,8 @@ public class WeixinRequestHandler extends
|
||||
.addListener(ChannelFutureListener.CLOSE);
|
||||
return;
|
||||
}
|
||||
WeixinMessageTransfer messageTransfer = MessageTransferHandler.parser(
|
||||
request.getOriginalContent(), aesToken,
|
||||
request.getEncryptType());
|
||||
WeixinMessageTransfer messageTransfer = MessageTransferHandler
|
||||
.parser(request);
|
||||
ctx.channel().attr(Consts.MESSAGE_TRANSFER_KEY).set(messageTransfer);
|
||||
messageDispatcher.doDispatch(ctx, request, messageTransfer);
|
||||
}
|
||||
|
||||
@ -11,10 +11,9 @@ import org.xml.sax.XMLReader;
|
||||
import org.xml.sax.helpers.DefaultHandler;
|
||||
import org.xml.sax.helpers.XMLReaderFactory;
|
||||
|
||||
import com.foxinmy.weixin4j.request.WeixinRequest;
|
||||
import com.foxinmy.weixin4j.socket.WeixinMessageTransfer;
|
||||
import com.foxinmy.weixin4j.type.AccountType;
|
||||
import com.foxinmy.weixin4j.type.EncryptType;
|
||||
import com.foxinmy.weixin4j.util.AesToken;
|
||||
import com.foxinmy.weixin4j.util.Consts;
|
||||
import com.foxinmy.weixin4j.util.StringUtil;
|
||||
|
||||
@ -83,21 +82,21 @@ public class MessageTransferHandler extends DefaultHandler {
|
||||
|
||||
private static MessageTransferHandler global = new MessageTransferHandler();
|
||||
|
||||
public static WeixinMessageTransfer parser(String xmlContent,
|
||||
AesToken aesToken, EncryptType encryptType) throws RuntimeException {
|
||||
public static WeixinMessageTransfer parser(WeixinRequest request)
|
||||
throws RuntimeException {
|
||||
try {
|
||||
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
|
||||
xmlReader.setContentHandler(global);
|
||||
xmlReader.parse(new InputSource(new ByteArrayInputStream(xmlContent
|
||||
.getBytes(Consts.UTF_8))));
|
||||
xmlReader.parse(new InputSource(new ByteArrayInputStream(request
|
||||
.getOriginalContent().getBytes(Consts.UTF_8))));
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
} catch (SAXException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
return new WeixinMessageTransfer(aesToken, encryptType,
|
||||
global.toUserName, global.fromUserName,
|
||||
global.getAccountType(), global.msgType, global.eventType,
|
||||
global.nodeNames);
|
||||
return new WeixinMessageTransfer(request.getAesToken(),
|
||||
request.getEncryptType(), global.toUserName,
|
||||
global.fromUserName, global.getAccountType(), global.msgType,
|
||||
global.eventType, global.nodeNames);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user