Browse Source

格式化开放平台模块代码

master
Binary Wang 7 years ago
parent
commit
e00e7bb0ca
20 changed files with 152 additions and 86 deletions
  1. +1
    -0
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java
  2. +20
    -8
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java
  3. +3
    -0
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenService.java
  4. +6
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java
  5. +37
    -31
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java
  6. +40
    -24
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInRedisConfigStorage.java
  7. +5
    -2
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java
  8. +6
    -3
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceAbstractImpl.java
  9. +2
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceApacheHttpClientImpl.java
  10. +2
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/WxOpenAuthorizerAccessToken.java
  11. +2
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/WxOpenComponentAccessToken.java
  12. +3
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/auth/WxOpenAuthorizationInfo.java
  13. +3
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/auth/WxOpenAuthorizerInfo.java
  14. +5
    -2
      weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/message/WxOpenXmlMessage.java
  15. +3
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerInfoResult.java
  16. +3
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerOptionResult.java
  17. +3
    -1
      weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenQueryAuthResult.java
  18. +1
    -0
      weixin-java-open/src/main/java/me/chanjar/weixin/open/util/WxOpenCryptUtil.java
  19. +5
    -5
      weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizationInfoGsonAdapter.java
  20. +2
    -2
      weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerInfoGsonAdapter.java

+ 1
- 0
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java View File

@@ -34,6 +34,7 @@ public interface WxOpenComponentService {
* 刷新oauth2的access token * 刷新oauth2的access token
*/ */
String OAUTH2_REFRESH_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=%s&grant_type=refresh_token&refresh_token=%s&component_appid==%s"; String OAUTH2_REFRESH_TOKEN_URL = "https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=%s&grant_type=refresh_token&refresh_token=%s&component_appid==%s";

WxMpService getWxMpServiceByAppid(String appid); WxMpService getWxMpServiceByAppid(String appid);


WxOpenConfigStorage getWxOpenConfigStorage(); WxOpenConfigStorage getWxOpenConfigStorage();


+ 20
- 8
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java View File

@@ -9,29 +9,39 @@ import me.chanjar.weixin.open.bean.WxOpenComponentAccessToken;
*/ */
public interface WxOpenConfigStorage { public interface WxOpenConfigStorage {


String getComponentAppId();

void setComponentAppId(String componentAppId); void setComponentAppId(String componentAppId);


String getComponentAppSecret();

void setComponentAppSecret(String componentAppSecret); void setComponentAppSecret(String componentAppSecret);


String getComponentToken();

void setComponentToken(String componentToken); void setComponentToken(String componentToken);


String getComponentAesKey();

void setComponentAesKey(String componentAesKey); void setComponentAesKey(String componentAesKey);


String getComponentAppId();
String getComponentAppSecret();
String getComponentToken();
String getComponentAesKey();
String getComponentVerifyTicket(); String getComponentVerifyTicket();

void setComponentVerifyTicket(String componentVerifyTicket); void setComponentVerifyTicket(String componentVerifyTicket);

String getComponentAccessToken(); String getComponentAccessToken();

boolean isComponentAccessTokenExpired(); boolean isComponentAccessTokenExpired();

void updateComponentAccessTokent(WxOpenComponentAccessToken componentAccessToken); void updateComponentAccessTokent(WxOpenComponentAccessToken componentAccessToken);

WxMpConfigStorage getWxMpConfigStorage(String appId); WxMpConfigStorage getWxMpConfigStorage(String appId);

/** /**
* 应该是线程安全的 * 应该是线程安全的
* *
* @param componentAccessToken 新的accessToken值
* @param expiresInSeconds 过期时间,以秒为单位
* @param componentAccessToken 新的accessToken值
* @param expiresInSeconds 过期时间,以秒为单位
*/ */
void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds); void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds);


@@ -42,7 +52,9 @@ public interface WxOpenConfigStorage {




String getAuthorizerRefreshToken(String appId); String getAuthorizerRefreshToken(String appId);

void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken); void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken);

String getAuthorizerAccessToken(String appId); String getAuthorizerAccessToken(String appId);




