From 9188ceaca292b7c5eb528b43deae4aa7fb6e9c43 Mon Sep 17 00:00:00 2001 From: Binary Wang Date: Sat, 3 Mar 2018 17:40:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E5=8C=96=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=EF=BC=8C=E5=B9=B6=E6=B8=85=E7=90=86=E6=97=A0=E7=94=A8=E4=BB=A3?= =?UTF-8?q?=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/open/api/WxOpenComponentService.java | 4 ++++ .../chanjar/weixin/open/api/WxOpenConfigStorage.java | 3 +-- .../open/api/impl/WxOpenComponentServiceImpl.java | 3 ++- .../open/api/impl/WxOpenInMemoryConfigStorage.java | 2 ++ .../weixin/open/api/impl/WxOpenMaServiceImpl.java | 3 --- .../weixin/open/api/impl/WxOpenMessageRouter.java | 2 ++ .../weixin/open/api/impl/WxOpenMpServiceImpl.java | 5 ----- .../open/api/impl/WxOpenServiceAbstractImpl.java | 12 ------------ .../weixin/open/bean/message/WxOpenXmlMessage.java | 2 +- .../open/bean/result/WxOpenAuthorizerInfoResult.java | 3 ++- 10 files changed, 14 insertions(+), 25 deletions(-) diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java index b5ac1058..d43bdb57 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenComponentService.java @@ -39,7 +39,9 @@ public interface WxOpenComponentService { String MINIAPP_JSCODE_2_SESSION = "https://api.weixin.qq.com/sns/component/jscode2session?appid=%s&js_code=%s&grant_type=authorization_code&component_appid=%s"; WxMpService getWxMpServiceByAppid(String appid); + WxMaService getWxMaServiceByAppid(String appid); + WxOpenConfigStorage getWxOpenConfigStorage(); boolean checkSignature(String timestamp, String nonce, String signature); @@ -52,6 +54,7 @@ public interface WxOpenComponentService { String getPreAuthUrl(String redirectURI) throws WxErrorException; String route(WxOpenXmlMessage wxMessage) throws WxErrorException; + /** * 使用授权码换取公众号或小程序的接口调用凭据和授权信息 */ @@ -81,6 +84,7 @@ public interface WxOpenComponentService { WxMpOAuth2AccessToken oauth2refreshAccessToken(String appid, String refreshToken) throws WxErrorException; String oauth2buildAuthorizationUrl(String appid, String redirectURI, String scope, String state); + WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException; } diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java index 57eccd13..07366475 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/WxOpenConfigStorage.java @@ -37,6 +37,7 @@ public interface WxOpenConfigStorage { void updateComponentAccessTokent(WxOpenComponentAccessToken componentAccessToken); WxMpConfigStorage getWxMpConfigStorage(String appId); + WxMaConfig getWxMaConfig(String appId); /** @@ -52,14 +53,12 @@ public interface WxOpenConfigStorage { */ boolean autoRefreshToken(); - String getAuthorizerRefreshToken(String appId); void setAuthorizerRefreshToken(String appId, String authorizerRefreshToken); String getAuthorizerAccessToken(String appId); - boolean isAuthorizerAccessTokenExpired(String appId); /** diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java index e7e070d5..dcab890d 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenComponentServiceImpl.java @@ -72,6 +72,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { } return wxMaService; } + public WxOpenService getWxOpenService() { return wxOpenService; } @@ -238,7 +239,7 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { } @Override - public WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException { + public WxMaJscode2SessionResult miniappJscode2Session(String appid, String jsCode, String appId) throws WxErrorException { String url = String.format(MINIAPP_JSCODE_2_SESSION, appId, jsCode, getWxOpenConfigStorage().getComponentAppId()); String responseContent = get(url); return WxMaJscode2SessionResult.fromJson(responseContent); diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java index c0c65270..9950482c 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenInMemoryConfigStorage.java @@ -228,12 +228,14 @@ public class WxOpenInMemoryConfigStorage implements WxOpenConfigStorage { private String token; private Long expiresTime; } + private static class WxOpenInnerConfigStorage implements WxMpConfigStorage, WxMaConfig { private WxOpenConfigStorage wxOpenConfigStorage; private String appId; private Lock accessTokenLock = new ReentrantLock(); private Lock jsapiTicketLock = new ReentrantLock(); private Lock cardApiTicketLock = new ReentrantLock(); + private WxOpenInnerConfigStorage(WxOpenConfigStorage wxOpenConfigStorage, String appId) { this.wxOpenConfigStorage = wxOpenConfigStorage; this.appId = appId; diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java index 1dc5f8ac..9e1a672d 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java @@ -3,9 +3,6 @@ package me.chanjar.weixin.open.api.impl; import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; import cn.binarywang.wx.miniapp.config.WxMaConfig; import me.chanjar.weixin.common.exception.WxErrorException; -import me.chanjar.weixin.mp.api.WxMpConfigStorage; -import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; -import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken; import me.chanjar.weixin.open.api.WxOpenComponentService; /** diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMessageRouter.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMessageRouter.java index 6bdc86a9..2e483fc0 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMessageRouter.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMessageRouter.java @@ -10,6 +10,7 @@ import java.util.Map; public class WxOpenMessageRouter extends WxMpMessageRouter { private WxOpenService wxOpenService; + public WxOpenMessageRouter(WxOpenService wxOpenService) { super(null); this.wxOpenService = wxOpenService; @@ -18,6 +19,7 @@ public class WxOpenMessageRouter extends WxMpMessageRouter { public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, String appId) { return route(wxMessage, new HashMap(), appId); } + public WxMpXmlOutMessage route(final WxMpXmlMessage wxMessage, final Map context, String appId) { return route(wxMessage, context, wxOpenService.getWxOpenComponentService().getWxMpServiceByAppid(appId)); } diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java index 9c537bc9..6c61b1fc 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMpServiceImpl.java @@ -36,11 +36,6 @@ import me.chanjar.weixin.open.api.WxOpenComponentService; return wxOpenComponentService.oauth2getAccessToken(appId, code); } -// @Override -// public boolean checkSignature(String timestamp, String nonce, String signature) { -// return wxOpenComponentService.checkSignature(appId, timestamp, nonce, signature); -// } - @Override public WxMpOAuth2AccessToken oauth2refreshAccessToken(String refreshToken) throws WxErrorException { return wxOpenComponentService.oauth2refreshAccessToken(appId, refreshToken); diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceAbstractImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceAbstractImpl.java index 6d8bf8ba..5ace633f 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceAbstractImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenServiceAbstractImpl.java @@ -42,18 +42,6 @@ public abstract class WxOpenServiceAbstractImpl implements WxOpenService, return result; } catch (WxErrorException e) { WxError error = e.getError(); -// /* -// * 发生以下情况时尝试刷新access_token -// * 40001 获取access_token时AppSecret错误,或者access_token无效 -// * 42001 access_token超时 -// * 40014 不合法的access_token,请开发者认真比对access_token的有效性(如是否过期),或查看是否正在为恰当的公众号调用接口 -// */ -// if (error.getErrorCode() == 42001 || error.getErrorCode() == 40001 || error.getErrorCode() == 40014) { -// // 强制设置wxCpConfigStorage它的access token过期了,这样在下一次请求里就会刷新access token -// this.configStorage.expireAccessToken(); -// return execute(executor, uri, data); -// } - if (error.getErrorCode() != 0) { this.log.error("\n【请求地址】: {}\n【请求参数】:{}\n【错误信息】:{}", uri, data, error); throw new WxErrorException(error, e); diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/message/WxOpenXmlMessage.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/message/WxOpenXmlMessage.java index 8cb245ba..ac42696a 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/message/WxOpenXmlMessage.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/message/WxOpenXmlMessage.java @@ -53,7 +53,7 @@ public class WxOpenXmlMessage implements Serializable { @XStreamConverter(value = XStreamCDataConverter.class) private String preAuthCode; - public static String wxMpOutXmlMessageToEncryptedXml(WxMpXmlOutMessage message, WxOpenConfigStorage wxOpenConfigStorage){ + public static String wxMpOutXmlMessageToEncryptedXml(WxMpXmlOutMessage message, WxOpenConfigStorage wxOpenConfigStorage) { String plainXml = message.toXml(); WxOpenCryptUtil pc = new WxOpenCryptUtil(wxOpenConfigStorage); return pc.encrypt(plainXml); diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerInfoResult.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerInfoResult.java index e7734a11..60dd065b 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerInfoResult.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/bean/result/WxOpenAuthorizerInfoResult.java @@ -15,7 +15,8 @@ public class WxOpenAuthorizerInfoResult implements Serializable { private WxOpenAuthorizationInfo authorizationInfo; private WxOpenAuthorizerInfo authorizerInfo; - public boolean isMiniProgram(){ + + public boolean isMiniProgram() { return authorizerInfo != null && authorizerInfo.getMiniProgramInfo() != null; } }