diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/WeixinAccount.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/WeixinAccount.java
index 9ba0cb1c..1d563b08 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/WeixinAccount.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/WeixinAccount.java
@@ -41,14 +41,14 @@ public class WeixinAccount implements Serializable {
return id;
}
- public void setId(String id) {
- this.id = id;
- }
-
public String getSecret() {
return secret;
}
+ public void setId(String id) {
+ this.id = id;
+ }
+
public void setSecret(String secret) {
this.secret = secret;
}
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MediaType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MediaType.java
index 3c927496..3cbf15e8 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MediaType.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MediaType.java
@@ -12,7 +12,7 @@ import com.foxinmy.weixin4j.http.ContentType;
*
* 企业号上传限制: 图片(image):1MB,支持JPG格式
* 语音(voice):2MB,播放长度不超过60s,支持AMR格式 视频(video):10MB,支持MP4格式
- * 普通文件(file):10MB
+ * 普通文件(file):20MB
*
*
* 媒体文件在后台保存时间为3天,即3天后media_id失效
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MessageType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MessageType.java
deleted file mode 100644
index c671db22..00000000
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/MessageType.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package com.foxinmy.weixin4j.type;
-
-
-/**
- *
- * 消息类型
- *
- * @author jy.hu
- *
- */
-public enum MessageType {
- /**
- * 文字消息
- *
- * @see com.foxinmy.weixin4j.msg.TextMessage
- */
- text,
- /**
- * 图片消息
- *
- * @see com.foxinmy.weixin4j.msg.ImageMessage
- */
- image,
- /**
- * 语音消息
- *
- * @see com.foxinmy.weixin4j.msg.VoiceMessage
- */
- voice,
- /**
- * 视频消息
- *
- * @see com.foxinmy.weixin4j.msg.VideoMessage
- */
- video,
- /**
- * 小视频消息
- *
- * @see com.foxinmy.weixin4j.msg.VideoMessage
- */
- shortvideo,
- /**
- * 位置消息
- *
- * @see com.foxinmy.weixin4j.msg.LocationMessage
- */
- location,
- /**
- * 链接消息
- *
- * @see com.foxinmy.weixin4j.msg.LinkMessage
- */
- link,
- /**
- * 事件消息
- *
- * @see com.foxinmy.weixin4j.msg.event.EventMessage
- */
- event;
-}
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/datacube/UpstreamMsg.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/datacube/UpstreamMsg.java
index 1bd07628..c7e03ec4 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/datacube/UpstreamMsg.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/datacube/UpstreamMsg.java
@@ -4,7 +4,6 @@ import java.io.Serializable;
import java.util.Date;
import com.alibaba.fastjson.annotation.JSONField;
-import com.foxinmy.weixin4j.type.MessageType;
/**
* 数据统计:消息发送概况数据
@@ -61,19 +60,23 @@ public class UpstreamMsg implements Serializable {
this.refHour = refHour;
}
- public MessageType getMsgType() {
- // 1代表文字 2代表图片 3代表语音 4代表视频 6代表第三方应用消息(链接消息)
+ /**
+ * 1代表文字 2代表图片 3代表语音 4代表视频 6代表第三方应用消息(链接消息)
+ *
+ * @return
+ */
+ public String getMsgType() {
switch (msgType) {
case 1:
- return MessageType.text;
+ return "text";
case 2:
- return MessageType.image;
+ return "image";
case 3:
- return MessageType.voice;
+ return "voice";
case 4:
- return MessageType.video;
+ return "video";
case 6:
- return MessageType.link;
+ return "link";
default:
return null;
}
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
index b71042c2..dd33f0cf 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinProxy.java
@@ -487,7 +487,7 @@ public class WeixinProxy {
/**
* 获取部门成员
*
- * @param partyId
+ * @param departId
* 部门ID 必须
* @param fetchChild
* 是否递归获取子部门下面的成员 非必须
@@ -502,9 +502,9 @@ public class WeixinProxy {
* @return 成员列表
* @throws WeixinException
*/
- public List listUser(int partyId, boolean fetchChild,
+ public List listUser(int departId, boolean fetchChild,
UserStatus userStatus, boolean findDetail) throws WeixinException {
- return userApi.listUser(partyId, fetchChild, userStatus, findDetail);
+ return userApi.listUser(departId, fetchChild, userStatus, findDetail);
}
/**
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/UserApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/UserApi.java
index ae2e0139..9c6fd3cd 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/UserApi.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/UserApi.java
@@ -221,7 +221,7 @@ public class UserApi extends QyApi {
/**
* 获取部门成员
*
- * @param departId
+ * @param partyId
* 部门ID 必须
* @param fetchChild
* 是否递归获取子部门下面的成员 非必须
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/OUserInfo.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/OUserInfo.java
index ae52c97e..95069c0f 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/OUserInfo.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/OUserInfo.java
@@ -32,7 +32,7 @@ public class OUserInfo implements Serializable {
* 登陆管理员信息
*/
@JSONField(name = "user_info")
- private User userInfo;
+ private User adminInfo;
/**
* 授权方企业信息
*/
@@ -65,12 +65,12 @@ public class OUserInfo implements Serializable {
this.isInnerAdmin = isInnerAdmin;
}
- public User getUserInfo() {
- return userInfo;
+ public User getAdminInfo() {
+ return adminInfo;
}
- public void setUserInfo(User userInfo) {
- this.userInfo = userInfo;
+ public void setAdminInfo(User adminInfo) {
+ this.adminInfo = adminInfo;
}
public Corpinfo getCorpinfo() {
@@ -100,7 +100,7 @@ public class OUserInfo implements Serializable {
@Override
public String toString() {
return "OUserInfo [isSysAdmin=" + isSysAdmin + ", isInnerAdmin="
- + isInnerAdmin + ", userInfo=" + userInfo + ", corpinfo="
+ + isInnerAdmin + ", adminInfo=" + adminInfo + ", corpinfo="
+ corpinfo + ", agentInfo=" + agentInfo + ", authInfo="
+ authInfo + "]";
}
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/WeixinQyAccount.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/WeixinQyAccount.java
index 3422ec21..420a378b 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/WeixinQyAccount.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/model/WeixinQyAccount.java
@@ -14,11 +14,13 @@ import com.foxinmy.weixin4j.model.WeixinAccount;
* >企业号设置
*/
public class WeixinQyAccount extends WeixinAccount {
+
private static final long serialVersionUID = 3689999353867189585L;
- public WeixinQyAccount() {
+ public WeixinQyAccount(){
+
}
-
+
/**
*
* @param corpid
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java
index 20dcde60..35999d44 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/dispatcher/WeixinMessageDispatcher.java
@@ -178,9 +178,16 @@ public class WeixinMessageDispatcher {
protected void noHandlerFound(ChannelHandlerContext context,
WeixinRequest request, Object message) {
if (isDebug) {
- context.writeAndFlush(
- new TextResponse(request.getOriginalContent()))
- .addListener(ChannelFutureListener.CLOSE);
+ if (message instanceof String) {
+ context.writeAndFlush(
+ new TextResponse(request.getOriginalContent()
+ .replaceAll("\\!\\[CDATA\\[", "")
+ .replaceAll("\\]\\]", ""))).addListener(
+ ChannelFutureListener.CLOSE);
+ } else {
+ context.writeAndFlush(new TextResponse(message.toString()))
+ .addListener(ChannelFutureListener.CLOSE);
+ }
} else {
context.writeAndFlush(
HttpUtil.createHttpResponse(null, NOT_FOUND, null))
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinResponseEncoder.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinResponseEncoder.java
index 23a15d8f..bb19a8c3 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinResponseEncoder.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/socket/WeixinResponseEncoder.java
@@ -17,7 +17,6 @@ import com.foxinmy.weixin4j.util.Consts;
import com.foxinmy.weixin4j.util.HttpUtil;
import com.foxinmy.weixin4j.util.MessageUtil;
import com.foxinmy.weixin4j.util.RandomUtil;
-import com.foxinmy.weixin4j.util.StringUtil;
/**
* 微信回复编码类
@@ -53,8 +52,7 @@ public class WeixinResponseEncoder extends
messageTransfer.getFromUserName()));
content.append(String.format(
"",
- StringUtil.isBlank(aesToken.getWeixinId()) ? messageTransfer
- .getToUserName() : aesToken.getWeixinId()));
+ messageTransfer.getToUserName()));
content.append(String.format(
"",
System.currentTimeMillis() / 1000l));
@@ -64,8 +62,8 @@ public class WeixinResponseEncoder extends
content.append("");
if (encryptType == EncryptType.AES) {
String nonce = RandomUtil.generateString(32);
- String timestamp = String
- .valueOf(System.currentTimeMillis() / 1000l);
+ String timestamp = Long
+ .toString(System.currentTimeMillis() / 1000l);
String encrtypt = MessageUtil.aesEncrypt(
aesToken.getWeixinId(), aesToken.getAesKey(),
content.toString());
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/startup/WeixinServerBootstrap.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/startup/WeixinServerBootstrap.java
index 7d2bb906..cdfcf03f 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/startup/WeixinServerBootstrap.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/startup/WeixinServerBootstrap.java
@@ -77,23 +77,24 @@ public final class WeixinServerBootstrap {
private final Map aesTokenMap;
/**
+ *
* 明文模式
*
- * @param openid
- * 微信号(原始ID)
+ * @param weixinid
+ * 微信号(原始ID)或者appid
* @param token
* 开发者token
*
*/
- public WeixinServerBootstrap(String openid, String token) {
- this(openid, token, null);
+ public WeixinServerBootstrap(String weixinid, String token) {
+ this(weixinid, token, null);
}
/**
* 兼容模式 & 密文模式
*
* @param appid
- * 公众号的唯一ID
+ * 公众号的appid
* @param token
* 开发者填写的token
* @param aesKey
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/AesToken.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/AesToken.java
index f8954d5e..6ef7bdce 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/AesToken.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/AesToken.java
@@ -67,4 +67,10 @@ public class AesToken implements Serializable, Cloneable {
public String getAesKey() {
return aesKey;
}
+
+ @Override
+ public String toString() {
+ return "AesToken [weixinId=" + weixinId + ", token=" + token
+ + ", aesKey=" + aesKey + "]";
+ }
}
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/Base64.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/Base64.java
index ab1c0de7..5fed65de 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/Base64.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/Base64.java
@@ -39,6 +39,6 @@ public final class Base64 {
public static String encodeBase64String(final byte[] bytes) {
byte[] data = encodeBase64(bytes);
- return HexUtil.encodeHexString(data);
+ return StringUtil.newStringUtf8(data).trim();
}
}
diff --git a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java
index a9c8d8e6..98f8ad16 100644
--- a/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java
+++ b/weixin4j-server/src/main/java/com/foxinmy/weixin4j/util/MessageUtil.java
@@ -33,7 +33,7 @@ public final class MessageUtil {
*/
public static String signature(String... para) {
Arrays.sort(para);
- StringBuilder sb = new StringBuilder();
+ StringBuffer sb = new StringBuffer();
for (String str : para) {
sb.append(str);
}
@@ -55,7 +55,7 @@ public final class MessageUtil {
public static String aesEncrypt(String appId, String encodingAesKey,
String xmlContent) throws WeixinException {
byte[] randomBytes = StringUtil.getBytesUtf8(RandomUtil
- .generateString(16));
+ .generateString(32));
byte[] xmlBytes = StringUtil.getBytesUtf8(xmlContent);
int xmlLength = xmlBytes.length;
byte[] orderBytes = new byte[4];
@@ -64,6 +64,7 @@ public final class MessageUtil {
orderBytes[1] = (byte) (xmlLength >> 16 & 0xFF);
orderBytes[0] = (byte) (xmlLength >> 24 & 0xFF);
byte[] appidBytes = StringUtil.getBytesUtf8(appId);
+
int byteLength = randomBytes.length + xmlLength + orderBytes.length
+ appidBytes.length;
// ... + pad: 使用自定义的填充方式对明文进行补位填充