mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-09-20 02:29:44 +08:00
格式化开放平台模块代码
This commit is contained in:
@@ -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();
|
||||||
|
@@ -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 componentAccessToken 新的accessToken值
|
||||||
* @param expiresInSeconds 过期时间,以秒为单位
|
* @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 authorizerAccessToken 新的accessToken值
|
||||||
* @param expiresInSeconds 过期时间,以秒为单位
|
* @param expiresInSeconds 过期时间,以秒为单位
|
||||||
*/
|
*/
|
||||||
void updateAuthorizerAccessToken(String appId, String authorizerAccessToken, int expiresInSeconds);
|
void updateAuthorizerAccessToken(String appId, String authorizerAccessToken, int expiresInSeconds);
|
||||||
|
|
||||||
|
@@ -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请求
|
||||||
*/
|
*/
|
||||||
|
@@ -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();
|
||||||
|
@@ -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) {
|
public String getComponentAppId() {
|
||||||
this.componentAppId = componentAppId;
|
return 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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getComponentAppId() {
|
public void setComponentAppId(String componentAppId) {
|
||||||
return 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() {
|
||||||
|
@@ -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(){
|
public String getComponentVerifyTicket() {
|
||||||
try(Jedis jedis = jedisPool.getResource()){
|
try (Jedis jedis = jedisPool.getResource()) {
|
||||||
return jedis.get(componentVerifyTicketKey);
|
return jedis.get(componentVerifyTicketKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void setComponentVerifyTicket(String componentVerifyTicket){
|
public void setComponentVerifyTicket(String componentVerifyTicket) {
|
||||||
try(Jedis jedis = jedisPool.getResource()){
|
try (Jedis jedis = jedisPool.getResource()) {
|
||||||
jedis.set(componentVerifyTicketKey, componentVerifyTicket);
|
jedis.set(componentVerifyTicketKey, componentVerifyTicket);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getComponentAccessToken(){
|
public String getComponentAccessToken() {
|
||||||
try(Jedis jedis = jedisPool.getResource()){
|
try (Jedis jedis = jedisPool.getResource()) {
|
||||||
return jedis.get(componentAccessTokenKey);
|
return jedis.get(componentAccessTokenKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isComponentAccessTokenExpired(){
|
public boolean isComponentAccessTokenExpired() {
|
||||||
try(Jedis jedis = jedisPool.getResource()){
|
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);
|
||||||
}
|
}
|
||||||
|
@@ -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);
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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);
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
}
|
}
|
||||||
|
@@ -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>
|
||||||
*/
|
*/
|
||||||
|
@@ -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()){
|
if (jsonArray != null && !jsonArray.isJsonNull()) {
|
||||||
for(int i = 0; i < jsonArray.size(); i++){
|
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);
|
||||||
|
@@ -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"),
|
||||||
|
Reference in New Issue
Block a user