| @@ -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"), | |||