weixin4j-mp:调整WeixinTicketCreator类

This commit is contained in:
jinyu 2015-12-25 17:15:21 +08:00
parent 110619b3c3
commit 4f0382e726
7 changed files with 40 additions and 23 deletions

View File

@ -581,6 +581,8 @@
+ weixin4j-mp:私有化WeixinProxy(TokenHolder)构造器 + weixin4j-mp:私有化WeixinProxy(TokenHolder)构造器
+ weixin4j-mp:调整WeixinTicketCreator类
+ weixin4j-qy:WeixinProxy新增获取corpid(getCorpId)方法 + weixin4j-qy:WeixinProxy新增获取corpid(getCorpId)方法
+ weixin4j-qy:WeixinProxy新增获取jsticket(getJSTicketHolder)方法 + weixin4j-qy:WeixinProxy新增获取jsticket(getJSTicketHolder)方法

View File

@ -1,7 +1,7 @@
package com.foxinmy.weixin4j.qy.type; package com.foxinmy.weixin4j.type;
/** /**
* 票据类型 * 票据类型(一般用于JSSDK
* *
* @className TicketType * @className TicketType
* @author jy * @author jy
@ -11,11 +11,15 @@ package com.foxinmy.weixin4j.qy.type;
*/ */
public enum TicketType { public enum TicketType {
/** /**
* jsticket * jsapi
*/ */
jsticket, jsapi,
/** /**
* 选取联系人 * 公众平台-卡券
*/
wx_card,
/**
* 企业号-选取联系人
*/ */
contact; contact;
} }

View File