@@ -63,8 +75,8 @@ public interface WxOpenConfigStorage {
/** /**
* 应该是线程安全的 * 应该是线程安全的
* *
* @param authorizerAccessToken 新的accessToken值
* @param expiresInSeconds 过期时间,以秒为单位
* @param authorizerAccessToken 新的accessToken值
* @param expiresInSeconds 过期时间,以秒为单位
*/ */
void updateAuthorizerAccessToken(String appId, String authorizerAccessToken, int expiresInSeconds); void updateAuthorizerAccessToken(String appId, String authorizerAccessToken, int expiresInSeconds);




+ 3
- 0
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenService.java View File

@@ -7,8 +7,11 @@ import me.chanjar.weixin.common.exception.WxErrorException;
*/ */
public interface WxOpenService { public interface WxOpenService {
WxOpenComponentService getWxOpenComponentService(); WxOpenComponentService getWxOpenComponentService();

WxOpenConfigStorage getWxOpenConfigStorage(); WxOpenConfigStorage getWxOpenConfigStorage();

void setWxOpenConfigStorage(WxOpenConfigStorage wxOpenConfigStorage); void setWxOpenConfigStorage(WxOpenConfigStorage wxOpenConfigStorage);

/** /**
* 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求 * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求
*/ */


+ 6
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java View File

@@ -30,9 +30,9 @@ import java.util.Map;
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
public class WxOpenComponentServiceImpl implements WxOpenComponentService { public class WxOpenComponentServiceImpl implements WxOpenComponentService {
private static final Map<String, WxMpService> wxOpenMpServiceMap = new Hashtable<>();
protected final Logger log = LoggerFactory.getLogger(this.getClass()); protected final Logger log = LoggerFactory.getLogger(this.getClass());
private WxOpenService wxOpenService; private WxOpenService wxOpenService;
private static final Map<String, WxMpService> wxOpenMpServiceMap = new Hashtable<>();


public WxOpenComponentServiceImpl(WxOpenService wxOpenService) { public WxOpenComponentServiceImpl(WxOpenService wxOpenService) {
this.wxOpenService = wxOpenService; this.wxOpenService = wxOpenService;
@@ -62,6 +62,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
public WxOpenConfigStorage getWxOpenConfigStorage() { public WxOpenConfigStorage getWxOpenConfigStorage() {
return wxOpenService.getWxOpenConfigStorage(); return wxOpenService.getWxOpenConfigStorage();
} }

@Override @Override
public boolean checkSignature(String timestamp, String nonce, String signature) { public boolean checkSignature(String timestamp, String nonce, String signature) {
try { try {
@@ -72,6 +73,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
return false; return false;
} }
} }

@Override @Override
public String getComponentAccessToken(boolean forceRefresh) throws WxErrorException { public String getComponentAccessToken(boolean forceRefresh) throws WxErrorException {


@@ -137,6 +139,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
} }
return null; return null;
} }

@Override @Override
public WxOpenQueryAuthResult getQueryAuth(String authorizationCode) throws WxErrorException { public WxOpenQueryAuthResult getQueryAuth(String authorizationCode) throws WxErrorException {
JsonObject jsonObject = new JsonObject(); JsonObject jsonObject = new JsonObject();
@@ -145,6 +148,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
String responseContent = post(API_QUERY_AUTH_URL, jsonObject.toString()); String responseContent = post(API_QUERY_AUTH_URL, jsonObject.toString());
return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenQueryAuthResult.class); return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenQueryAuthResult.class);
} }

@Override @Override
public WxOpenAuthorizerInfoResult getAuthorizerInfo(String authorizerAppid) throws WxErrorException { public WxOpenAuthorizerInfoResult getAuthorizerInfo(String authorizerAppid) throws WxErrorException {
JsonObject jsonObject = new JsonObject(); JsonObject jsonObject = new JsonObject();
@@ -163,6 +167,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService {
String responseContent = post(API_GET_AUTHORIZER_OPTION_URL, jsonObject.toString()); String responseContent = post(API_GET_AUTHORIZER_OPTION_URL, jsonObject.toString());
return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenAuthorizerOptionResult.class); return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenAuthorizerOptionResult.class);
} }

@Override @Override
public WxError setAuthorizerOption(String authorizerAppid, String optionName, String optionValue) throws WxErrorException { public WxError setAuthorizerOption(String authorizerAppid, String optionName, String optionValue) throws WxErrorException {
JsonObject jsonObject = new JsonObject(); JsonObject jsonObject = new JsonObject();


+ 37
- 31
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java View File

@@ -35,25 +35,13 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
private Map<String, Token> cardApiTickets = new Hashtable<>(); private Map<String, Token> cardApiTickets = new Hashtable<>();


@Override @Override
public void setComponentAppId(String componentAppId) {
this.componentAppId = componentAppId;
}
@Override
public void setComponentAppSecret(String componentAppSecret) {
this.componentAppSecret = componentAppSecret;
}
@Override
public void setComponentToken(String componentToken) {
this.componentToken = componentToken;
}
@Override
public void setComponentAesKey(String componentAesKey) {
this.componentAesKey = componentAesKey;
public String getComponentAppId() {
return componentAppId;
} }


@Override @Override
public String getComponentAppId() {
return componentAppId;
public void setComponentAppId(String componentAppId) {
this.componentAppId = componentAppId;
} }


@Override @Override
@@ -61,16 +49,31 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
return componentAppSecret; return componentAppSecret;
} }


@Override
public void setComponentAppSecret(String componentAppSecret) {
this.componentAppSecret = componentAppSecret;
}

@Override @Override
public String getComponentToken() { public String getComponentToken() {
return componentToken; return componentToken;
} }


@Override
public void setComponentToken(String componentToken) {
this.componentToken = componentToken;
}

@Override @Override
public String getComponentAesKey() { public String getComponentAesKey() {
return componentAesKey; return componentAesKey;
} }


@Override
public void setComponentAesKey(String componentAesKey) {
this.componentAesKey = componentAesKey;
}

@Override @Override
public String getComponentVerifyTicket() { public String getComponentVerifyTicket() {
return componentVerifyTicket; return componentVerifyTicket;
@@ -111,30 +114,34 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
public boolean autoRefreshToken() { public boolean autoRefreshToken() {
return true; return true;
} }
private String getTokenString(Map<String, Token> map, String key){

private String getTokenString(Map<String, Token> map, String key) {
Token token = map.get(key); Token token = map.get(key);
if(token == null || (token.expiresTime != null && System.currentTimeMillis() > token.expiresTime)){
if (token == null || (token.expiresTime != null && System.currentTimeMillis() > token.expiresTime)) {
return null; return null;
} }
return token.token; return token.token;
} }
private void expireToken(Map<String, Token> map, String key){

private void expireToken(Map<String, Token> map, String key) {
Token token = map.get(key); Token token = map.get(key);
if(token != null){
if (token != null) {
token.expiresTime = 0L; token.expiresTime = 0L;
} }
} }
private void updateToken(Map<String, Token> map, String key, String tokenString, Integer expiresInSeconds){

private void updateToken(Map<String, Token> map, String key, String tokenString, Integer expiresInSeconds) {
Token token = map.get(key); Token token = map.get(key);
if(token == null){
if (token == null) {
token = new Token(); token = new Token();
map.put(key, token); map.put(key, token);
} }
token.token = tokenString; token.token = tokenString;
if(expiresInSeconds != null) {
if (expiresInSeconds != null) {
token.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L; token.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L;
} }
} }

@Override @Override
public String getAuthorizerRefreshToken(String appId) { public String getAuthorizerRefreshToken(String appId) {
return getTokenString(authorizerRefreshTokens, appId); return getTokenString(authorizerRefreshTokens, appId);
@@ -211,22 +218,21 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage {
updateToken(cardApiTickets, appId, cardApiTicket, expiresInSeconds); updateToken(cardApiTickets, appId, cardApiTicket, expiresInSeconds);
} }


private static class Token{
private static class Token {
private String token; private String token;
private Long expiresTime; private Long expiresTime;
} }
private static class WxOpenMpConfigStorage implements WxMpConfigStorage{

private static class WxOpenMpConfigStorage implements WxMpConfigStorage {
private WxOpenConfigStorage wxOpenConfigStorage; private WxOpenConfigStorage wxOpenConfigStorage;
private String appId; private String appId;
private WxOpenMpConfigStorage(WxOpenConfigStorage wxOpenConfigStorage, String appId){
this.wxOpenConfigStorage = wxOpenConfigStorage;
this.appId = appId;
}

private Lock accessTokenLock = new ReentrantLock(); private Lock accessTokenLock = new ReentrantLock();
private Lock jsapiTicketLock = new ReentrantLock(); private Lock jsapiTicketLock = new ReentrantLock();
private Lock cardApiTicketLock = new ReentrantLock(); private Lock cardApiTicketLock = new ReentrantLock();

private WxOpenMpConfigStorage(WxOpenConfigStorage wxOpenConfigStorage, String appId) {
this.wxOpenConfigStorage = wxOpenConfigStorage;
this.appId = appId;
}


@Override @Override
public String getAccessToken() { public String getAccessToken() {


+ 40
- 24
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInRedisConfigStorage.java View File

@@ -24,6 +24,7 @@ public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage {
private String authorizerAccessTokenKey; private String authorizerAccessTokenKey;
private String jsapiTicketKey; private String jsapiTicketKey;
private String cardApiTicket; private String cardApiTicket;

public WxOpenInRedisConfigStorage(JedisPool jedisPool) { public WxOpenInRedisConfigStorage(JedisPool jedisPool) {
this.jedisPool = jedisPool; this.jedisPool = jedisPool;
} }
@@ -38,54 +39,62 @@ public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage {
jsapiTicketKey = JSAPI_TICKET_KEY.concat(componentAppId); jsapiTicketKey = JSAPI_TICKET_KEY.concat(componentAppId);
cardApiTicket = CARD_API_TICKET_KEY.concat(componentAppId); cardApiTicket = CARD_API_TICKET_KEY.concat(componentAppId);
} }

@Override @Override
public String getComponentVerifyTicket(){
try(Jedis jedis = jedisPool.getResource()){
public String getComponentVerifyTicket() {
try (Jedis jedis = jedisPool.getResource()) {
return jedis.get(componentVerifyTicketKey); return jedis.get(componentVerifyTicketKey);
} }
} }

@Override @Override
public void setComponentVerifyTicket(String componentVerifyTicket){
try(Jedis jedis = jedisPool.getResource()){
public void setComponentVerifyTicket(String componentVerifyTicket) {
try (Jedis jedis = jedisPool.getResource()) {
jedis.set(componentVerifyTicketKey, componentVerifyTicket); jedis.set(componentVerifyTicketKey, componentVerifyTicket);
} }
} }

@Override @Override
public String getComponentAccessToken(){
try(Jedis jedis = jedisPool.getResource()){
public String getComponentAccessToken() {
try (Jedis jedis = jedisPool.getResource()) {
return jedis.get(componentAccessTokenKey); return jedis.get(componentAccessTokenKey);
} }
} }

@Override @Override
public boolean isComponentAccessTokenExpired(){
try(Jedis jedis = jedisPool.getResource()){
public boolean isComponentAccessTokenExpired() {
try (Jedis jedis = jedisPool.getResource()) {
return jedis.ttl(componentAccessTokenKey) < 2; return jedis.ttl(componentAccessTokenKey) < 2;
} }
} }

@Override @Override
public void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds){
public void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.setex(componentAccessTokenKey, expiresInSeconds - 200, componentAccessToken); jedis.setex(componentAccessTokenKey, expiresInSeconds - 200, componentAccessToken);
} }
} }
private String getKey(String prefix, String appId){

private String getKey(String prefix, String appId) {
return prefix.endsWith(":") ? prefix.concat(appId) : prefix.concat(":").concat(appId); return prefix.endsWith(":") ? prefix.concat(appId) : prefix.concat(":").concat(appId);
} }


@Override @Override
public String getAuthorizerRefreshToken(String appId){
public String getAuthorizerRefreshToken(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.get(getKey(authorizerRefreshTokenKey, appId)); return jedis.get(getKey(authorizerRefreshTokenKey, appId));
} }
} }

@Override @Override
public void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken){
public void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.set(getKey(authorizerRefreshTokenKey, appId), authorizerRefreshToken); jedis.set(getKey(authorizerRefreshTokenKey, appId), authorizerRefreshToken);
} }
} }

