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