diff --git a/CHANGE.md b/CHANGE.md index 06bd6d89..b5272f4e 100644 --- a/CHANGE.md +++ b/CHANGE.md @@ -166,6 +166,10 @@ + **weixin4j-mp**:调整部分实体类(*paypackage)中没有按照骆驼命名规则的属性名 - * 2015-01-31 +* 2015-01-31 - + **weixin4j-mp**: 新增数据分析接口 \ No newline at end of file + + **weixin4j-mp**: 新增数据分析接口 + +* 2015-02-05 + + + release 1.2 \ No newline at end of file diff --git a/README.md b/README.md index e407a562..c7143274 100644 --- a/README.md +++ b/README.md @@ -30,20 +30,20 @@ weixin4j 如何获取API ---------- -###1.maven依赖(1.1,2014-12-18 released) +###1.maven依赖(1.2,2015-02-05 released) 微信公众平台API com.foxinmy weixin4j-mp-api - 1.1 + 1.2 微信企业号API com.foxinmy weixin4j-qy-api - 1.1 + 1.2 以上依赖如果出现Missing artifact错误 请尝试在eclipse里这么做 diff --git a/pom.xml b/pom.xml index a264755e..8a1a45ca 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 com.foxinmy weixin4j - 1.2-SNAPSHOT + 1.2 pom weixin4j https://github.com/foxinmy/weixin4j @@ -90,6 +90,13 @@ ${maven.resources.plugin.version} ${project.build.sourceEncoding} + + + pem + pfx + p12 + jks + diff --git a/weixin4j-base/pom.xml b/weixin4j-base/pom.xml index 7f57ad68..cb4e15c4 100644 --- a/weixin4j-base/pom.xml +++ b/weixin4j-base/pom.xml @@ -4,7 +4,7 @@ com.foxinmy weixin4j - 1.2-SNAPSHOT + 1.2 weixin4j-base weixin4j-base diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java index f68f1d20..92f8f78e 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/http/HttpRequest.java @@ -40,7 +40,7 @@ import com.foxinmy.weixin4j.util.MapUtil; import com.thoughtworks.xstream.mapper.CannotResolveClassException; /** - * 调用微信相关接口的HttpRequest,对于其他请求可能并不试用 + * 调用微信相关接口的HttpRequest,对于其他请求可能并不适用 * * @className HttpRequest * @author jy diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/response/HttpWeixinMessage.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/response/HttpWeixinMessage.java index a34f17ab..57906926 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/response/HttpWeixinMessage.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/response/HttpWeixinMessage.java @@ -113,7 +113,7 @@ public class HttpWeixinMessage implements Serializable { @Override public String toString() { - return "HttpMessage [toUserName=" + toUserName + ", encryptContent=" + return "HttpWeixinMessage [toUserName=" + toUserName + ", encryptContent=" + encryptContent + ", encryptType=" + encryptType + ", echoStr=" + echoStr + ", timeStamp=" + timeStamp + ", nonce=" + nonce + ", signature=" + signature + ", token=" diff --git a/weixin4j-mp/pom.xml b/weixin4j-mp/pom.xml index b94227b8..6b8432c3 100644 --- a/weixin4j-mp/pom.xml +++ b/weixin4j-mp/pom.xml @@ -4,7 +4,7 @@ com.foxinmy weixin4j - 1.2-SNAPSHOT + 1.2 weixin4j-mp weixin4j-mp diff --git a/weixin4j-mp/weixin4j-mp-api/README.md b/weixin4j-mp/weixin4j-mp-api/README.md index 751595a1..880b7e32 100644 --- a/weixin4j-mp/weixin4j-mp-api/README.md +++ b/weixin4j-mp/weixin4j-mp-api/README.md @@ -30,6 +30,7 @@ weixin4j-mp-api * Pay2Api `V2支付API` * Pay3Api `V3支付API` + * DataApi `数据统计API` 如何使用 diff --git a/weixin4j-mp/weixin4j-mp-api/pom.xml b/weixin4j-mp/weixin4j-mp-api/pom.xml index 9952839b..ef484c48 100644 --- a/weixin4j-mp/weixin4j-mp-api/pom.xml +++ b/weixin4j-mp/weixin4j-mp-api/pom.xml @@ -4,7 +4,7 @@ com.foxinmy weixin4j-mp - 1.2-SNAPSHOT + 1.2 weixin4j-mp-api weixin4j-mp-api diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java index 237f7686..227ca767 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java +++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java @@ -261,7 +261,7 @@ public class WeixinPayProxy { * @param caFile * 证书文件(后缀为*.p12) * @param idQuery - * ) 商户系统内部的订单号, transaction_id 、 out_trade_no 二选一,如果同时存在优先级: + * 商户系统内部的订单号, transaction_id 、 out_trade_no 二选一,如果同时存在优先级: * transaction_id> out_trade_no * @param outRefundNo * 商户系统内部的退款单号,商 户系统内部唯一,同一退款单号多次请求只退一笔 diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java index b2cb195f..02c4a09c 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java +++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java @@ -9,6 +9,7 @@ import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.JsonResult; import com.foxinmy.weixin4j.model.Button; import com.foxinmy.weixin4j.mp.api.CustomApi; +import com.foxinmy.weixin4j.mp.api.DataApi; import com.foxinmy.weixin4j.mp.api.GroupApi; import com.foxinmy.weixin4j.mp.api.HelperApi; import com.foxinmy.weixin4j.mp.api.MassApi; @@ -29,6 +30,7 @@ import com.foxinmy.weixin4j.mp.model.QRParameter; import com.foxinmy.weixin4j.mp.model.SemQuery; import com.foxinmy.weixin4j.mp.model.SemResult; import com.foxinmy.weixin4j.mp.model.User; +import com.foxinmy.weixin4j.mp.type.DatacubeType; import com.foxinmy.weixin4j.mp.type.IndustryType; import com.foxinmy.weixin4j.mp.type.Lang; import com.foxinmy.weixin4j.msg.model.Base; @@ -61,6 +63,7 @@ public class WeixinProxy { private final QrApi qrApi; private final TmplApi tmplApi; private final HelperApi helperApi; + private final DataApi dataApi; /** * 默认采用文件存放Token信息 @@ -95,6 +98,7 @@ public class WeixinProxy { this.qrApi = new QrApi(tokenHolder); this.tmplApi = new TmplApi(tokenHolder); this.helperApi = new HelperApi(tokenHolder); + this.dataApi = new DataApi(tokenHolder); } /** @@ -921,4 +925,90 @@ public class WeixinProxy { public List getcallbackip() throws WeixinException { return helperApi.getcallbackip(); } + + /** + * 数据统计 + * + * @param datacubeType + * 数据统计类型 + * @param beginDate + * 获取数据的起始日期,begin_date和end_date的差值需小于“最大时间跨度”(比如最大时间跨度为1时, + * begin_date和end_date的差值只能为0,才能小于1),否则会报错 + * @param endDate + * 获取数据的结束日期,end_date允许设置的最大值为昨日 + * @see com.foxinmy.weixin4j.mp.api.DataApi + * @see com.foxinmy.weixin4j.mp.datacube.UserSummary + * @see com.foxinmy.weixin4j.mp.datacube.ArticleSummary + * @see com.foxinmy.weixin4j.mp.datacube.ArticleTotal + * @see com.foxinmy.weixin4j.mp.datacube.ArticleDatacubeShare + * @see com.foxinmy.weixin4j.mp.datacube.UpstreamMsg + * @see com.foxinmy.weixin4j.mp.datacube.UpstreamMsgDist + * @see com.foxinmy.weixin4j.mp.datacube.InterfaceSummary + * @return 统计结果 + * @see 用户分析 + * @see 图文分析 + * @see 消息分析 + * @see 接口分析 + * @throws WeixinException + */ + public List datacube(DatacubeType datacubeType, Date beginDate, + Date endDate) throws WeixinException { + return dataApi.datacube(datacubeType, beginDate, endDate); + } + + /** + * 数据统计 + * + * @param datacubeType + * 统计类型 + * @param beginDate + * 开始日期 + * @param offset + * 增量 表示向前几天 比如 offset=1 则查询 beginDate的后一天之间的数据 + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#datacube(DatacubeType, Date,Date)} + * @see com.foxinmy.weixin4j.mp.api.DataApi + * @throws WeixinException + */ + public List datacube(DatacubeType datacubeType, Date beginDate, + int offset) throws WeixinException { + return dataApi.datacube(datacubeType, beginDate, offset); + } + + /** + * 数据统计 + * + * @param datacubeType + * 统计类型 + * @param offset + * 增量 表示向后几天 比如 offset=1 则查询 beginDate的前一天之间的数据 + * @param endDate + * 截至日期 + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#datacube(DatacubeType, Date,Date)} + * @see com.foxinmy.weixin4j.mp.api.DataApi + * @throws WeixinException + */ + public List datacube(DatacubeType datacubeType, int offset, Date endDate) + throws WeixinException { + return dataApi.datacube(datacubeType, offset, endDate); + } + + /** + * 查询日期跨度为0的统计数据(当天) + * + * @param datacubeType + * 统计类型 + * @param date + * 统计日期 + * @see {@link com.foxinmy.weixin4j.mp.WeixinProxy#datacube(DatacubeType, Date,Date)} + * @see com.foxinmy.weixin4j.mp.api.DataApi + * @throws WeixinException + */ + public List datacube(DatacubeType datacubeType, Date date) + throws WeixinException { + return dataApi.datacube(datacubeType, date); + } } diff --git a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/DataApi.java b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/DataApi.java index 73ede162..a61174d5 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/DataApi.java +++ b/weixin4j-mp/weixin4j-mp-api/src/main/java/com/foxinmy/weixin4j/mp/api/DataApi.java @@ -16,8 +16,8 @@ import com.foxinmy.weixin4j.util.DateUtil; /** * 数据分析API *

