From 4f0382e726ba0330ce82a7946f849397827b114d Mon Sep 17 00:00:00 2001 From: jinyu Date: Fri, 25 Dec 2015 17:15:21 +0800 Subject: [PATCH] =?UTF-8?q?weixin4j-mp:=E8=B0=83=E6=95=B4WeixinTicketCreat?= =?UTF-8?q?or=E7=B1=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGE.md | 2 ++ .../com/foxinmy/weixin4j}/type/TicketType.java | 14 +++++++++----- .../com/foxinmy/weixin4j/mp/WeixinProxy.java | 14 +++++++++----- ...etCreator.java => WeixinTicketCreator.java} | 18 ++++++++++++------ .../foxinmy/weixin4j/mp/type/URLConsts.java | 4 ++-- .../com/foxinmy/weixin4j/qy/WeixinProxy.java | 2 +- .../weixin4j/qy/token/WeixinTicketCreator.java | 9 +++++---- 7 files changed, 40 insertions(+), 23 deletions(-) rename {weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy => weixin4j-base/src/main/java/com/foxinmy/weixin4j}/type/TicketType.java (50%) rename weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/{WeixinJSTicketCreator.java => WeixinTicketCreator.java} (73%) 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()));