@ -42,7 +42,7 @@ import com.foxinmy.weixin4j.mp.model.QRResult;
import com.foxinmy.weixin4j.mp.model.SemQuery; import com.foxinmy.weixin4j.mp.model.SemQuery;
import com.foxinmy.weixin4j.mp.model.SemResult; import com.foxinmy.weixin4j.mp.model.SemResult;
import com.foxinmy.weixin4j.mp.model.User; 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.token.WeixinTokenCreator;
import com.foxinmy.weixin4j.mp.type.DatacubeType; import com.foxinmy.weixin4j.mp.type.DatacubeType;
import com.foxinmy.weixin4j.mp.type.IndustryType; 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.MpVideo;
import com.foxinmy.weixin4j.tuple.Tuple; import com.foxinmy.weixin4j.tuple.Tuple;
import com.foxinmy.weixin4j.type.MediaType; 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 * @return
*/ */
public TokenHolder getJSTicketHolder() { public TokenHolder getTicketHolder(TicketType ticketType) {
return new TokenHolder(new WeixinJSTicketCreator(this.appId, return new TokenHolder(new WeixinTicketCreator(this.appId,
this.tokenHolder), this.tokenHolder.getTokenStorager()); ticketType, this.tokenHolder),
this.tokenHolder.getTokenStorager());
} }
/** /**

View File

@ -8,9 +8,10 @@ import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.mp.type.URLConsts; import com.foxinmy.weixin4j.mp.type.URLConsts;
import com.foxinmy.weixin4j.token.TokenCreator; import com.foxinmy.weixin4j.token.TokenCreator;
import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.type.TicketType;
/** /**
* 微信公众平台JSTICKET创建者 * 微信公众平台TICKET创建(包括jsticket其它JSSDK所需的ticket的创建
* *
* @className WeixinJSTicketCreator * @className WeixinJSTicketCreator
* @author jy * @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 * 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</a> * TICKET</a>
*/ */
public class WeixinJSTicketCreator implements TokenCreator { public class WeixinTicketCreator implements TokenCreator {
private final String appid; private final String appid;
private final TicketType ticketType;
private final TokenHolder weixinTokenHolder; private final TokenHolder weixinTokenHolder;
private final WeixinRequestExecutor weixinExecutor; private final WeixinRequestExecutor weixinExecutor;
@ -31,25 +33,29 @@ public class WeixinJSTicketCreator implements TokenCreator {
* *
* @param appid * @param appid
* 公众号的appid * 公众号的appid
* @param ticketType
* 票据类型
* @param weixinTokenHolder * @param weixinTokenHolder
* <font color="red">公众平台的access_token</font> * <font color="red">公众平台的access_token</font>
*/ */
public WeixinJSTicketCreator(String appid, TokenHolder weixinTokenHolder) { public WeixinTicketCreator(String appid, TicketType ticketType,
TokenHolder weixinTokenHolder) {
this.appid = appid; this.appid = appid;
this.ticketType = ticketType;
this.weixinTokenHolder = weixinTokenHolder; this.weixinTokenHolder = weixinTokenHolder;
this.weixinExecutor = new WeixinRequestExecutor(); this.weixinExecutor = new WeixinRequestExecutor();
} }
@Override @Override
public String getCacheKey() { public String getCacheKey() {
return String.format("wx_mp_jsticket_%s", appid); return String.format("wx_mp_ticket_%s_%s", appid, ticketType.name());
} }
@Override @Override
public Token createToken() throws WeixinException { public Token createToken() throws WeixinException {
WeixinResponse response = weixinExecutor.get(String.format( WeixinResponse response = weixinExecutor.get(String.format(
URLConsts.JS_TICKET_URL, weixinTokenHolder.getToken() URLConsts.TICKET_URL, weixinTokenHolder.getToken()
.getAccessToken())); .getAccessToken(), ticketType.name()));
JSONObject result = response.getAsJson(); JSONObject result = response.getAsJson();
Token token = new Token(result.getString("ticket")); Token token = new Token(result.getString("ticket"));
token.setExpiresIn(result.getIntValue("expires_in")); token.setExpiresIn(result.getIntValue("expires_in"));

View File

@ -19,6 +19,6 @@ public final class URLConsts {
/** /**
* 公众平台jssdk获取token的url * 公众平台jssdk获取token的url
*/ */
public static final String JS_TICKET_URL = BASE_URL public static final String TICKET_URL = BASE_URL
+ "/ticket/getticket?access_token=%s&type=jsapi"; + "/ticket/getticket?access_token=%s&type=%s";
} }

View File

@ -44,12 +44,12 @@ import com.foxinmy.weixin4j.qy.token.WeixinTicketCreator;
import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator; import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator;
import com.foxinmy.weixin4j.qy.type.ChatType; import com.foxinmy.weixin4j.qy.type.ChatType;
import com.foxinmy.weixin4j.qy.type.InviteType; 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.qy.type.UserStatus;
import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.token.TokenStorager; import com.foxinmy.weixin4j.token.TokenStorager;
import com.foxinmy.weixin4j.tuple.MpArticle; import com.foxinmy.weixin4j.tuple.MpArticle;
import com.foxinmy.weixin4j.type.MediaType; import com.foxinmy.weixin4j.type.MediaType;
import com.foxinmy.weixin4j.type.TicketType;
/** /**
* 微信企业号接口实现 * 微信企业号接口实现

View File

@ -5,10 +5,10 @@ import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor; import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.qy.type.TicketType;
import com.foxinmy.weixin4j.qy.type.URLConsts; import com.foxinmy.weixin4j.qy.type.URLConsts;
import com.foxinmy.weixin4j.token.TokenCreator; import com.foxinmy.weixin4j.token.TokenCreator;
import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.type.TicketType;
/** /**
* 微信企业号TICKET创建(包括jsticket其它JSSDK所需的ticket的创建 * 微信企业号TICKET创建(包括jsticket其它JSSDK所需的ticket的创建
@ -16,8 +16,9 @@ import com.foxinmy.weixin4j.token.TokenHolder;
* @className WeixinTicketCreator * @className WeixinTicketCreator
* @author jy * @author jy
* @date 2015年12月25日 * @date 2015年12月25日
* @since JDK 1.6 * @since JDK 1.6 <a href=
* * "http://qydev.weixin.qq.com/wiki/index.php?title=%E5%BE%AE%E4%BF%A1JS-SDK%E6%8E%A5%E5%8F%A3#.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"
* >JSTICKET</a>
*/ */
public class WeixinTicketCreator implements TokenCreator { public class WeixinTicketCreator implements TokenCreator {
@ -50,7 +51,7 @@ public class WeixinTicketCreator implements TokenCreator {
@Override @Override
public Token createToken() throws WeixinException { public Token createToken() throws WeixinException {
WeixinResponse response = null; WeixinResponse response = null;
if (ticketType == TicketType.jsticket) { if (ticketType == TicketType.jsapi) {
response = weixinExecutor.get(String.format( response = weixinExecutor.get(String.format(
URLConsts.JS_TICKET_URL, weixinTokenHolder.getToken() URLConsts.JS_TICKET_URL, weixinTokenHolder.getToken()
.getAccessToken())); .getAccessToken()));