- * 1、接口侧的公众号数据的数据库中仅存储了2014年12月1日之后的数据,将查询不到在此之前的日期,即使有查到,也是不可信的脏数据; - * 2、请开发者在调用接口获取数据后,将数据保存在自身数据库中,即加快下次用户的访问速度,也降低了微信侧接口调用的不必要损耗。 + * 1、接口侧的公众号数据的数据库中仅存储了2014年12月1日之后的数据,将查询不到在此之前的日期,即使有查到,也是不可信的脏数据;
+ * 2、请开发者在调用接口获取数据后,将数据保存在自身数据库中,即加快下次用户的访问速度,也降低了微信侧接口调用的不必要损耗。
*

* * @className DataApi @@ -42,7 +42,7 @@ public class DataApi extends MpApi { * 开始日期 * @param offset * 增量 表示向前几天 比如 offset=1 则查询 beginDate的后一天之间的数据 - * @return + * @see {@link com.foxinmy.weixin4j.mp.api.DataApi#datacube(DatacubeType, Date,Date)} * @throws WeixinException */ public List datacube(DatacubeType datacubeType, Date beginDate, @@ -62,7 +62,7 @@ public class DataApi extends MpApi { * 增量 表示向后几天 比如 offset=1 则查询 beginDate的前一天之间的数据 * @param endDate * 截至日期 - * @return + * @see {@link com.foxinmy.weixin4j.mp.api.DataApi#datacube(DatacubeType, Date,Date)} * @throws WeixinException */ public List datacube(DatacubeType datacubeType, int offset, Date endDate) @@ -74,13 +74,13 @@ public class DataApi extends MpApi { } /** - * 查询日期跨度为1的统计数据 + * 查询日期跨度为0的统计数据(当天) * * @param datacubeType * 统计类型 * @param date * 统计日期 - * @return 统计结果 + * @see {@link com.foxinmy.weixin4j.mp.api.DataApi#datacube(DatacubeType, Date,Date)} * @throws WeixinException */ public List datacube(DatacubeType datacubeType, Date date) diff --git a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/PayTest.java b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/PayTest.java index d5818d4c..0ae1481a 100644 --- a/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/PayTest.java +++ b/weixin4j-mp/weixin4j-mp-api/src/test/java/com/foxinmy/weixin4j/mp/test/PayTest.java @@ -31,16 +31,16 @@ public class PayTest { private final static WeixinMpAccount ACCOUNT3; static { ACCOUNT2 = new WeixinMpAccount( - "appId", - "appSecret", - "paySignKey", + "appid", + "appsecret", + "paysignkey", "partnerId", "partnerKey"); PAY2 = new WeixinPayProxy(ACCOUNT2, new FileTokenHolder( new WeixinTokenCreator(ACCOUNT2.getId(), ACCOUNT2.getSecret(), AccountType.MP))); - ACCOUNT3 = new WeixinMpAccount("appId", - "appSecret", - "paySignKey", "mchId"); + ACCOUNT3 = new WeixinMpAccount("appid", + "appsecret", + "paysignkey", "mchId"); PAY3 = new WeixinPayProxy(ACCOUNT3, new FileTokenHolder( new WeixinTokenCreator(ACCOUNT3.getId(), ACCOUNT3.getSecret(), AccountType.MP))); @@ -54,10 +54,10 @@ public class PayTest { @Test public void refundV2() throws WeixinException { File caFile = new File( - "/Users/jy/download/1221928801.pfx"); - IdQuery idQuery = new IdQuery("D15012400026", IdType.TRADENO); - System.err.println(PAY2.refundV2(caFile, idQuery, "R000000001", 2d, 2d, - "1221928801", "111111", null, null, null)); + "/path/xxx.pfx"); + IdQuery idQuery = new IdQuery("D15020300005", IdType.TRADENO); + System.err.println(PAY2.refundV2(caFile, idQuery, "1422925555037", 16d, 16d, + "partnerId", "password", null, null, null)); } @Test @@ -110,7 +110,7 @@ public class PayTest { @Test public void refundV3() throws WeixinException { File caFile = new File( - "/Users/jy/download/10020674.p12"); + "/path/xxx.p12"); IdQuery idQuery = new IdQuery("T00015", IdType.TRADENO); com.foxinmy.weixin4j.mp.payment.v3.RefundResult result = PAY3.refundV3( caFile, idQuery, "R0002", 1d, 1d, "10020674"); diff --git a/weixin4j-mp/weixin4j-mp-server/pom.xml b/weixin4j-mp/weixin4j-mp-server/pom.xml index f4f4c897..e9f3b75d 100644 --- a/weixin4j-mp/weixin4j-mp-server/pom.xml +++ b/weixin4j-mp/weixin4j-mp-server/pom.xml @@ -4,7 +4,7 @@ com.foxinmy weixin4j-mp - 1.2-SNAPSHOT + 1.2 weixin4j-mp-server weixin4j-mp-server diff --git a/weixin4j-mp/weixin4j-mp-server/src/main/resources/logback.xml b/weixin4j-mp/weixin4j-mp-server/src/main/resources/logback.xml index 819f8adc..415a24c8 100644 --- a/weixin4j-mp/weixin4j-mp-server/src/main/resources/logback.xml +++ b/weixin4j-mp/weixin4j-mp-server/src/main/resources/logback.xml @@ -12,6 +12,7 @@ + UTF-8 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n @@ -31,6 +32,7 @@ + UTF-8 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n diff --git a/weixin4j-qy/pom.xml b/weixin4j-qy/pom.xml index 93018719..4053cae5 100644 --- a/weixin4j-qy/pom.xml +++ b/weixin4j-qy/pom.xml @@ -4,7 +4,7 @@ com.foxinmy weixin4j - 1.2-SNAPSHOT + 1.2 weixin4j-qy weixin4j-qy diff --git a/weixin4j-qy/weixin4j-qy-api/pom.xml b/weixin4j-qy/weixin4j-qy-api/pom.xml index 63d52783..9724f39a 100644 --- a/weixin4j-qy/weixin4j-qy-api/pom.xml +++ b/weixin4j-qy/weixin4j-qy-api/pom.xml @@ -4,7 +4,7 @@ com.foxinmy weixin4j-qy - 1.2-SNAPSHOT + 1.2 weixin4j-qy-api weixin4j-qy-api diff --git a/weixin4j-qy/weixin4j-qy-server/pom.xml b/weixin4j-qy/weixin4j-qy-server/pom.xml index c276e976..d3123407 100644 --- a/weixin4j-qy/weixin4j-qy-server/pom.xml +++ b/weixin4j-qy/weixin4j-qy-server/pom.xml @@ -4,7 +4,7 @@ com.foxinmy weixin4j-qy - 1.2-SNAPSHOT + 1.2 weixin4j-qy-server weixin4j-qy-server diff --git a/weixin4j-qy/weixin4j-qy-server/src/main/java/com/foxinmy/weixin4j/qy/action/event/EnterAgentAction.java b/weixin4j-qy/weixin4j-qy-server/src/main/java/com/foxinmy/weixin4j/qy/action/event/EnterAgentAction.java index dd23c736..94419e11 100644 --- a/weixin4j-qy/weixin4j-qy-server/src/main/java/com/foxinmy/weixin4j/qy/action/event/EnterAgentAction.java +++ b/weixin4j-qy/weixin4j-qy-server/src/main/java/com/foxinmy/weixin4j/qy/action/event/EnterAgentAction.java @@ -9,7 +9,7 @@ import com.foxinmy.weixin4j.type.MessageType; /** * 用户进入应用的事件推送 * - * @className + * @className EnterAgentAction * @author jy * @date 2014年12月28日 * @since JDK 1.7 diff --git a/weixin4j-qy/weixin4j-qy-server/src/main/resources/logback.xml b/weixin4j-qy/weixin4j-qy-server/src/main/resources/logback.xml index 79f0cb3b..38b9858c 100644 --- a/weixin4j-qy/weixin4j-qy-server/src/main/resources/logback.xml +++ b/weixin4j-qy/weixin4j-qy-server/src/main/resources/logback.xml @@ -12,6 +12,7 @@ + UTF-8 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{20} - %msg%n @@ -31,6 +32,7 @@ + UTF-8 %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n