@Override @Override
public String getAuthorizerAccessToken(String appId){
public String getAuthorizerAccessToken(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.get(getKey(authorizerAccessTokenKey, appId)); return jedis.get(getKey(authorizerAccessTokenKey, appId));
} }
@@ -93,70 +102,77 @@ public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage {




@Override @Override
public boolean isAuthorizerAccessTokenExpired(String appId){
public boolean isAuthorizerAccessTokenExpired(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.ttl(getKey(authorizerAccessTokenKey, appId)) < 2; return jedis.ttl(getKey(authorizerAccessTokenKey, appId)) < 2;
} }
} }

@Override @Override
public void expireAuthorizerAccessToken(String appId){
public void expireAuthorizerAccessToken(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.expire(getKey(authorizerAccessTokenKey, appId), 0); jedis.expire(getKey(authorizerAccessTokenKey, appId), 0);
} }
} }

@Override @Override
public void updateAuthorizerAccessToken(String appId, String authorizerAccessToken, int expiresInSeconds){
public void updateAuthorizerAccessToken(String appId, String authorizerAccessToken, int expiresInSeconds) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.setex(getKey(authorizerAccessTokenKey, appId), expiresInSeconds - 200, authorizerAccessToken); jedis.setex(getKey(authorizerAccessTokenKey, appId), expiresInSeconds - 200, authorizerAccessToken);
} }
} }


