diff --git a/CHANGE.md b/CHANGE.md
index 0e274ab0..06bd6d89 100644
--- a/CHANGE.md
+++ b/CHANGE.md
@@ -158,4 +158,14 @@
* 2015-01-15
- + **weixin4j-qy**: 新增邀请成员关注接口
\ No newline at end of file
+ + **weixin4j-qy**: 新增邀请成员关注接口
+
+ * 2015-01-22
+
+ + **weixin4j-base**: 升级fastjson到1.2.3
+
+ + **weixin4j-mp**:调整部分实体类(*paypackage)中没有按照骆驼命名规则的属性名
+
+ * 2015-01-31
+
+ + **weixin4j-mp**: 新增数据分析接口
\ No newline at end of file
diff --git a/README.md b/README.md
index f2f05b76..e407a562 100644
--- a/README.md
+++ b/README.md
@@ -71,8 +71,6 @@ netty的代码没有放到maven中心仓库,也没什么意义,因为最终需
接下来
------
-* 公众号数据分析接口
-
* 公众号服务应用
* 企业号第三方应用
diff --git a/pom.xml b/pom.xml
index 0d27eb50..a264755e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -212,7 +212,6 @@
**/*.pem
**/*.p12
**/*.pfx
- **/*.pem
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenHolder.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenHolder.java
index d0a01ed4..77d562ca 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenHolder.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenHolder.java
@@ -24,15 +24,15 @@ import com.thoughtworks.xstream.XStream;
public class FileTokenHolder implements TokenHolder {
private final XStream xstream;
private final String tokenPath;
- private final TokenCreator tokenCretor;
+ private final TokenCreator tokenCreator;
- public FileTokenHolder(TokenCreator tokenCretor) {
- this(ConfigUtil.getValue("token_path"), tokenCretor);
+ public FileTokenHolder(TokenCreator tokenCreator) {
+ this(ConfigUtil.getValue("token_path"), tokenCreator);
}
- public FileTokenHolder(String tokenPath, TokenCreator tokenCretor) {
+ public FileTokenHolder(String tokenPath, TokenCreator tokenCreator) {
this.tokenPath = tokenPath;
- this.tokenCretor = tokenCretor;
+ this.tokenCreator = tokenCreator;
xstream = new XStream();
xstream.ignoreUnknownElements();
xstream.autodetectAnnotations(true);
@@ -43,7 +43,7 @@ public class FileTokenHolder implements TokenHolder {
@Override
public Token getToken() throws WeixinException {
File token_file = new File(String.format("%s/%s.xml", tokenPath,
- tokenCretor.getCacheKey()));
+ tokenCreator.getCacheKey()));
Token token = null;
Calendar ca = Calendar.getInstance();
long now_time = ca.getTimeInMillis();
@@ -57,7 +57,7 @@ public class FileTokenHolder implements TokenHolder {
return token;
}
}
- token = tokenCretor.createToken();
+ token = tokenCreator.createToken();
xstream.toXML(token, new FileOutputStream(token_file));
} catch (IOException e) {
throw new WeixinException(e.getMessage());
diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MapUtil.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MapUtil.java
index 958681d4..2c4964aa 100644
--- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MapUtil.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/util/MapUtil.java
@@ -7,6 +7,7 @@ import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
+import org.apache.commons.lang3.StringUtils;
import org.apache.http.Consts;
import com.alibaba.fastjson.JSON;
@@ -49,6 +50,9 @@ public class MapUtil {
try {
if (encoder && lowerCase) {
for (Map.Entry entry : set) {
+ if (StringUtils.isBlank(entry.getValue())) {
+ continue;
+ }
sb.append(entry.getKey().toLowerCase())
.append("=")
.append(URLEncoder.encode(entry.getValue(),
@@ -56,6 +60,9 @@ public class MapUtil {
}
} else if (encoder) {
for (Map.Entry entry : set) {
+ if (StringUtils.isBlank(entry.getValue())) {
+ continue;
+ }
sb.append(entry.getKey())
.append("=")
.append(URLEncoder.encode(entry.getValue(),
@@ -63,11 +70,17 @@ public class MapUtil {
}
} else if (lowerCase) {
for (Map.Entry entry : set) {
+ if (StringUtils.isBlank(entry.getValue())) {
+ continue;
+ }
sb.append(entry.getKey().toLowerCase()).append("=")
.append(entry.getValue()).append("&");
}
} else {
for (Map.Entry entry : set) {
+ if (StringUtils.isBlank(entry.getValue())) {
+ continue;
+ }
sb.append(entry.getKey()).append("=")
.append(entry.getValue()).append("&");
}
diff --git a/weixin4j-mp/README.md b/weixin4j-mp/README.md
index eaa583ec..bee5e586 100644
--- a/weixin4j-mp/README.md
+++ b/weixin4j-mp/README.md
@@ -164,4 +164,8 @@ weixin4j-mp
+ **weixin4j-mp-api**: 退款相关类拆分为V2跟V3
- + **weixin4j-mp-api**: 新增接口上报接口
\ No newline at end of file
+ + **weixin4j-mp-api**: 新增接口上报接口
+
+ * 2015-01-31
+
+ + **weixin4j-mp-api**: 新增数据分析接口
\ No newline at end of file
diff --git a/weixin4j-mp/weixin4j-mp-api/README.md b/weixin4j-mp/weixin4j-mp-api/README.md
index 9f488b24..cb6ea6ba 100644
--- a/weixin4j-mp/weixin4j-mp-api/README.md
+++ b/weixin4j-mp/weixin4j-mp-api/README.md
@@ -143,4 +143,8 @@ weixin.properties说明
+ 退款相关类拆分为V2跟V3
- + 新增接口上报接口
\ No newline at end of file
+ + 新增接口上报接口
+
+ * 2015-01-31
+
+ + 新增数据分析接口
\ No newline at end of file
diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java
index 237e3130..b1afc759 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/Pay2Api.java
@@ -233,7 +233,6 @@ public class Pay2Api extends PayApi {
}
}
}
- System.err.println(response.getAsString());
return response.getAsObject(new TypeReference() {
});
}
diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties
index 04a497a2..3b36adf2 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties
+++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/weixin.properties
@@ -130,5 +130,5 @@ unifiedorder_uri={mch_base_url}/pay/unifiedorder
nativepay_v2_uri=weixin://wxpay/bizpayurl?sign=%s&appid=%s&productid=%s×tamp=%s&noncestr=%s
nativepay_v3_uri=weixin://wxpay/bizpayurl?sign=%s&appid=%s&mch_id=%s&product_id=%s&time_stamp=%s&nonce_str=%s
-# \u83b7\u53d6\u7528\u6237\u589e\u51cf\u6570\u636e
-datacube_getusersummary_uri={api_base_url}/datacube/getusersummary?access_token=%s
+# \u6570\u636e\u7edf\u8ba1
+datacube_uri={api_base_url}/datacube/%s?access_token=%s
\ No newline at end of file
diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/payment/v3/PayPackageV3.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/payment/v3/PayPackageV3.java
index 086b993a..a948e45d 100644
--- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/payment/v3/PayPackageV3.java
+++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/payment/v3/PayPackageV3.java
@@ -2,8 +2,6 @@ package com.foxinmy.weixin4j.mp.payment.v3;
import java.util.Date;
-import org.apache.commons.lang3.StringUtils;
-
import com.alibaba.fastjson.annotation.JSONField;
import com.foxinmy.weixin4j.model.WeixinMpAccount;
import com.foxinmy.weixin4j.mp.payment.PayPackage;
@@ -120,10 +118,6 @@ public class PayPackageV3 extends PayPackage {
this.sign = sign;
}
- public void setBody(String body) {
- super.setBody(StringUtils.isBlank(body) ? "服务费用" : body);
- }
-
public String getTradeType() {
return tradeType;
}