@@ -34,6 +34,7 @@ public interface WxOpenComponentService { | |||
* 刷新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"; | |||
WxMpService getWxMpServiceByAppid(String appid); | |||
WxOpenConfigStorage getWxOpenConfigStorage(); | |||
@@ -9,29 +9,39 @@ import me.chanjar.weixin.open.bean.WxOpenComponentAccessToken; | |||
*/ | |||
public interface WxOpenConfigStorage { | |||
String getComponentAppId(); | |||
void setComponentAppId(String componentAppId); | |||
String getComponentAppSecret(); | |||
void setComponentAppSecret(String componentAppSecret); | |||
String getComponentToken(); | |||
void setComponentToken(String componentToken); | |||
String getComponentAesKey(); | |||
void setComponentAesKey(String componentAesKey); | |||
String getComponentAppId(); | |||
String getComponentAppSecret(); | |||
String getComponentToken(); | |||
String getComponentAesKey(); | |||
String getComponentVerifyTicket(); | |||
void setComponentVerifyTicket(String componentVerifyTicket); | |||
String getComponentAccessToken(); | |||
boolean isComponentAccessTokenExpired(); | |||
void updateComponentAccessTokent(WxOpenComponentAccessToken componentAccessToken); | |||
WxMpConfigStorage getWxMpConfigStorage(String appId); | |||
/** | |||
* 应该是线程安全的 | |||
* | |||
* @param componentAccessToken 新的accessToken值 | |||
* @param expiresInSeconds 过期时间,以秒为单位 | |||
* @param componentAccessToken 新的accessToken值 | |||
* @param expiresInSeconds 过期时间,以秒为单位 | |||
*/ | |||
void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds); | |||
@@ -42,7 +52,9 @@ public interface WxOpenConfigStorage { | |||
String getAuthorizerRefreshToken(String appId); | |||
void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken); | |||
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); | |||
@@ -7,8 +7,11 @@ import me.chanjar.weixin.common.exception.WxErrorException; | |||
*/ | |||
public interface WxOpenService { | |||
WxOpenComponentService getWxOpenComponentService(); | |||
WxOpenConfigStorage getWxOpenConfigStorage(); | |||
void setWxOpenConfigStorage(WxOpenConfigStorage wxOpenConfigStorage); | |||
/** | |||
* 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求 | |||
*/ | |||
@@ -30,9 +30,9 @@ import java.util.Map; | |||
* @author <a href="https://github.com/007gzs">007</a> | |||
*/ | |||
public class WxOpenComponentServiceImpl implements WxOpenComponentService { | |||
private static final Map<String, WxMpService> wxOpenMpServiceMap = new Hashtable<>(); | |||
protected final Logger log = LoggerFactory.getLogger(this.getClass()); | |||
private WxOpenService wxOpenService; | |||
private static final Map<String, WxMpService> wxOpenMpServiceMap = new Hashtable<>(); | |||
public WxOpenComponentServiceImpl(WxOpenService wxOpenService) { | |||
this.wxOpenService = wxOpenService; | |||
@@ -62,6 +62,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { | |||
public WxOpenConfigStorage getWxOpenConfigStorage() { | |||
return wxOpenService.getWxOpenConfigStorage(); | |||
} | |||
@Override | |||
public boolean checkSignature(String timestamp, String nonce, String signature) { | |||
try { | |||
@@ -72,6 +73,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { | |||
return false; | |||
} | |||
} | |||
@Override | |||
public String getComponentAccessToken(boolean forceRefresh) throws WxErrorException { | |||
@@ -137,6 +139,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { | |||
} | |||
return null; | |||
} | |||
@Override | |||
public WxOpenQueryAuthResult getQueryAuth(String authorizationCode) throws WxErrorException { | |||
JsonObject jsonObject = new JsonObject(); | |||
@@ -145,6 +148,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { | |||
String responseContent = post(API_QUERY_AUTH_URL, jsonObject.toString()); | |||
return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenQueryAuthResult.class); | |||
} | |||
@Override | |||
public WxOpenAuthorizerInfoResult getAuthorizerInfo(String authorizerAppid) throws WxErrorException { | |||
JsonObject jsonObject = new JsonObject(); | |||
@@ -163,6 +167,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { | |||
String responseContent = post(API_GET_AUTHORIZER_OPTION_URL, jsonObject.toString()); | |||
return WxOpenGsonBuilder.create().fromJson(responseContent, WxOpenAuthorizerOptionResult.class); | |||
} | |||
@Override | |||
public WxError setAuthorizerOption(String authorizerAppid, String optionName, String optionValue) throws WxErrorException { | |||
JsonObject jsonObject = new JsonObject(); | |||
@@ -35,25 +35,13 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage { | |||
private Map<String, Token> cardApiTickets = new Hashtable<>(); | |||
@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 | |||
public String getComponentAppId() { | |||
return componentAppId; | |||
public void setComponentAppId(String componentAppId) { | |||
this.componentAppId = componentAppId; | |||
} | |||
@Override | |||
@@ -61,16 +49,31 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage { | |||
return componentAppSecret; | |||
} | |||
@Override | |||
public void setComponentAppSecret(String componentAppSecret) { | |||
this.componentAppSecret = componentAppSecret; | |||
} | |||
@Override | |||
public String getComponentToken() { | |||
return componentToken; | |||
} | |||
@Override | |||
public void setComponentToken(String componentToken) { | |||
this.componentToken = componentToken; | |||
} | |||
@Override | |||
public String getComponentAesKey() { | |||
return componentAesKey; | |||
} | |||
@Override | |||
public void setComponentAesKey(String componentAesKey) { | |||
this.componentAesKey = componentAesKey; | |||
} | |||
@Override | |||
public String getComponentVerifyTicket() { | |||
return componentVerifyTicket; | |||
@@ -111,30 +114,34 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage { | |||
public boolean autoRefreshToken() { | |||
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); | |||
if(token == null || (token.expiresTime != null && System.currentTimeMillis() > token.expiresTime)){ | |||
if (token == null || (token.expiresTime != null && System.currentTimeMillis() > token.expiresTime)) { | |||
return null; | |||
} | |||
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); | |||
if(token != null){ | |||
if (token != null) { | |||
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); | |||
if(token == null){ | |||
if (token == null) { | |||
token = new Token(); | |||
map.put(key, token); | |||
} | |||
token.token = tokenString; | |||
if(expiresInSeconds != null) { | |||
if (expiresInSeconds != null) { | |||
token.expiresTime = System.currentTimeMillis() + (expiresInSeconds - 200) * 1000L; | |||
} | |||
} | |||
@Override | |||
public String getAuthorizerRefreshToken(String appId) { | |||
return getTokenString(authorizerRefreshTokens, appId); | |||
@@ -211,22 +218,21 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage { | |||
updateToken(cardApiTickets, appId, cardApiTicket, expiresInSeconds); | |||
} | |||
private static class Token{ | |||
private static class Token { | |||
private String token; | |||
private Long expiresTime; | |||
} | |||
private static class WxOpenMpConfigStorage implements WxMpConfigStorage{ | |||
private static class WxOpenMpConfigStorage implements WxMpConfigStorage { | |||
private WxOpenConfigStorage wxOpenConfigStorage; | |||
private String appId; | |||
private WxOpenMpConfigStorage(WxOpenConfigStorage wxOpenConfigStorage, String appId){ | |||
this.wxOpenConfigStorage = wxOpenConfigStorage; | |||
this.appId = appId; | |||
} | |||
private Lock accessTokenLock = new ReentrantLock(); | |||
private Lock jsapiTicketLock = new ReentrantLock(); | |||
private Lock cardApiTicketLock = new ReentrantLock(); | |||
private WxOpenMpConfigStorage(WxOpenConfigStorage wxOpenConfigStorage, String appId) { | |||
this.wxOpenConfigStorage = wxOpenConfigStorage; | |||
this.appId = appId; | |||
} | |||
@Override | |||
public String getAccessToken() { | |||
@@ -24,6 +24,7 @@ public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage { | |||
private String authorizerAccessTokenKey; | |||
private String jsapiTicketKey; | |||
private String cardApiTicket; | |||
public WxOpenInRedisConfigStorage(JedisPool jedisPool) { | |||
this.jedisPool = jedisPool; | |||
} | |||
@@ -38,54 +39,62 @@ public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage { | |||
jsapiTicketKey = JSAPI_TICKET_KEY.concat(componentAppId); | |||
cardApiTicket = CARD_API_TICKET_KEY.concat(componentAppId); | |||
} | |||
@Override | |||
public String getComponentVerifyTicket(){ | |||
try(Jedis jedis = jedisPool.getResource()){ | |||
public String getComponentVerifyTicket() { | |||
try (Jedis jedis = jedisPool.getResource()) { | |||
return jedis.get(componentVerifyTicketKey); | |||
} | |||
} | |||
@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); | |||
} | |||
} | |||
@Override | |||
public String getComponentAccessToken(){ | |||
try(Jedis jedis = jedisPool.getResource()){ | |||
public String getComponentAccessToken() { | |||
try (Jedis jedis = jedisPool.getResource()) { | |||
return jedis.get(componentAccessTokenKey); | |||
} | |||
} | |||
@Override | |||
public boolean isComponentAccessTokenExpired(){ | |||
try(Jedis jedis = jedisPool.getResource()){ | |||
public boolean isComponentAccessTokenExpired() { | |||
try (Jedis jedis = jedisPool.getResource()) { | |||
return jedis.ttl(componentAccessTokenKey) < 2; | |||
} | |||
} | |||
@Override | |||
public void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds){ | |||
public void updateComponentAccessTokent(String componentAccessToken, int expiresInSeconds) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
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); | |||
} | |||
@Override | |||
public String getAuthorizerRefreshToken(String appId){ | |||
public String getAuthorizerRefreshToken(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
return jedis.get(getKey(authorizerRefreshTokenKey, appId)); | |||
} | |||
} | |||
@Override | |||
public void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken){ | |||
public void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
jedis.set(getKey(authorizerRefreshTokenKey, appId), authorizerRefreshToken); | |||
} | |||
} | |||
@Override | |||
public String getAuthorizerAccessToken(String appId){ | |||
public String getAuthorizerAccessToken(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
return jedis.get(getKey(authorizerAccessTokenKey, appId)); | |||
} | |||
@@ -93,70 +102,77 @@ public class WxOpenInRedisConfigStorage extends WxOpenInMemoryConfigStorage { | |||
@Override | |||
public boolean isAuthorizerAccessTokenExpired(String appId){ | |||
public boolean isAuthorizerAccessTokenExpired(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
return jedis.ttl(getKey(authorizerAccessTokenKey, appId)) < 2; | |||
} | |||
} | |||
@Override | |||
public void expireAuthorizerAccessToken(String appId){ | |||
public void expireAuthorizerAccessToken(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
jedis.expire(getKey(authorizerAccessTokenKey, appId), 0); | |||
} | |||
} | |||
@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()) { | |||
jedis.setex(getKey(authorizerAccessTokenKey, appId), expiresInSeconds - 200, authorizerAccessToken); | |||
} | |||
} | |||
@Override | |||
public String getJsapiTicket(String appId){ | |||
public String getJsapiTicket(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
return jedis.get(getKey(jsapiTicketKey, appId)); | |||
} | |||
} | |||
@Override | |||
public boolean isJsapiTicketExpired(String appId){ | |||
public boolean isJsapiTicketExpired(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
return jedis.ttl(getKey(jsapiTicketKey, appId)) < 2; | |||
} | |||
} | |||
@Override | |||
public void expireJsapiTicket(String appId){ | |||
public void expireJsapiTicket(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
jedis.expire(getKey(jsapiTicketKey, appId), 0); | |||
} | |||
} | |||
@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()) { | |||
jedis.setex(getKey(jsapiTicketKey, appId), expiresInSeconds - 200, jsapiTicket); | |||
} | |||
} | |||
@Override | |||
public String getCardApiTicket(String appId){ | |||
public String getCardApiTicket(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
return jedis.get(getKey(jsapiTicketKey, appId)); | |||
} | |||
} | |||
@Override | |||
public boolean isCardApiTicketExpired(String appId){ | |||
public boolean isCardApiTicketExpired(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
return jedis.ttl(getKey(cardApiTicket, appId)) < 2; | |||
} | |||
} | |||
@Override | |||
public void expireCardApiTicket(String appId){ | |||
public void expireCardApiTicket(String appId) { | |||
try (Jedis jedis = this.jedisPool.getResource()) { | |||
jedis.expire(getKey(cardApiTicket, appId), 0); | |||
} | |||
} | |||
@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()) { | |||
jedis.setex(getKey(cardApiTicket, appId), expiresInSeconds - 200, cardApiTicket); | |||
} | |||
@@ -13,15 +13,18 @@ public class WxOpenMpServiceImpl extends WxMpServiceImpl { | |||
private WxOpenComponentService wxOpenComponentService; | |||
private WxMpConfigStorage wxMpConfigStorage; | |||
private String appId; | |||
public WxOpenMpServiceImpl(WxOpenComponentService wxOpenComponentService, String appId, WxMpConfigStorage wxMpConfigStorage){ | |||
public WxOpenMpServiceImpl(WxOpenComponentService wxOpenComponentService, String appId, WxMpConfigStorage wxMpConfigStorage) { | |||
this.wxOpenComponentService = wxOpenComponentService; | |||
this.appId = appId; | |||
this.wxMpConfigStorage = wxMpConfigStorage; | |||
} | |||
@Override | |||
public WxMpConfigStorage getWxMpConfigStorage(){ | |||
public WxMpConfigStorage getWxMpConfigStorage() { | |||
return wxMpConfigStorage; | |||
} | |||
@Override | |||
public String getAccessToken(boolean forceRefresh) throws WxErrorException { | |||
return wxOpenComponentService.getAuthorizerAccessToken(appId, forceRefresh); | |||
@@ -17,17 +17,20 @@ import java.io.IOException; | |||
*/ | |||
public abstract class WxOpenServiceAbstractImpl<H, P> implements WxOpenService, RequestHttp<H, P> { | |||
protected final Logger log = LoggerFactory.getLogger(this.getClass()); | |||
private WxOpenConfigStorage wxOpenConfigStorage; | |||
protected WxOpenComponentService wxOpenComponentService = new WxOpenComponentServiceImpl(this); | |||
private WxOpenConfigStorage wxOpenConfigStorage; | |||
@Override | |||
public WxOpenComponentService getWxOpenComponentService() { | |||
return wxOpenComponentService; | |||
} | |||
@Override | |||
public WxOpenConfigStorage getWxOpenConfigStorage(){ | |||
public WxOpenConfigStorage getWxOpenConfigStorage() { | |||
return wxOpenConfigStorage; | |||
} | |||
public void setWxOpenConfigStorage(WxOpenConfigStorage wxOpenConfigStorage){ | |||
public void setWxOpenConfigStorage(WxOpenConfigStorage wxOpenConfigStorage) { | |||
this.wxOpenConfigStorage = wxOpenConfigStorage; | |||
} | |||
@@ -10,9 +10,10 @@ import org.apache.http.impl.client.CloseableHttpClient; | |||
/** | |||
* apache-http方式实现 | |||
* | |||
* @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 HttpHost httpProxy = null; | |||
@@ -7,7 +7,8 @@ import java.io.Serializable; | |||
/** | |||
* @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; | |||
@@ -7,7 +7,8 @@ import java.io.Serializable; | |||
/** | |||
* @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; | |||
@@ -9,7 +9,9 @@ import java.util.List; | |||
* @author <a href="https://github.com/007gzs">007</a> | |||
*/ | |||
@Data | |||
public class WxOpenAuthorizationInfo implements Serializable{ | |||
public class WxOpenAuthorizationInfo implements Serializable { | |||
private static final long serialVersionUID = -8713680081354754208L; | |||
private String authorizerAppid; | |||
private String authorizerAccessToken; | |||
private int expiresIn; | |||
@@ -9,7 +9,9 @@ import java.util.Map; | |||
* @author <a href="https://github.com/007gzs">007</a> | |||
*/ | |||
@Data | |||
public class WxOpenAuthorizerInfo implements Serializable{ | |||
public class WxOpenAuthorizerInfo implements Serializable { | |||
private static final long serialVersionUID = -5327886953416394738L; | |||
private String nickName; | |||
private String headImg; | |||
private Integer serviceTypeInfo; | |||
@@ -19,7 +19,9 @@ import java.io.Serializable; | |||
*/ | |||
@XStreamAlias("xml") | |||
@Data | |||
public class WxOpenXmlMessage implements Serializable{ | |||
public class WxOpenXmlMessage implements Serializable { | |||
private static final long serialVersionUID = -5641769554709507771L; | |||
@XStreamAlias("AppId") | |||
@XStreamConverter(value = XStreamCDataConverter.class) | |||
private String appId; | |||
@@ -78,6 +80,7 @@ public class WxOpenXmlMessage implements Serializable{ | |||
encryptedXml); | |||
return fromXml(plainText); | |||
} | |||
public static WxMpXmlMessage fromEncryptedMpXml(String encryptedXml, | |||
WxOpenConfigStorage wxOpenConfigStorage, String timestamp, String nonce, | |||
String msgSignature) { | |||
@@ -89,7 +92,7 @@ public class WxOpenXmlMessage implements Serializable{ | |||
public static WxOpenXmlMessage fromEncryptedXml(InputStream is, | |||
WxOpenConfigStorage wxOpenConfigStorage, String timestamp, String nonce, | |||
String msgSignature) { | |||
String msgSignature) { | |||
try { | |||
return fromEncryptedXml(IOUtils.toString(is, "UTF-8"), wxOpenConfigStorage, | |||
timestamp, nonce, msgSignature); | |||
@@ -10,7 +10,9 @@ import java.io.Serializable; | |||
* @author <a href="https://github.com/007gzs">007</a> | |||
*/ | |||
@Data | |||
public class WxOpenAuthorizerInfoResult implements Serializable{ | |||
public class WxOpenAuthorizerInfoResult implements Serializable { | |||
private static final long serialVersionUID = 3166298050833019785L; | |||
private WxOpenAuthorizationInfo authorizationInfo; | |||
private WxOpenAuthorizerInfo authorizerInfo; | |||
} |
@@ -8,7 +8,9 @@ import java.io.Serializable; | |||
* @author <a href="https://github.com/007gzs">007</a> | |||
*/ | |||
@Data | |||
public class WxOpenAuthorizerOptionResult implements Serializable{ | |||
public class WxOpenAuthorizerOptionResult implements Serializable { | |||
private static final long serialVersionUID = 4477837353654658179L; | |||
String authorizerAppid; | |||
String optionName; | |||
String optionValue; | |||
@@ -9,6 +9,8 @@ import java.io.Serializable; | |||
* @author <a href="https://github.com/007gzs">007</a> | |||
*/ | |||
@Data | |||
public class WxOpenQueryAuthResult implements Serializable{ | |||
public class WxOpenQueryAuthResult implements Serializable { | |||
private static final long serialVersionUID = 2394736235020206855L; | |||
private WxOpenAuthorizationInfo authorizationInfo; | |||
} |
@@ -2,6 +2,7 @@ package me.chanjar.weixin.open.util; | |||
import me.chanjar.weixin.open.api.WxOpenConfigStorage; | |||
import org.apache.commons.codec.binary.Base64; | |||
/** | |||
* @author <a href="https://github.com/007gzs">007</a> | |||
*/ | |||
@@ -22,18 +22,18 @@ public class WxOpenAuthorizationInfoGsonAdapter implements JsonDeserializer<WxOp | |||
authorizationInfo.setAuthorizerRefreshToken(GsonHelper.getString(jsonObject, "authorizer_refresh_token")); | |||
List<Integer> funcInfo = new ArrayList<>(); | |||
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(); | |||
if(jsonObject == null || jsonObject.isJsonNull()){ | |||
if (jsonObject == null || jsonObject.isJsonNull()) { | |||
continue; | |||
} | |||
jsonObject = jsonObject.getAsJsonObject("funcscope_category"); | |||
if(jsonObject == null || jsonObject.isJsonNull()){ | |||
if (jsonObject == null || jsonObject.isJsonNull()) { | |||
continue; | |||
} | |||
Integer id = GsonHelper.getInteger(jsonObject, "id"); | |||
if(id == null) { | |||
if (id == null) { | |||
continue; | |||
} | |||
funcInfo.add(id); | |||
@@ -23,10 +23,10 @@ public class WxOpenAuthorizerInfoGsonAdapter implements JsonDeserializer<WxOpenA | |||
authorizationInfo.setPrincipalName(GsonHelper.getString(jsonObject, "principal_name")); | |||
authorizationInfo.setAlias(GsonHelper.getString(jsonObject, "alias")); | |||
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")); | |||
} | |||
if(jsonObject.has("verify_type_info")) { | |||
if (jsonObject.has("verify_type_info")) { | |||
authorizationInfo.setVerifyTypeInfo(GsonHelper.getInteger(jsonObject.getAsJsonObject("verify_type_info"), "id")); | |||
} | |||
Map<String, Integer> businessInfo = WxOpenGsonBuilder.create().fromJson(jsonObject.get("business_info"), | |||