@Override @Override
public String getJsapiTicket(String appId){
public String getJsapiTicket(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.get(getKey(jsapiTicketKey, appId)); return jedis.get(getKey(jsapiTicketKey, appId));
} }
} }


@Override @Override
public boolean isJsapiTicketExpired(String appId){
public boolean isJsapiTicketExpired(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.ttl(getKey(jsapiTicketKey, appId)) < 2; return jedis.ttl(getKey(jsapiTicketKey, appId)) < 2;
} }
} }

@Override @Override
public void expireJsapiTicket(String appId){
public void expireJsapiTicket(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.expire(getKey(jsapiTicketKey, appId), 0); jedis.expire(getKey(jsapiTicketKey, appId), 0);
} }
} }

@Override @Override
public void updateJsapiTicket(String appId, String jsapiTicket, int expiresInSeconds){
public void updateJsapiTicket(String appId, String jsapiTicket, int expiresInSeconds) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.setex(getKey(jsapiTicketKey, appId), expiresInSeconds - 200, jsapiTicket); jedis.setex(getKey(jsapiTicketKey, appId), expiresInSeconds - 200, jsapiTicket);
} }
} }


@Override @Override
public String getCardApiTicket(String appId){
public String getCardApiTicket(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.get(getKey(jsapiTicketKey, appId)); return jedis.get(getKey(jsapiTicketKey, appId));
} }
} }

