|
@@ -3,6 +3,7 @@ package me.chanjar.weixin.open.api.impl; |
|
|
import cn.binarywang.wx.miniapp.api.WxMaService; |
|
|
import cn.binarywang.wx.miniapp.api.WxMaService; |
|
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
|
|
import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; |
|
|
import com.google.gson.JsonObject; |
|
|
import com.google.gson.JsonObject; |
|
|
|
|
|
import me.chanjar.weixin.common.bean.result.WxError; |
|
|
import me.chanjar.weixin.common.exception.WxErrorException; |
|
|
import me.chanjar.weixin.common.exception.WxErrorException; |
|
|
import me.chanjar.weixin.common.util.crypto.SHA1; |
|
|
import me.chanjar.weixin.common.util.crypto.SHA1; |
|
|
import me.chanjar.weixin.common.util.http.URIUtil; |
|
|
import me.chanjar.weixin.common.util.http.URIUtil; |
|
@@ -112,13 +113,55 @@ public class WxOpenComponentServiceImpl implements WxOpenComponentService { |
|
|
private String post(String uri, String postData) throws WxErrorException { |
|
|
private String post(String uri, String postData) throws WxErrorException { |
|
|
String componentAccessToken = getComponentAccessToken(false); |
|
|
String componentAccessToken = getComponentAccessToken(false); |
|
|
String uriWithComponentAccessToken = uri + (uri.contains("?") ? "&" : "?") + "component_access_token=" + componentAccessToken; |
|
|
String uriWithComponentAccessToken = uri + (uri.contains("?") ? "&" : "?") + "component_access_token=" + componentAccessToken; |
|
|
return getWxOpenService().post(uriWithComponentAccessToken, postData); |
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
return getWxOpenService().post(uriWithComponentAccessToken, postData); |
|
|
|
|
|
}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) { |
|
|
|
|
|
// 强制设置wxMpConfigStorage它的access token过期了,这样在下一次请求里就会刷新access token |
|
|
|
|
|
this.getWxOpenConfigStorage().expireComponentAccessToken(); |
|
|
|
|
|
if (this.getWxOpenConfigStorage().autoRefreshToken()) { |
|
|
|
|
|
return this.post(uri, postData); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (error.getErrorCode() != 0) { |
|
|
|
|
|
throw new WxErrorException(error, e); |
|
|
|
|
|
} |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
private String get(String uri) throws WxErrorException { |
|
|
private String get(String uri) throws WxErrorException { |
|
|
String componentAccessToken = getComponentAccessToken(false); |
|
|
String componentAccessToken = getComponentAccessToken(false); |
|
|
String uriWithComponentAccessToken = uri + (uri.contains("?") ? "&" : "?") + "component_access_token=" + componentAccessToken; |
|
|
String uriWithComponentAccessToken = uri + (uri.contains("?") ? "&" : "?") + "component_access_token=" + componentAccessToken; |
|
|
return getWxOpenService().get(uriWithComponentAccessToken, null); |
|
|
|
|
|
|
|
|
try { |
|
|
|
|
|
return getWxOpenService().get(uriWithComponentAccessToken, null); |
|
|
|
|
|
}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) { |
|
|
|
|
|
// 强制设置wxMpConfigStorage它的access token过期了,这样在下一次请求里就会刷新access token |
|
|
|
|
|
this.getWxOpenConfigStorage().expireComponentAccessToken(); |
|
|
|
|
|
if (this.getWxOpenConfigStorage().autoRefreshToken()) { |
|
|
|
|
|
return this.get(uri); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if (error.getErrorCode() != 0) { |
|
|
|
|
|
throw new WxErrorException(error, e); |
|
|
|
|
|
} |
|
|
|
|
|
return null; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|