From fa6b60af827dfd935cdea4bbb15c3d0a17ebb47e Mon Sep 17 00:00:00 2001 From: jinyu Date: Thu, 21 Apr 2016 08:57:25 +0800 Subject: [PATCH] =?UTF-8?q?Token=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin4j/token/AbstractTokenCreator.java | 36 +++++ .../weixin4j/token/FileTokenStorager.java | 25 ++-- .../weixin4j/token/RedisTokenStorager.java | 8 +- .../foxinmy/weixin4j/token/TokenCreator.java | 60 ++++----- .../foxinmy/weixin4j/token/TokenStorager.java | 4 + .../Weixin4jServerStartupWithoutThread.java | 10 +- .../mp/token/WeixinTicketCreator.java | 123 +++++++++--------- .../weixin4j/mp/token/WeixinTokenCreator.java | 112 ++++++++-------- .../qy/suite/WeixinSuitePreCodeCreator.java | 116 ++++++++--------- .../qy/suite/WeixinSuiteTokenCreator.java | 109 ++++++++-------- .../qy/suite/WeixinTokenSuiteCreator.java | 27 ++-- .../qy/token/WeixinProviderTokenCreator.java | 115 ++++++++-------- .../qy/token/WeixinTicketCreator.java | 11 +- .../weixin4j/qy/token/WeixinTokenCreator.java | 112 ++++++++-------- 14 files changed, 435 insertions(+), 433 deletions(-) create mode 100644 weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/AbstractTokenCreator.java diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/AbstractTokenCreator.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/AbstractTokenCreator.java new file mode 100644 index 00000000..c9c77771 --- /dev/null +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/AbstractTokenCreator.java @@ -0,0 +1,36 @@ +package com.foxinmy.weixin4j.token; + +import com.foxinmy.weixin4j.http.weixin.WeixinRequestExecutor; + +/** + * + * @className: AbstractTokenCreator + * @author jinyu + * @date 2016年4月21日 + * @since JDK 1.6 + * @see + */ +public abstract class AbstractTokenCreator implements TokenCreator { + + protected final WeixinRequestExecutor weixinExecutor; + + public AbstractTokenCreator() { + this.weixinExecutor = new WeixinRequestExecutor(); + } + + /** + * 缓存key:附加weixin4j前缀 + * + * @return + */ + public String getCacheKey() { + return String.format("weixin4j_%s", getCacheKey0()); + } + + /** + * 返回缓存KEY的名称:建议接口类型命名 如 mp_token_{appid} + * + * @return + */ + public abstract String getCacheKey0(); +} diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java index e58d11af..203d3e89 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/FileTokenStorager.java @@ -29,17 +29,14 @@ public class FileTokenStorager implements TokenStorager { @Override public Token lookup(String cacheKey) throws WeixinException { - File token_file = new File(String.format("%s/%s.xml", cachePath, - cacheKey)); + File token_file = new File(String.format("%s/%s.xml", cachePath, cacheKey)); try { if (token_file.exists()) { - Token token = XmlStream.fromXML( - new FileInputStream(token_file), Token.class); + Token token = XmlStream.fromXML(new FileInputStream(token_file), Token.class); if (token.getCreateTime() < 0) { return token; } - if ((token.getCreateTime() + (token.getExpiresIn() * 1000l) - CUTMS) > System - .currentTimeMillis()) { + if ((token.getCreateTime() + (token.getExpiresIn() * 1000l) - CUTMS) > System.currentTimeMillis()) { return token; } } @@ -52,10 +49,7 @@ public class FileTokenStorager implements TokenStorager { @Override public void caching(String cacheKey, Token token) throws WeixinException { try { - XmlStream.toXML( - token, - new FileOutputStream(new File(String.format("%s/%s.xml", - cachePath, cacheKey)))); + XmlStream.toXML(token, new FileOutputStream(new File(String.format("%s/%s.xml", cachePath, cacheKey)))); } catch (IOException e) { throw new WeixinException(e); } @@ -64,12 +58,10 @@ public class FileTokenStorager implements TokenStorager { @Override public Token evict(String cacheKey) throws WeixinException { Token token = null; - File token_file = new File(String.format("%s/%s.xml", cachePath, - cacheKey)); + File token_file = new File(String.format("%s/%s.xml", cachePath, cacheKey)); try { if (token_file.exists()) { - token = XmlStream.fromXML(new FileInputStream(token_file), - Token.class); + token = XmlStream.fromXML(new FileInputStream(token_file), Token.class); token_file.delete(); } } catch (IOException e) { @@ -83,9 +75,8 @@ public class FileTokenStorager implements TokenStorager { File[] files = new File(cachePath).listFiles(new FileFilter() { @Override public boolean accept(File file) { - return file.isFile() - && "xml".equals(FileUtil.getFileExtension(file - .getName())); + return file.isFile() && file.getName().startsWith(PREFIX) + && "xml".equals(FileUtil.getFileExtension(file.getName())); } }); for (File token : files) { diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java index 30b4596e..3cfd78b7 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/RedisTokenStorager.java @@ -45,8 +45,7 @@ public class RedisTokenStorager implements TokenStorager { this.jedisPool = new JedisPool(jedisPoolConfig, host, port); } - public RedisTokenStorager(String host, int port, - JedisPoolConfig jedisPoolConfig) { + public RedisTokenStorager(String host, int port, JedisPoolConfig jedisPoolConfig) { this(new JedisPool(jedisPoolConfig, host, port)); } @@ -78,8 +77,7 @@ public class RedisTokenStorager implements TokenStorager { jedis = jedisPool.getResource(); jedis.hmset(cacheKey, token2map(token)); if (token.getExpiresIn() > 0) { - jedis.expire(cacheKey, token.getExpiresIn() - - (int) (CUTMS / 1000l)); + jedis.expire(cacheKey, token.getExpiresIn() - (int) (CUTMS / 1000l)); } } finally { if (jedis != null) { @@ -130,7 +128,7 @@ public class RedisTokenStorager implements TokenStorager { Jedis jedis = null; try { jedis = jedisPool.getResource(); - Set cacheKeys = jedis.keys("weixin4j_*"); + Set cacheKeys = jedis.keys(String.format("%s*", PREFIX)); if (!cacheKeys.isEmpty()) { Pipeline pipeline = jedis.pipelined(); for (String cacheKey : cacheKeys) { diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenCreator.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenCreator.java index 2cd263eb..97987a2c 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenCreator.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenCreator.java @@ -1,30 +1,30 @@ -package com.foxinmy.weixin4j.token; - -import com.foxinmy.weixin4j.exception.WeixinException; -import com.foxinmy.weixin4j.model.Token; - -/** - * TOKEN创建者 - * - * @className TokenCreator - * @author jy - * @date 2015年1月10日 - * @since JDK 1.6 - * @see - */ -public interface TokenCreator { - /** - * 返回缓存KEY的名称 - * - * @return - */ - public String getCacheKey(); - - /** - * 创建token - * - * @return - * @throws WeixinException - */ - public Token createToken() throws WeixinException; -} +package com.foxinmy.weixin4j.token; + +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.model.Token; + +/** + * TOKEN创建者 + * + * @className TokenCreator + * @author jy + * @date 2015年1月10日 + * @since JDK 1.6 + * @see + */ +public interface TokenCreator { + /** + * 返回缓存KEY的名称 + * + * @return + */ + public String getCacheKey(); + + /** + * 创建token + * + * @return + * @throws WeixinException + */ + public Token createToken() throws WeixinException; +} diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java index df8f6b92..99c049e7 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/token/TokenStorager.java @@ -19,4 +19,8 @@ public interface TokenStorager extends CacheStorager { * 考虑到程序的临界值,实际有效时间应该减去下面这个数 */ final long CUTMS = 1 * 60 * 1000l; + /** + * 缓存key的前缀 + */ + final String PREFIX = "weixin4j_"; } diff --git a/weixin4j-example/src/main/java/com/foximy/weixin4j/example/server/Weixin4jServerStartupWithoutThread.java b/weixin4j-example/src/main/java/com/foximy/weixin4j/example/server/Weixin4jServerStartupWithoutThread.java index fa1b79ef..6e2c4bc0 100644 --- a/weixin4j-example/src/main/java/com/foximy/weixin4j/example/server/Weixin4jServerStartupWithoutThread.java +++ b/weixin4j-example/src/main/java/com/foximy/weixin4j/example/server/Weixin4jServerStartupWithoutThread.java @@ -1,10 +1,6 @@ package com.foximy.weixin4j.example.server; -import org.springframework.context.ApplicationContext; -import org.springframework.context.support.ClassPathXmlApplicationContext; - import com.foxinmy.weixin4j.exception.WeixinException; -import com.foxinmy.weixin4j.spring.SpringBeanFactory; import com.foxinmy.weixin4j.startup.WeixinServerBootstrap; /** @@ -42,11 +38,11 @@ public class Weixin4jServerStartupWithoutThread { * @throws WeixinException */ public static void main(String[] args) throws WeixinException { - ApplicationContext applicationContext = new ClassPathXmlApplicationContext( - new String[] { "classpath:/spring-bean.xml" }); + //ApplicationContext applicationContext = new ClassPathXmlApplicationContext( + // new String[] { "classpath:/spring-bean.xml" }); new WeixinServerBootstrap(aesToken) .handlerPackagesToScan(handlerPackage).openAlwaysResponse() - .resolveBeanFactory(new SpringBeanFactory(applicationContext)) + //.resolveBeanFactory(new SpringBeanFactory(applicationContext)) .startup(port); } } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTicketCreator.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTicketCreator.java index 48ef78fe..467a0e66 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTicketCreator.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTicketCreator.java @@ -1,63 +1,60 @@ -package com.foxinmy.weixin4j.mp.token; - -import com.alibaba.fastjson.JSONObject; -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.mp.type.URLConsts; -import com.foxinmy.weixin4j.token.TokenCreator; -import com.foxinmy.weixin4j.token.TokenHolder; -import com.foxinmy.weixin4j.type.TicketType; - -/** - * 微信公众平台TICKET创建(包括jsticket、其它JSSDK所需的ticket的创建 - * - * @className WeixinJSTicketCreator - * @author jy - * @date 2015年1月10日 - * @since JDK 1.6 - * @see - * JS TICKET - */ -public class WeixinTicketCreator implements TokenCreator { - - private final String appid; - private final TicketType ticketType; - private final TokenHolder weixinTokenHolder; - private final WeixinRequestExecutor weixinExecutor; - - /** - * jssdk - * - * @param appid - * 公众号的appid - * @param ticketType - * 票据类型 - * @param weixinTokenHolder - * 公众平台的access_token - */ - 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("weixin4j_mp_ticket_%s_%s", ticketType.name(), appid); - } - - @Override - public Token createToken() throws WeixinException { - WeixinResponse response = weixinExecutor.get( - String.format(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")); - token.setOriginalResult(response.getAsString()); - return token; - } -} +package com.foxinmy.weixin4j.mp.token; + +import com.alibaba.fastjson.JSONObject; +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.http.weixin.WeixinResponse; +import com.foxinmy.weixin4j.model.Token; +import com.foxinmy.weixin4j.mp.type.URLConsts; +import com.foxinmy.weixin4j.token.AbstractTokenCreator; +import com.foxinmy.weixin4j.token.TokenHolder; +import com.foxinmy.weixin4j.type.TicketType; + +/** + * 微信公众平台TICKET创建(包括jsticket、其它JSSDK所需的ticket的创建 + * + * @className WeixinJSTicketCreator + * @author jy + * @date 2015年1月10日 + * @since JDK 1.6 + * @see + * JS TICKET + */ +public class WeixinTicketCreator extends AbstractTokenCreator { + + private final String appid; + private final TicketType ticketType; + private final TokenHolder weixinTokenHolder; + + /** + * jssdk + * + * @param appid + * 公众号的appid + * @param ticketType + * 票据类型 + * @param weixinTokenHolder + * 公众平台的access_token + */ + public WeixinTicketCreator(String appid, TicketType ticketType, TokenHolder weixinTokenHolder) { + this.appid = appid; + this.ticketType = ticketType; + this.weixinTokenHolder = weixinTokenHolder; + } + + @Override + public String getCacheKey0() { + return String.format("mp_ticket_%s_%s", ticketType.name(), appid); + } + + @Override + public Token createToken() throws WeixinException { + WeixinResponse response = weixinExecutor.get( + String.format(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")); + token.setOriginalResult(response.getAsString()); + return token; + } +} diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTokenCreator.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTokenCreator.java index a3082717..387027e2 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTokenCreator.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/token/WeixinTokenCreator.java @@ -1,56 +1,56 @@ -package com.foxinmy.weixin4j.mp.token; - -import com.alibaba.fastjson.TypeReference; -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.mp.type.URLConsts; -import com.foxinmy.weixin4j.token.TokenCreator; - -/** - * 微信公众平台TOKEN创建者 - * - * @className WeixinTokenCreator - * @author jy - * @date 2015年1月10日 - * @since JDK 1.6 - * @see 微信公众平台获取token说明 - * @see com.foxinmy.weixin4j.model.Token - */ -public class WeixinTokenCreator implements TokenCreator { - - private final WeixinRequestExecutor weixinExecutor; - private final String appid; - private final String secret; - - /** - * - * @param appid - * 公众号ID - * @param secret - * 公众号secret - */ - public WeixinTokenCreator(String appid, String secret) { - this.appid = appid; - this.secret = secret; - this.weixinExecutor = new WeixinRequestExecutor(); - } - - @Override - public String getCacheKey() { - return String.format("weixin4j_mp_token_%s", appid); - } - - @Override - public Token createToken() throws WeixinException { - String tokenUrl = String.format(URLConsts.ASSESS_TOKEN_URL, appid, - secret); - WeixinResponse response = weixinExecutor.get(tokenUrl); - Token token = response.getAsObject(new TypeReference() { - }); - token.setOriginalResult(response.getAsString()); - return token; - } -} +package com.foxinmy.weixin4j.mp.token; + +import com.alibaba.fastjson.TypeReference; +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.mp.type.URLConsts; +import com.foxinmy.weixin4j.token.AbstractTokenCreator; + +/** + * 微信公众平台TOKEN创建者 + * + * @className WeixinTokenCreator + * @author jy + * @date 2015年1月10日 + * @since JDK 1.6 + * @see 微信公众平台获取token说明 + * @see com.foxinmy.weixin4j.model.Token + */ +public class WeixinTokenCreator extends AbstractTokenCreator { + + private final WeixinRequestExecutor weixinExecutor; + private final String appid; + private final String secret; + + /** + * + * @param appid + * 公众号ID + * @param secret + * 公众号secret + */ + public WeixinTokenCreator(String appid, String secret) { + this.appid = appid; + this.secret = secret; + this.weixinExecutor = new WeixinRequestExecutor(); + } + + @Override + public String getCacheKey0() { + return String.format("mp_token_%s", appid); + } + + @Override + public Token createToken() throws WeixinException { + String tokenUrl = String.format(URLConsts.ASSESS_TOKEN_URL, appid, + secret); + WeixinResponse response = weixinExecutor.get(tokenUrl); + Token token = response.getAsObject(new TypeReference() { + }); + token.setOriginalResult(response.getAsString()); + return token; + } +} diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuitePreCodeCreator.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuitePreCodeCreator.java index 33b4dbd1..ec5b838f 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuitePreCodeCreator.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuitePreCodeCreator.java @@ -1,60 +1,56 @@ -package com.foxinmy.weixin4j.qy.suite; - -import com.alibaba.fastjson.JSONObject; -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.URLConsts; -import com.foxinmy.weixin4j.token.TokenCreator; -import com.foxinmy.weixin4j.token.TokenHolder; - -/** - * 微信企业号应用套件预授权码创建 - * - * @className WeixinSuitePreCodeCreator - * @author jy - * @date 2015年6月17日 - * @since JDK 1.6 - * @see 获取应用套件预授权码 - * @see com.foxinmy.weixin4j.model.Token - */ -public class WeixinSuitePreCodeCreator implements TokenCreator { - - private final WeixinRequestExecutor weixinExecutor; - private final TokenHolder suiteTokenHolder; - private final String suiteId; - - /** - * - * @param suiteTokenHolder - * 应用套件的token - * @param suiteId - * 应用套件ID - */ - public WeixinSuitePreCodeCreator(TokenHolder suiteTokenHolder, - String suiteId) { - this.suiteTokenHolder = suiteTokenHolder; - this.suiteId = suiteId; - this.weixinExecutor = new WeixinRequestExecutor(); - } - - @Override - public String getCacheKey() { - return String.format("weixin4j_qy_suite_precode_%s", suiteId); - } - - @Override - public Token createToken() throws WeixinException { - WeixinResponse response = weixinExecutor.post( - String.format(URLConsts.SUITE_PRE_CODE_URL, - suiteTokenHolder.getAccessToken()), - String.format("{\"suite_id\":\"%s\"}", suiteId)); - JSONObject result = response.getAsJson(); - Token token = new Token(result.getString("pre_auth_code")); - token.setExpiresIn(result.getIntValue("expires_in")); - token.setOriginalResult(response.getAsString()); - return token; - } -} +package com.foxinmy.weixin4j.qy.suite; + +import com.alibaba.fastjson.JSONObject; +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.http.weixin.WeixinResponse; +import com.foxinmy.weixin4j.model.Token; +import com.foxinmy.weixin4j.qy.type.URLConsts; +import com.foxinmy.weixin4j.token.AbstractTokenCreator; +import com.foxinmy.weixin4j.token.TokenHolder; + +/** + * 微信企业号应用套件预授权码创建 + * + * @className WeixinSuitePreCodeCreator + * @author jy + * @date 2015年6月17日 + * @since JDK 1.6 + * @see + * 获取应用套件预授权码 + * @see com.foxinmy.weixin4j.model.Token + */ +public class WeixinSuitePreCodeCreator extends AbstractTokenCreator { + + private final TokenHolder suiteTokenHolder; + private final String suiteId; + + /** + * + * @param suiteTokenHolder + * 应用套件的token + * @param suiteId + * 应用套件ID + */ + public WeixinSuitePreCodeCreator(TokenHolder suiteTokenHolder, String suiteId) { + this.suiteTokenHolder = suiteTokenHolder; + this.suiteId = suiteId; + } + + @Override + public String getCacheKey0() { + return String.format("qy_suite_precode_%s", suiteId); + } + + @Override + public Token createToken() throws WeixinException { + WeixinResponse response = weixinExecutor.post( + String.format(URLConsts.SUITE_PRE_CODE_URL, suiteTokenHolder.getAccessToken()), + String.format("{\"suite_id\":\"%s\"}", suiteId)); + JSONObject result = response.getAsJson(); + Token token = new Token(result.getString("pre_auth_code")); + token.setExpiresIn(result.getIntValue("expires_in")); + token.setOriginalResult(response.getAsString()); + return token; + } +} diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteTokenCreator.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteTokenCreator.java index 5bb38145..d41d57db 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteTokenCreator.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteTokenCreator.java @@ -1,56 +1,53 @@ - package com.foxinmy.weixin4j.qy.suite; - -import com.alibaba.fastjson.JSONObject; -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.URLConsts; -import com.foxinmy.weixin4j.token.TokenCreator; - -/** - * 微信企业号应用套件凭证创建 - * - * @className WeixinSuiteTokenCreator - * @author jy - * @date 2015年6月17日 - * @since JDK 1.6 - * @see 获取应用套件凭证 - * @see com.foxinmy.weixin4j.model.Token - */ -public class WeixinSuiteTokenCreator implements TokenCreator { - - private final WeixinRequestExecutor weixinExecutor; - private final SuiteTicketHolder ticketHolder; - - /** - * - * @param stringStorager - * 套件ticket存取器 - */ - public WeixinSuiteTokenCreator(SuiteTicketHolder ticketHolder) { - this.ticketHolder = ticketHolder; - this.weixinExecutor = new WeixinRequestExecutor(); - } - - @Override - public String getCacheKey() { - return String.format("weixin4j_qy_suite_token_%s", ticketHolder.getSuiteId()); - } - - @Override - public Token createToken() throws WeixinException { - JSONObject obj = new JSONObject(); - obj.put("suite_id", ticketHolder.getSuiteId()); - obj.put("suite_secret", ticketHolder.getSuiteSecret()); - obj.put("suite_ticket", ticketHolder.getTicket()); - WeixinResponse response = weixinExecutor.post(URLConsts.SUITE_TOKEN_URL, - obj.toJSONString()); - obj = response.getAsJson(); - Token token = new Token(obj.getString("suite_access_token")); - token.setExpiresIn(obj.getIntValue("expires_in")); - token.setOriginalResult(response.getAsString()); - return token; - } -} + package com.foxinmy.weixin4j.qy.suite; + +import com.alibaba.fastjson.JSONObject; +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.http.weixin.WeixinResponse; +import com.foxinmy.weixin4j.model.Token; +import com.foxinmy.weixin4j.qy.type.URLConsts; +import com.foxinmy.weixin4j.token.AbstractTokenCreator; + +/** + * 微信企业号应用套件凭证创建 + * + * @className WeixinSuiteTokenCreator + * @author jy + * @date 2015年6月17日 + * @since JDK 1.6 + * @see 获取应用套件凭证 + * @see com.foxinmy.weixin4j.model.Token + */ +public class WeixinSuiteTokenCreator extends AbstractTokenCreator { + + private final SuiteTicketHolder ticketHolder; + + /** + * + * @param stringStorager + * 套件ticket存取器 + */ + public WeixinSuiteTokenCreator(SuiteTicketHolder ticketHolder) { + this.ticketHolder = ticketHolder; + } + + @Override + public String getCacheKey0() { + return String.format("qy_suite_token_%s", ticketHolder.getSuiteId()); + } + + @Override + public Token createToken() throws WeixinException { + JSONObject obj = new JSONObject(); + obj.put("suite_id", ticketHolder.getSuiteId()); + obj.put("suite_secret", ticketHolder.getSuiteSecret()); + obj.put("suite_ticket", ticketHolder.getTicket()); + WeixinResponse response = weixinExecutor.post(URLConsts.SUITE_TOKEN_URL, + obj.toJSONString()); + obj = response.getAsJson(); + Token token = new Token(obj.getString("suite_access_token")); + token.setExpiresIn(obj.getIntValue("expires_in")); + token.setOriginalResult(response.getAsString()); + return token; + } +} diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinTokenSuiteCreator.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinTokenSuiteCreator.java index 3c23b65a..edf69b49 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinTokenSuiteCreator.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinTokenSuiteCreator.java @@ -2,11 +2,10 @@ package com.foxinmy.weixin4j.qy.suite; import com.alibaba.fastjson.JSONObject; 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.URLConsts; -import com.foxinmy.weixin4j.token.TokenCreator; +import com.foxinmy.weixin4j.token.AbstractTokenCreator; import com.foxinmy.weixin4j.token.TokenHolder; /** @@ -16,13 +15,13 @@ import com.foxinmy.weixin4j.token.TokenHolder; * @author jy * @date 2015年6月17日 * @since JDK 1.6 - * @see 获取企业号access_token + * @see + * 获取企业号access_token * @see com.foxinmy.weixin4j.model.Token */ -public class WeixinTokenSuiteCreator implements TokenCreator { +public class WeixinTokenSuiteCreator extends AbstractTokenCreator { - private final WeixinRequestExecutor weixinExecutor; private final SuitePerCodeHolder perCodeHolder; private final TokenHolder suiteTokenHolder; @@ -33,19 +32,14 @@ public class WeixinTokenSuiteCreator implements TokenCreator { * @param suiteTokenHolder * 第三方套件凭证token */ - public WeixinTokenSuiteCreator(SuitePerCodeHolder perCodeHolder, - TokenHolder suiteTokenHolder) { + public WeixinTokenSuiteCreator(SuitePerCodeHolder perCodeHolder, TokenHolder suiteTokenHolder) { this.perCodeHolder = perCodeHolder; this.suiteTokenHolder = suiteTokenHolder; - this.weixinExecutor = new WeixinRequestExecutor(); } @Override - public String getCacheKey() { - return String.format("weixin4j_qy_token_suite_%s_%s", - perCodeHolder.getSuiteId(), perCodeHolder.getAuthCorpId() - - ); + public String getCacheKey0() { + return String.format("qy_token_suite_%s_%s", perCodeHolder.getSuiteId(), perCodeHolder.getAuthCorpId()); } @Override @@ -54,9 +48,8 @@ public class WeixinTokenSuiteCreator implements TokenCreator { obj.put("suite_id", perCodeHolder.getSuiteId()); obj.put("auth_corpid", perCodeHolder.getAuthCorpId()); obj.put("permanent_code", perCodeHolder.getPermanentCode()); - WeixinResponse response = weixinExecutor.post( - String.format(URLConsts.TOKEN_SUITE_URL, - suiteTokenHolder.getAccessToken()), obj.toJSONString()); + WeixinResponse response = weixinExecutor + .post(String.format(URLConsts.TOKEN_SUITE_URL, suiteTokenHolder.getAccessToken()), obj.toJSONString()); obj = response.getAsJson(); Token token = new Token(obj.getString("access_token")); token.setExpiresIn(obj.getIntValue("expires_in")); diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinProviderTokenCreator.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinProviderTokenCreator.java index 508b3298..2e5dea54 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinProviderTokenCreator.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinProviderTokenCreator.java @@ -1,59 +1,56 @@ -package com.foxinmy.weixin4j.qy.token; - -import com.alibaba.fastjson.JSONObject; -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.URLConsts; -import com.foxinmy.weixin4j.token.TokenCreator; - -/** - * 微信企业号应用提供商凭证创建 - * - * @className WeixinTokenCreator - * @author jy - * @date 2015年1月10日 - * @since JDK 1.6 - * @see 获取应用提供商凭证 - * @see com.foxinmy.weixin4j.model.Token - */ -public class WeixinProviderTokenCreator implements TokenCreator { - - private final WeixinRequestExecutor weixinExecutor; - private final String corpid; - private final String providersecret; - - /** - * - * @param corpid - * 企业号ID - * @param providersecret - * 企业号提供商的secret - */ - public WeixinProviderTokenCreator(String corpid, String providersecret) { - this.corpid = corpid; - this.providersecret = providersecret; - this.weixinExecutor = new WeixinRequestExecutor(); - } - - @Override - public String getCacheKey() { - return String.format("weixin4j_qy_provider_token_%s", corpid); - } - - @Override - public Token createToken() throws WeixinException { - JSONObject obj = new JSONObject(); - obj.put("corpid", corpid); - obj.put("provider_secret", providersecret); - WeixinResponse response = weixinExecutor.post(URLConsts.PROVIDER_TOKEN_URL, - obj.toJSONString()); - obj = response.getAsJson(); - Token token = new Token(obj.getString("provider_access_token")); - token.setExpiresIn(obj.getIntValue("expires_in")); - token.setOriginalResult(response.getAsString()); - return token; - } -} +package com.foxinmy.weixin4j.qy.token; + +import com.alibaba.fastjson.JSONObject; +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.http.weixin.WeixinResponse; +import com.foxinmy.weixin4j.model.Token; +import com.foxinmy.weixin4j.qy.type.URLConsts; +import com.foxinmy.weixin4j.token.AbstractTokenCreator; + +/** + * 微信企业号应用提供商凭证创建 + * + * @className WeixinTokenCreator + * @author jy + * @date 2015年1月10日 + * @since JDK 1.6 + * @see + * 获取应用提供商凭证 + * @see com.foxinmy.weixin4j.model.Token + */ +public class WeixinProviderTokenCreator extends AbstractTokenCreator { + + private final String corpid; + private final String providersecret; + + /** + * + * @param corpid + * 企业号ID + * @param providersecret + * 企业号提供商的secret + */ + public WeixinProviderTokenCreator(String corpid, String providersecret) { + this.corpid = corpid; + this.providersecret = providersecret; + } + + @Override + public String getCacheKey0() { + return String.format("qy_provider_token_%s", corpid); + } + + @Override + public Token createToken() throws WeixinException { + JSONObject obj = new JSONObject(); + obj.put("corpid", corpid); + obj.put("provider_secret", providersecret); + WeixinResponse response = weixinExecutor.post(URLConsts.PROVIDER_TOKEN_URL, obj.toJSONString()); + obj = response.getAsJson(); + Token token = new Token(obj.getString("provider_access_token")); + token.setExpiresIn(obj.getIntValue("expires_in")); + token.setOriginalResult(response.getAsString()); + return token; + } +} 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 053f93eb..68bcfe91 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 @@ -2,11 +2,10 @@ package com.foxinmy.weixin4j.qy.token; import com.alibaba.fastjson.JSONObject; 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.URLConsts; -import com.foxinmy.weixin4j.token.TokenCreator; +import com.foxinmy.weixin4j.token.AbstractTokenCreator; import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.type.TicketType; @@ -20,12 +19,11 @@ import com.foxinmy.weixin4j.type.TicketType; * "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 */ -public class WeixinTicketCreator implements TokenCreator { +public class WeixinTicketCreator extends AbstractTokenCreator { private final String corpid; private final TicketType ticketType; private final TokenHolder weixinTokenHolder; - private final WeixinRequestExecutor weixinExecutor; /** * @param corpid @@ -39,12 +37,11 @@ public class WeixinTicketCreator implements TokenCreator { this.corpid = corpid; this.ticketType = ticketType; this.weixinTokenHolder = weixinTokenHolder; - this.weixinExecutor = new WeixinRequestExecutor(); } @Override - public String getCacheKey() { - return String.format("weixin4j_qy_ticket_%s_%s", ticketType.name(), corpid); + public String getCacheKey0() { + return String.format("qy_ticket_%s_%s", ticketType.name(), corpid); } @Override diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinTokenCreator.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinTokenCreator.java index 03a4d768..233d956a 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinTokenCreator.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/token/WeixinTokenCreator.java @@ -1,56 +1,56 @@ -package com.foxinmy.weixin4j.qy.token; - -import com.alibaba.fastjson.TypeReference; -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.URLConsts; -import com.foxinmy.weixin4j.token.TokenCreator; - -/** - * 微信企业号TOKEN创建 - * - * @className WeixinTokenCreator - * @author jy - * @date 2015年1月10日 - * @since JDK 1.6 - * @see 微信企业号获取token说明 - * @see com.foxinmy.weixin4j.model.Token - */ -public class WeixinTokenCreator implements TokenCreator { - - private final WeixinRequestExecutor weixinExecutor; - private final String corpid; - private final String corpsecret; - - /** - * - * @param corpid - * 企业号ID - * @param corpsecret - * 企业号secret - */ - public WeixinTokenCreator(String corpid, String corpsecret) { - this.corpid = corpid; - this.corpsecret = corpsecret; - this.weixinExecutor = new WeixinRequestExecutor(); - } - - @Override - public String getCacheKey() { - return String.format("weixin4j_qy_token_%s", corpid); - } - - @Override - public Token createToken() throws WeixinException { - String tokenUrl = String.format(URLConsts.ASSESS_TOKEN_URL, corpid, - corpsecret); - WeixinResponse response = weixinExecutor.get(tokenUrl); - Token token = response.getAsObject(new TypeReference() { - }); - token.setOriginalResult(response.getAsString()); - return token; - } -} +package com.foxinmy.weixin4j.qy.token; + +import com.alibaba.fastjson.TypeReference; +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.URLConsts; +import com.foxinmy.weixin4j.token.AbstractTokenCreator; + +/** + * 微信企业号TOKEN创建 + * + * @className WeixinTokenCreator + * @author jy + * @date 2015年1月10日 + * @since JDK 1.6 + * @see + * 微信企业号获取token说明 + * @see com.foxinmy.weixin4j.model.Token + */ +public class WeixinTokenCreator extends AbstractTokenCreator { + + private final WeixinRequestExecutor weixinExecutor; + private final String corpid; + private final String corpsecret; + + /** + * + * @param corpid + * 企业号ID + * @param corpsecret + * 企业号secret + */ + public WeixinTokenCreator(String corpid, String corpsecret) { + this.corpid = corpid; + this.corpsecret = corpsecret; + this.weixinExecutor = new WeixinRequestExecutor(); + } + + @Override + public String getCacheKey0() { + return String.format("qy_token_%s", corpid); + } + + @Override + public Token createToken() throws WeixinException { + String tokenUrl = String.format(URLConsts.ASSESS_TOKEN_URL, corpid, corpsecret); + WeixinResponse response = weixinExecutor.get(tokenUrl); + Token token = response.getAsObject(new TypeReference() { + }); + token.setOriginalResult(response.getAsString()); + return token; + } +}