@Override @Override
public boolean isCardApiTicketExpired(String appId){
public boolean isCardApiTicketExpired(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
return jedis.ttl(getKey(cardApiTicket, appId)) < 2; return jedis.ttl(getKey(cardApiTicket, appId)) < 2;
} }
} }

@Override @Override
public void expireCardApiTicket(String appId){
public void expireCardApiTicket(String appId) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.expire(getKey(cardApiTicket, appId), 0); jedis.expire(getKey(cardApiTicket, appId), 0);
} }
} }

@Override @Override
public void updateCardApiTicket(String appId, String cardApiTicket, int expiresInSeconds){
public void updateCardApiTicket(String appId, String cardApiTicket, int expiresInSeconds) {
try (Jedis jedis = this.jedisPool.getResource()) { try (Jedis jedis = this.jedisPool.getResource()) {
jedis.setex(getKey(cardApiTicket, appId), expiresInSeconds - 200, cardApiTicket); jedis.setex(getKey(cardApiTicket, appId), expiresInSeconds - 200, cardApiTicket);
} }


+ 5
- 2
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java View File

@@ -13,15 +13,18 @@ public class WxOpenMpServiceImpl extends WxMpServiceImpl {
private WxOpenComponentService wxOpenComponentService; private WxOpenComponentService wxOpenComponentService;
private WxMpConfigStorage wxMpConfigStorage; private WxMpConfigStorage wxMpConfigStorage;
private String appId; private String appId;
public WxOpenMpServiceImpl(WxOpenComponentService wxOpenComponentService, String appId, WxMpConfigStorage wxMpConfigStorage){

public WxOpenMpServiceImpl(WxOpenComponentService wxOpenComponentService, String appId, WxMpConfigStorage wxMpConfigStorage) {
this.wxOpenComponentService = wxOpenComponentService; this.wxOpenComponentService = wxOpenComponentService;
this.appId = appId; this.appId = appId;
this.wxMpConfigStorage = wxMpConfigStorage; this.wxMpConfigStorage = wxMpConfigStorage;
} }

@Override @Override
public WxMpConfigStorage getWxMpConfigStorage(){
public WxMpConfigStorage getWxMpConfigStorage() {
return wxMpConfigStorage; return wxMpConfigStorage;
} }

@Override @Override
public String getAccessToken(boolean forceRefresh) throws WxErrorException { public String getAccessToken(boolean forceRefresh) throws WxErrorException {
return wxOpenComponentService.getAuthorizerAccessToken(appId, forceRefresh); return wxOpenComponentService.getAuthorizerAccessToken(appId, forceRefresh);


+ 6
- 3
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceAbstractImpl.java View File

@@ -17,17 +17,20 @@ import java.io.IOException;
*/ */
public abstract class WxOpenServiceAbstractImpl<H, P> implements WxOpenService, RequestHttp<H, P> { public abstract class WxOpenServiceAbstractImpl<H, P> implements WxOpenService, RequestHttp<H, P> {
protected final Logger log = LoggerFactory.getLogger(this.getClass()); protected final Logger log = LoggerFactory.getLogger(this.getClass());
private WxOpenConfigStorage wxOpenConfigStorage;
protected WxOpenComponentService wxOpenComponentService = new WxOpenComponentServiceImpl(this); protected WxOpenComponentService wxOpenComponentService = new WxOpenComponentServiceImpl(this);
private WxOpenConfigStorage wxOpenConfigStorage;

@Override @Override
public WxOpenComponentService getWxOpenComponentService() { public WxOpenComponentService getWxOpenComponentService() {
return wxOpenComponentService; return wxOpenComponentService;
} }

@Override @Override
public WxOpenConfigStorage getWxOpenConfigStorage(){
public WxOpenConfigStorage getWxOpenConfigStorage() {
return wxOpenConfigStorage; return wxOpenConfigStorage;
} }
public void setWxOpenConfigStorage(WxOpenConfigStorage wxOpenConfigStorage){

public void setWxOpenConfigStorage(WxOpenConfigStorage wxOpenConfigStorage) {
this.wxOpenConfigStorage = wxOpenConfigStorage; this.wxOpenConfigStorage = wxOpenConfigStorage;
} }




+ 2
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceApacheHttpClientImpl.java View File

@@ -10,9 +10,10 @@ import org.apache.http.impl.client.CloseableHttpClient;


/** /**
* apache-http方式实现 * apache-http方式实现
*
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
public class WxOpenServiceApacheHttpClientImpl extends WxOpenServiceAbstractImpl<CloseableHttpClient, HttpHost> {
public class WxOpenServiceApacheHttpClientImpl extends WxOpenServiceAbstractImpl<CloseableHttpClient, HttpHost> {
private CloseableHttpClient httpClient = DefaultApacheHttpClientBuilder.get().build(); private CloseableHttpClient httpClient = DefaultApacheHttpClientBuilder.get().build();
private HttpHost httpProxy = null; private HttpHost httpProxy = null;




+ 2
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/WxOpenAuthorizerAccessToken.java View File

@@ -7,7 +7,8 @@ import java.io.Serializable;
/** /**
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
public class WxOpenAuthorizerAccessToken implements Serializable{
public class WxOpenAuthorizerAccessToken implements Serializable {
private static final long serialVersionUID = -4069745419280727420L;


private String authorizerAccessToken; private String authorizerAccessToken;




+ 2
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/WxOpenComponentAccessToken.java View File

@@ -7,7 +7,8 @@ import java.io.Serializable;
/** /**
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
public class WxOpenComponentAccessToken implements Serializable{
public class WxOpenComponentAccessToken implements Serializable {
private static final long serialVersionUID = 2134550135400443725L;


private String componentAccessToken; private String componentAccessToken;




+ 3
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/auth/WxOpenAuthorizationInfo.java View File

@@ -9,7 +9,9 @@ import java.util.List;
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
@Data @Data
public class WxOpenAuthorizationInfo implements Serializable{
public class WxOpenAuthorizationInfo implements Serializable {
private static final long serialVersionUID = -8713680081354754208L;

private String authorizerAppid; private String authorizerAppid;
private String authorizerAccessToken; private String authorizerAccessToken;
private int expiresIn; private int expiresIn;


+ 3
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/auth/WxOpenAuthorizerInfo.java View File

@@ -9,7 +9,9 @@ import java.util.Map;
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
@Data @Data
public class WxOpenAuthorizerInfo implements Serializable{
public class WxOpenAuthorizerInfo implements Serializable {
private static final long serialVersionUID = -5327886953416394738L;

private String nickName; private String nickName;
private String headImg; private String headImg;
private Integer serviceTypeInfo; private Integer serviceTypeInfo;


+ 5
- 2
weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/message/WxOpenXmlMessage.java View File

@@ -19,7 +19,9 @@ import java.io.Serializable;
*/ */
@XStreamAlias("xml") @XStreamAlias("xml")
@Data @Data
public class WxOpenXmlMessage implements Serializable{
public class WxOpenXmlMessage implements Serializable {
private static final long serialVersionUID = -5641769554709507771L;

@XStreamAlias("AppId") @XStreamAlias("AppId")
@XStreamConverter(value = XStreamCDataConverter.class) @XStreamConverter(value = XStreamCDataConverter.class)
private String appId; private String appId;
@@ -78,6 +80,7 @@ public class WxOpenXmlMessage implements Serializable{
encryptedXml); encryptedXml);
return fromXml(plainText); return fromXml(plainText);
} }

public static WxMpXmlMessage fromEncryptedMpXml(String encryptedXml, public static WxMpXmlMessage fromEncryptedMpXml(String encryptedXml,
WxOpenConfigStorage wxOpenConfigStorage, String timestamp, String nonce, WxOpenConfigStorage wxOpenConfigStorage, String timestamp, String nonce,
String msgSignature) { String msgSignature) {
@@ -89,7 +92,7 @@ public class WxOpenXmlMessage implements Serializable{


public static WxOpenXmlMessage fromEncryptedXml(InputStream is, public static WxOpenXmlMessage fromEncryptedXml(InputStream is,
WxOpenConfigStorage wxOpenConfigStorage, String timestamp, String nonce, WxOpenConfigStorage wxOpenConfigStorage, String timestamp, String nonce,
String msgSignature) {
String msgSignature) {
try { try {
return fromEncryptedXml(IOUtils.toString(is, "UTF-8"), wxOpenConfigStorage, return fromEncryptedXml(IOUtils.toString(is, "UTF-8"), wxOpenConfigStorage,
timestamp, nonce, msgSignature); timestamp, nonce, msgSignature);


+ 3
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerInfoResult.java View File

@@ -10,7 +10,9 @@ import java.io.Serializable;
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
@Data @Data
public class WxOpenAuthorizerInfoResult implements Serializable{
public class WxOpenAuthorizerInfoResult implements Serializable {
private static final long serialVersionUID = 3166298050833019785L;

private WxOpenAuthorizationInfo authorizationInfo; private WxOpenAuthorizationInfo authorizationInfo;
private WxOpenAuthorizerInfo authorizerInfo; private WxOpenAuthorizerInfo authorizerInfo;
} }

+ 3
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerOptionResult.java View File

@@ -8,7 +8,9 @@ import java.io.Serializable;
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
@Data @Data
public class WxOpenAuthorizerOptionResult implements Serializable{
public class WxOpenAuthorizerOptionResult implements Serializable {
private static final long serialVersionUID = 4477837353654658179L;

String authorizerAppid; String authorizerAppid;
String optionName; String optionName;
String optionValue; String optionValue;


+ 3
- 1
weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenQueryAuthResult.java View File

@@ -9,6 +9,8 @@ import java.io.Serializable;
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */
@Data @Data
public class WxOpenQueryAuthResult implements Serializable{
public class WxOpenQueryAuthResult implements Serializable {
private static final long serialVersionUID = 2394736235020206855L;

private WxOpenAuthorizationInfo authorizationInfo; private WxOpenAuthorizationInfo authorizationInfo;
} }

+ 1
- 0
weixin-java-open/src/main/java/me/chanjar/weixin/open/util/WxOpenCryptUtil.java View File

@@ -2,6 +2,7 @@ package me.chanjar.weixin.open.util;


import me.chanjar.weixin.open.api.WxOpenConfigStorage; import me.chanjar.weixin.open.api.WxOpenConfigStorage;
import org.apache.commons.codec.binary.Base64; import org.apache.commons.codec.binary.Base64;

/** /**
* @author <a href="https://github.com/007gzs">007</a> * @author <a href="https://github.com/007gzs">007</a>
*/ */


+ 5
- 5
weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizationInfoGsonAdapter.java View File

@@ -22,18 +22,18 @@ public class WxOpenAuthorizationInfoGsonAdapter implements JsonDeserializer<WxOp
authorizationInfo.setAuthorizerRefreshToken(GsonHelper.getString(jsonObject, "authorizer_refresh_token")); authorizationInfo.setAuthorizerRefreshToken(GsonHelper.getString(jsonObject, "authorizer_refresh_token"));
List<Integer> funcInfo = new ArrayList<>(); List<Integer> funcInfo = new ArrayList<>();
JsonArray jsonArray = GsonHelper.getAsJsonArray(jsonObject.get("func_info")); JsonArray jsonArray = GsonHelper.getAsJsonArray(jsonObject.get("func_info"));
if(jsonArray != null && !jsonArray.isJsonNull()){
for(int i = 0; i < jsonArray.size(); i++){
if (jsonArray != null && !jsonArray.isJsonNull()) {
for (int i = 0; i < jsonArray.size(); i++) {
jsonObject = jsonArray.get(i).getAsJsonObject(); jsonObject = jsonArray.get(i).getAsJsonObject();
if(jsonObject == null || jsonObject.isJsonNull()){
if (jsonObject == null || jsonObject.isJsonNull()) {
continue; continue;
} }
jsonObject = jsonObject.getAsJsonObject("funcscope_category"); jsonObject = jsonObject.getAsJsonObject("funcscope_category");
if(jsonObject == null || jsonObject.isJsonNull()){
if (jsonObject == null || jsonObject.isJsonNull()) {
continue; continue;
} }
Integer id = GsonHelper.getInteger(jsonObject, "id"); Integer id = GsonHelper.getInteger(jsonObject, "id");
if(id == null) {
if (id == null) {
continue; continue;
} }
funcInfo.add(id); funcInfo.add(id);


+ 2
- 2
weixin-java-open/src/main/java/me/chanjar/weixin/open/util/json/WxOpenAuthorizerInfoGsonAdapter.java View File

@@ -23,10 +23,10 @@ public class WxOpenAuthorizerInfoGsonAdapter implements JsonDeserializer<WxOpenA
authorizationInfo.setPrincipalName(GsonHelper.getString(jsonObject, "principal_name")); authorizationInfo.setPrincipalName(GsonHelper.getString(jsonObject, "principal_name"));
authorizationInfo.setAlias(GsonHelper.getString(jsonObject, "alias")); authorizationInfo.setAlias(GsonHelper.getString(jsonObject, "alias"));
authorizationInfo.setQrcodeUrl(GsonHelper.getString(jsonObject, "qrcode_url")); authorizationInfo.setQrcodeUrl(GsonHelper.getString(jsonObject, "qrcode_url"));
if(jsonObject.has("service_type_info")) {
if (jsonObject.has("service_type_info")) {
authorizationInfo.setServiceTypeInfo(GsonHelper.getInteger(jsonObject.getAsJsonObject("service_type_info"), "id")); authorizationInfo.setServiceTypeInfo(GsonHelper.getInteger(jsonObject.getAsJsonObject("service_type_info"), "id"));
} }
if(jsonObject.has("verify_type_info")) {
if (jsonObject.has("verify_type_info")) {
authorizationInfo.setVerifyTypeInfo(GsonHelper.getInteger(jsonObject.getAsJsonObject("verify_type_info"), "id")); authorizationInfo.setVerifyTypeInfo(GsonHelper.getInteger(jsonObject.getAsJsonObject("verify_type_info"), "id"));
} }
Map<String, Integer> businessInfo = WxOpenGsonBuilder.create().fromJson(jsonObject.get("business_info"), Map<String, Integer> businessInfo = WxOpenGsonBuilder.create().fromJson(jsonObject.get("business_info"),


Loading…
Cancel
Save