diff --git a/CHANGE.md b/CHANGE.md
index d010d2e0..7a913147 100644
--- a/CHANGE.md
+++ b/CHANGE.md
@@ -581,6 +581,8 @@
+ weixin4j-mp:私有化WeixinProxy(TokenHolder)构造器
+ + weixin4j-mp:调整WeixinTicketCreator类
+
+ weixin4j-qy:WeixinProxy新增获取corpid(getCorpId)方法
+ weixin4j-qy:WeixinProxy新增获取jsticket(getJSTicketHolder)方法
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/type/TicketType.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/TicketType.java
similarity index 50%
rename from weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/type/TicketType.java
rename to weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/TicketType.java
index 8b6a1cac..a8ccf291 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/type/TicketType.java
+++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/type/TicketType.java
@@ -1,7 +1,7 @@
-package com.foxinmy.weixin4j.qy.type;
+package com.foxinmy.weixin4j.type;
/**
- * 票据类型
+ * 票据类型(一般用于JSSDK
*
* @className TicketType
* @author jy
@@ -11,11 +11,15 @@ package com.foxinmy.weixin4j.qy.type;
*/
public enum TicketType {
/**
- * jsticket
+ * jsapi
*/
- jsticket,
+ jsapi,
/**
- * 选取联系人
+ * 公众平台-卡券
+ */
+ wx_card,
+ /**
+ * 企业号-选取联系人
*/
contact;
}
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
index 66191aed..5dd06c25 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java
@@ -42,7 +42,7 @@ import com.foxinmy.weixin4j.mp.model.QRResult;
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.token.WeixinJSTicketCreator;
+import com.foxinmy.weixin4j.mp.token.WeixinTicketCreator;
import com.foxinmy.weixin4j.mp.token.WeixinTokenCreator;
import com.foxinmy.weixin4j.mp.type.DatacubeType;
import com.foxinmy.weixin4j.mp.type.IndustryType;
@@ -54,6 +54,7 @@ import com.foxinmy.weixin4j.tuple.MpArticle;
import com.foxinmy.weixin4j.tuple.MpVideo;
import com.foxinmy.weixin4j.tuple.Tuple;
import com.foxinmy.weixin4j.type.MediaType;
+import com.foxinmy.weixin4j.type.TicketType;
/**
* 微信公众平台接口实现
@@ -160,13 +161,16 @@ public class WeixinProxy {
}
/**
- * 获取JSSDK JSTicket的tokenHolder
+ * 获取JSSDK Ticket的tokenHolder
*
+ * @param ticketType
+ * 票据类型
* @return
*/
- public TokenHolder getJSTicketHolder() {
- return new TokenHolder(new WeixinJSTicketCreator(this.appId,
- this.tokenHolder), this.tokenHolder.getTokenStorager());
+ public TokenHolder getTicketHolder(TicketType ticketType) {
+ return new TokenHolder(new WeixinTicketCreator(this.appId,
+ ticketType, this.tokenHolder),
+ this.tokenHolder.getTokenStorager());
}
/**
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinJSTicketCreator.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTicketCreator.java
similarity index 73%
rename from weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinJSTicketCreator.java
rename to weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTicketCreator.java
index 1603bf53..b42761e7 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinJSTicketCreator.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTicketCreator.java
@@ -8,9 +8,10 @@ import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.mp.type.URLConsts;
import com.foxinmy.weixin4j.token.TokenCreator;
import com.foxinmy.weixin4j.token.TokenHolder;
+import com.foxinmy.weixin4j.type.TicketType;
/**
- * 微信公众平台JSTICKET创建者
+ * 微信公众平台TICKET创建(包括jsticket、其它JSSDK所需的ticket的创建
*
* @className WeixinJSTicketCreator
* @author jy
@@ -20,9 +21,10 @@ import com.foxinmy.weixin4j.token.TokenHolder;
* href="http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95">JS
* TICKET
*/
-public class WeixinJSTicketCreator implements TokenCreator {
+public class WeixinTicketCreator implements TokenCreator {
private final String appid;
+ private final TicketType ticketType;
private final TokenHolder weixinTokenHolder;
private final WeixinRequestExecutor weixinExecutor;
@@ -31,25 +33,29 @@ public class WeixinJSTicketCreator implements TokenCreator {
*
* @param appid
* 公众号的appid
+ * @param ticketType
+ * 票据类型
* @param weixinTokenHolder
* 公众平台的access_token
*/
- public WeixinJSTicketCreator(String appid, TokenHolder weixinTokenHolder) {
+ public WeixinTicketCreator(String appid, TicketType ticketType,
+ TokenHolder weixinTokenHolder) {
this.appid = appid;
+ this.ticketType = ticketType;
this.weixinTokenHolder = weixinTokenHolder;
this.weixinExecutor = new WeixinRequestExecutor();
}
@Override
public String getCacheKey() {
- return String.format("wx_mp_jsticket_%s", appid);
+ return String.format("wx_mp_ticket_%s_%s", appid, ticketType.name());
}
@Override
public Token createToken() throws WeixinException {
WeixinResponse response = weixinExecutor.get(String.format(
- URLConsts.JS_TICKET_URL, weixinTokenHolder.getToken()
- .getAccessToken()));
+ URLConsts.TICKET_URL, weixinTokenHolder.getToken()
+ .getAccessToken(), ticketType.name()));
JSONObject result = response.getAsJson();
Token token = new Token(result.getString("ticket"));
token.setExpiresIn(result.getIntValue("expires_in"));
diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/type/URLConsts.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/type/URLConsts.java
index 50e34b75..8c9121b3 100644
--- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/type/URLConsts.java
+++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/type/URLConsts.java
@@ -19,6 +19,6 @@ public final class URLConsts {
/**
* 公众平台jssdk获取token的url
*/
- public static final String JS_TICKET_URL = BASE_URL
- + "/ticket/getticket?access_token=%s&type=jsapi";
+ public static final String TICKET_URL = BASE_URL
+ + "/ticket/getticket?access_token=%s&type=%s";
}
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 c2b38d51..6952ac31 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
@@ -44,12 +44,12 @@ import com.foxinmy.weixin4j.qy.token.WeixinTicketCreator;
import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator;
import com.foxinmy.weixin4j.qy.type.ChatType;
import com.foxinmy.weixin4j.qy.type.InviteType;
-import com.foxinmy.weixin4j.qy.type.TicketType;
import com.foxinmy.weixin4j.qy.type.UserStatus;
import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.token.TokenStorager;
import com.foxinmy.weixin4j.tuple.MpArticle;
import com.foxinmy.weixin4j.type.MediaType;
+import com.foxinmy.weixin4j.type.TicketType;
/**
* 微信企业号接口实现
diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinTicketCreator.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinTicketCreator.java
index 286cb5ca..5def6219 100644
--- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinTicketCreator.java
+++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinTicketCreator.java
@@ -5,10 +5,10 @@ import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token;
-import com.foxinmy.weixin4j.qy.type.TicketType;
import com.foxinmy.weixin4j.qy.type.URLConsts;
import com.foxinmy.weixin4j.token.TokenCreator;
import com.foxinmy.weixin4j.token.TokenHolder;
+import com.foxinmy.weixin4j.type.TicketType;
/**
* 微信企业号TICKET创建(包括jsticket、其它JSSDK所需的ticket的创建
@@ -16,8 +16,9 @@ import com.foxinmy.weixin4j.token.TokenHolder;
* @className WeixinTicketCreator
* @author jy
* @date 2015年12月25日
- * @since JDK 1.6
- *
+ * @since JDK 1.6 JSTICKET
*/
public class WeixinTicketCreator implements TokenCreator {
@@ -50,7 +51,7 @@ public class WeixinTicketCreator implements TokenCreator {
@Override
public Token createToken() throws WeixinException {
WeixinResponse response = null;
- if (ticketType == TicketType.jsticket) {
+ if (ticketType == TicketType.jsapi) {
response = weixinExecutor.get(String.format(
URLConsts.JS_TICKET_URL, weixinTokenHolder.getToken()
.getAccessToken()));