修正验证签名参数错误
This commit is contained in:
parent
c358e366ee
commit
f0ecba5f9b
@ -1,140 +0,0 @@
|
|||||||
package com.foxinmy.weixin4j.qy.model;
|
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
|
|
||||||
import com.alibaba.fastjson.annotation.JSONField;
|
|
||||||
import com.foxinmy.weixin4j.qy.type.CorpType;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 授权方企业号信息
|
|
||||||
*
|
|
||||||
* @className CorpInfo
|
|
||||||
* @author jy
|
|
||||||
* @date 2015年6月12日
|
|
||||||
* @since JDK 1.7
|
|
||||||
* @see
|
|
||||||
*/
|
|
||||||
public class CorpInfo implements Serializable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1251033124778972419L;
|
|
||||||
/**
|
|
||||||
* 授权方企业号id
|
|
||||||
*/
|
|
||||||
@JSONField(name = "corpid")
|
|
||||||
private String corpId;
|
|
||||||
/**
|
|
||||||
* 授权方企业号名称
|
|
||||||
*/
|
|
||||||
@JSONField(name = "corp_name")
|
|
||||||
private String corpName;
|
|
||||||
/**
|
|
||||||
* 企业方形头像
|
|
||||||
*/
|
|
||||||
@JSONField(name = "corp_square_logo_url")
|
|
||||||
private String squareLogoUrl;
|
|
||||||
/**
|
|
||||||
* 企业圆形头像
|
|
||||||
*/
|
|
||||||
@JSONField(name = "corp_round_logo_url")
|
|
||||||
private String roundLogoUrl;
|
|
||||||
/**
|
|
||||||
* 授权方企业号类型
|
|
||||||
*/
|
|
||||||
@JSONField(name = "corp_type")
|
|
||||||
private String corpType;
|
|
||||||
/**
|
|
||||||
* 授权方企业号用户规模
|
|
||||||
*/
|
|
||||||
@JSONField(name = "corp_user_max")
|
|
||||||
private Integer userMax;
|
|
||||||
/**
|
|
||||||
* 授权方企业号应用规模
|
|
||||||
*/
|
|
||||||
@JSONField(name = "corp_agent_max")
|
|
||||||
private Integer agentMax;
|
|
||||||
/**
|
|
||||||
* 授权方企业号二维码
|
|
||||||
*/
|
|
||||||
@JSONField(name = "corp_wxqrcode")
|
|
||||||
private String wxQrCode;
|
|
||||||
|
|
||||||
public String getCorpId() {
|
|
||||||
return corpId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCorpType() {
|
|
||||||
return corpType;
|
|
||||||
}
|
|
||||||
|
|
||||||
@JSONField(serialize = false)
|
|
||||||
public CorpType getFormatCorpType() {
|
|
||||||
return corpType != null ? CorpType.valueOf(corpType) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCorpName() {
|
|
||||||
return corpName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSquareLogoUrl() {
|
|
||||||
return squareLogoUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getRoundLogoUrl() {
|
|
||||||
return roundLogoUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getUserMax() {
|
|
||||||
return userMax;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Integer getAgentMax() {
|
|
||||||
return agentMax;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getWxQrCode() {
|
|
||||||
return wxQrCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
// ---------- setter 应该全部去掉
|
|
||||||
|
|
||||||
public void setCorpId(String corpId) {
|
|
||||||
this.corpId = corpId;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCorpName(String corpName) {
|
|
||||||
this.corpName = corpName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setSquareLogoUrl(String squareLogoUrl) {
|
|
||||||
this.squareLogoUrl = squareLogoUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRoundLogoUrl(String roundLogoUrl) {
|
|
||||||
this.roundLogoUrl = roundLogoUrl;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setCorpType(String corpType) {
|
|
||||||
this.corpType = corpType;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setUserMax(Integer userMax) {
|
|
||||||
this.userMax = userMax;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setAgentMax(Integer agentMax) {
|
|
||||||
this.agentMax = agentMax;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWxQrCode(String wxQrCode) {
|
|
||||||
this.wxQrCode = wxQrCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return "CorpInfo [corpType=" + corpId + ", corpName=" + corpName
|
|
||||||
+ ", squareLogoUrl=" + squareLogoUrl + ", roundLogoUrl="
|
|
||||||
+ roundLogoUrl + ", corpType=" + corpType + ", userMax="
|
|
||||||
+ userMax + ", agentMax=" + agentMax + ", wxQrCode=" + wxQrCode
|
|
||||||
+ "]";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -56,18 +56,34 @@ public class WeixinRequestHandler extends
|
|||||||
protected void channelRead0(ChannelHandlerContext ctx, WeixinRequest request)
|
protected void channelRead0(ChannelHandlerContext ctx, WeixinRequest request)
|
||||||
throws WeixinException {
|
throws WeixinException {
|
||||||
final AesToken aesToken = request.getAesToken();
|
final AesToken aesToken = request.getAesToken();
|
||||||
if (aesToken == null) {
|
if (aesToken == null
|
||||||
|
|| (StringUtil.isBlank(request.getSignature()) && StringUtil
|
||||||
|
.isBlank(request.getMsgSignature()))) {
|
||||||
ctx.writeAndFlush(HttpUtil.createHttpResponse(BAD_REQUEST))
|
ctx.writeAndFlush(HttpUtil.createHttpResponse(BAD_REQUEST))
|
||||||
.addListener(ChannelFutureListener.CLOSE);
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 公众平台:无论Get,Post都带signature参数,当开启aes模式时带msg_signature参数
|
||||||
|
* 企业号:无论Get,Post都带msg_signature参数
|
||||||
|
**/
|
||||||
if (request.getMethod().equals(HttpMethod.GET.name())) {
|
if (request.getMethod().equals(HttpMethod.GET.name())) {
|
||||||
if (MessageUtil.signature(aesToken.getToken(),
|
if (!StringUtil.isBlank(request.getSignature())
|
||||||
|
&& MessageUtil.signature(aesToken.getToken(),
|
||||||
request.getTimeStamp(), request.getNonce()).equals(
|
request.getTimeStamp(), request.getNonce()).equals(
|
||||||
request.getSignature())) {
|
request.getSignature())) {
|
||||||
ctx.write(new SingleResponse(request.getEchoStr()));
|
ctx.write(new SingleResponse(request.getEchoStr()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (!StringUtil.isBlank(request.getMsgSignature())
|
||||||
|
&& MessageUtil.signature(aesToken.getToken(),
|
||||||
|
request.getTimeStamp(), request.getNonce(),
|
||||||
|
request.getEchoStr()).equals(
|
||||||
|
request.getMsgSignature())) {
|
||||||
|
ctx.write(new SingleResponse(MessageUtil.aesDecrypt(null,
|
||||||
|
aesToken.getAesKey(), request.getEchoStr())));
|
||||||
|
return;
|
||||||
|
}
|
||||||
ctx.writeAndFlush(HttpUtil.createHttpResponse(FORBIDDEN))
|
ctx.writeAndFlush(HttpUtil.createHttpResponse(FORBIDDEN))
|
||||||
.addListener(ChannelFutureListener.CLOSE);
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
return;
|
return;
|
||||||
@ -80,8 +96,8 @@ public class WeixinRequestHandler extends
|
|||||||
.addListener(ChannelFutureListener.CLOSE);
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (request.getEncryptType() == EncryptType.AES) {
|
if (request.getEncryptType() == EncryptType.AES
|
||||||
if (!MessageUtil.signature(aesToken.getToken(),
|
&& !MessageUtil.signature(aesToken.getToken(),
|
||||||
request.getTimeStamp(), request.getNonce(),
|
request.getTimeStamp(), request.getNonce(),
|
||||||
request.getEncryptContent()).equals(
|
request.getEncryptContent()).equals(
|
||||||
request.getMsgSignature())) {
|
request.getMsgSignature())) {
|
||||||
@ -89,7 +105,6 @@ public class WeixinRequestHandler extends
|
|||||||
.addListener(ChannelFutureListener.CLOSE);
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
ctx.writeAndFlush(HttpUtil.createHttpResponse(METHOD_NOT_ALLOWED))
|
ctx.writeAndFlush(HttpUtil.createHttpResponse(METHOD_NOT_ALLOWED))
|
||||||
.addListener(ChannelFutureListener.CLOSE);
|
.addListener(ChannelFutureListener.CLOSE);
|
||||||
|
|||||||
@ -159,7 +159,7 @@ public final class MessageUtil {
|
|||||||
throw new WeixinException("-40008", "xml内容不合法:" + e.getMessage());
|
throw new WeixinException("-40008", "xml内容不合法:" + e.getMessage());
|
||||||
}
|
}
|
||||||
// 校验appId是否一致
|
// 校验appId是否一致
|
||||||
if (!fromAppId.trim().equals(appId)) {
|
if (appId != null && !fromAppId.trim().equals(appId)) {
|
||||||
throw new WeixinException("-40005", "校验AppID失败,expect " + appId
|
throw new WeixinException("-40005", "校验AppID失败,expect " + appId
|
||||||
+ ",but actual is " + fromAppId);
|
+ ",but actual is " + fromAppId);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user