From 37503acac677d05536a30f3a7c64612b5cb28182 Mon Sep 17 00:00:00 2001 From: jinyu Date: Mon, 22 Jun 2015 23:58:29 +0800 Subject: [PATCH] update md & added WeixinSuiteProxy class. --- CHANGE.md | 6 +- weixin4j-mp/README.md | 12 +- .../foxinmy/weixin4j/mp/WeixinPayProxy.java | 12 +- weixin4j-qy/CHANGE.md | 6 +- weixin4j-qy/README.md | 10 +- .../foxinmy/weixin4j/qy/WeixinSuiteProxy.java | 188 ++++++++++++++++++ .../com/foxinmy/weixin4j/qy/api/OauthApi.java | 26 --- .../com/foxinmy/weixin4j/qy/api/SuiteApi.java | 44 ++-- .../com/foxinmy/weixin4j/qy/api/UserApi.java | 45 ++++- .../weixin4j/qy/suite/SuitePerCodeHolder.java | 4 +- .../weixin4j/qy/suite/SuiteTicketHolder.java | 11 +- .../qy/suite/WeixinSuiteTokenCreator.java | 2 +- .../qy/suite/WeixinTokenSuiteCreator.java | 2 +- 13 files changed, 291 insertions(+), 77 deletions(-) create mode 100644 weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java diff --git a/CHANGE.md b/CHANGE.md index 727a6c65..1cda3edc 100644 --- a/CHANGE.md +++ b/CHANGE.md @@ -337,4 +337,8 @@ + 新增了默认常量对象在BaseApi.java类 - + **weixin4j-qy**:新增企业号[第三方应用API](weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite)。 \ No newline at end of file + + **weixin4j-qy**: 新增企业号[第三方应用API](weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite)。 + +* 2015-06-22 + + + **weixin4j-qy**: 新增企业号[第三方应用代理](weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java)。 \ No newline at end of file diff --git a/weixin4j-mp/README.md b/weixin4j-mp/README.md index c6342008..08f18819 100644 --- a/weixin4j-mp/README.md +++ b/weixin4j-mp/README.md @@ -39,6 +39,8 @@ weixin4j-mp * CashApi `现金API` +* PayUtil [微信支付工具类](./src/main/java/com/foxinmy/weixin4j/mp/payment/PayUtil.java) + 如何使用 -------- 0.maven依赖(1.5.0,2015-06-10 released) @@ -84,18 +86,22 @@ weixin4j.properties说明 #公众号登陆授权的重定向路径(使用OauthApi时需要填写) redirect_uri=http://xxx -2.实例化一个`WeixinProxy`对象,调用API,需要强调的是如果只传入appid,appsecret两个参数将无法调用支付相关接口 +2.实例化微信企业号接口实现对象,调用具体的API方法 + // 微信公众号API WeixinProxy weixinProxy = new WeixinProxy(); // weixinProxy = new WeixinProxy(appid,appsecret); - // weixinProxy = new WeixinProxy(weixinAccount); weixinProxy.getUser(openId); + // 微信支付API + WeixinPayProxy weixinPayProxy = new WeixinPayProxy(); + // weixinPayProxy = new WeixinPayProxy(weixinAccount); + weixinPayProxy.orderQueryV3(idQuery); > 针对`token`存储有两种方案,`File存储`/`Redis存储`,当然也可自己实现`TokenStorager`,默认使用文件(xml)的方式保存token,如果环境中支持`redis`,建议使用[RedisTokenStorager](https://github.com/foxinmy/weixin4j/wiki/%E7%94%A8redis%E4%BF%9D%E5%AD%98token). > > WeixinProxy weixinProxy = new WeixinProxy(new RedisTokenStorager()); -> // weixinProxy = new WeixinProxy(new RedisTokenStorager(weixinAccount)); +> // weixinProxy = new WeixinProxy(new RedisTokenStorager(appid,appsecret)); [更新LOG](./CHANGE.md) ---------------------- \ No newline at end of file diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java index 5c947853..c5643329 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinPayProxy.java @@ -67,10 +67,20 @@ public class WeixinPayProxy { this(MpApi.DEFAULT_WEIXIN_ACCOUNT, tokenStorager); } + /** + * 使用文件保存token + * + * @param weixinAccount + * 支付相关的公众号账号信息 + */ + public WeixinPayProxy(WeixinMpAccount weixinAccount) { + this(weixinAccount, MpApi.DEFAULT_TOKEN_STORAGER); + } + /** * * @param weixinAccount - * 公众号账号信息 + * 支付相关的公众号账号信息 * * @param tokenStorager * token的存储策略 diff --git a/weixin4j-qy/CHANGE.md b/weixin4j-qy/CHANGE.md index 7a412571..c28ab7ec 100644 --- a/weixin4j-qy/CHANGE.md +++ b/weixin4j-qy/CHANGE.md @@ -56,4 +56,8 @@ * 2015-06-21 - + **weixin4j-qy**:新增企业号[第三方应用API](src/main/java/com/foxinmy/weixin4j/qy/suite)。 \ No newline at end of file + + 新增企业号[第三方应用API](src/main/java/com/foxinmy/weixin4j/qy/suite)。 + +* 2015-06-22 + + + 新增企业号[第三方应用代理](src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java)。 \ No newline at end of file diff --git a/weixin4j-qy/README.md b/weixin4j-qy/README.md index 3133ee7e..883da992 100644 --- a/weixin4j-qy/README.md +++ b/weixin4j-qy/README.md @@ -64,18 +64,22 @@ weixin4j.properties说明 #企业号第三方应用套件授权后重定向的url(使用OauthApi时需要填写) suite_redirect_uri=http://xxx -2.实例化一个`WeixinProxy`对象,调用API +2.实例化微信企业号接口实现对象,调用具体的API方法 + // 微信企业号API WeixinProxy weixinProxy = new WeixinProxy(); // weixinProxy = new WeixinProxy(corpid,corpsecret); - // weixinProxy = new WeixinProxy(weixinAccount); weixinProxy.getUser(userid); + // 微信第三方应用API + WeixinSuiteProxy weixinSuiteProxy = new WeixinSuiteProxy(); + //weixinSuiteProxy = new WeixinSuiteProxy(suiteId,suiteSecret); + weixinSuiteProxy.getOAuthInfo(authCorpid); > 针对`token`存储有两种方案,`File存储`/`Redis存储`,当然也可自己实现`TokenStorager`,默认使用文件(xml)的方式保存token,如果环境中支持`redis`,建议使用[RedisTokenStorager](https://github.com/foxinmy/weixin4j/wiki/%E7%94%A8redis%E4%BF%9D%E5%AD%98token). > WeixinProxy weixinProxy = new WeixinProxy(new RedisTokenStorager()); -> // weixinProxy = new WeixinProxy(new RedisTokenStorager(weixinAccount)); +> // weixinProxy = new WeixinProxy(new RedisTokenStorager(corpid,corpsecret)); [更新LOG](./CHANGE.md) ---------------------- \ No newline at end of file diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java new file mode 100644 index 00000000..092b8e42 --- /dev/null +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/WeixinSuiteProxy.java @@ -0,0 +1,188 @@ +package com.foxinmy.weixin4j.qy; + +import com.foxinmy.weixin4j.exception.WeixinException; +import com.foxinmy.weixin4j.http.weixin.JsonResult; +import com.foxinmy.weixin4j.qy.api.QyApi; +import com.foxinmy.weixin4j.qy.api.SuiteApi; +import com.foxinmy.weixin4j.qy.model.AgentInfo; +import com.foxinmy.weixin4j.qy.model.AgentSetter; +import com.foxinmy.weixin4j.qy.model.OUserInfo; +import com.foxinmy.weixin4j.qy.suite.SuitePerCodeHolder; +import com.foxinmy.weixin4j.qy.suite.SuiteTicketHolder; +import com.foxinmy.weixin4j.token.TokenHolder; +import com.foxinmy.weixin4j.token.TokenStorager; + +/** + * 微信第三方应用接口实现 + * + * @className WeixinSuiteProxy + * @author jy + * @date 2015年6月22日 + * @since JDK 1.7 + * @see com.foxinmy.weixin4j.qy.api.SuiteApi + * @see 企业号第三方应用 + */ +public class WeixinSuiteProxy { + /** + * 第三方应用API + */ + private final SuiteApi suiteApi; + + public WeixinSuiteProxy() throws WeixinException { + this(QyApi.DEFAULT_WEIXIN_ACCOUNT.getSuiteId(), + QyApi.DEFAULT_WEIXIN_ACCOUNT.getSuiteSecret()); + } + + public WeixinSuiteProxy(String suiteId, String suiteSecret) + throws WeixinException { + this(suiteId, suiteSecret, QyApi.DEFAULT_TOKEN_STORAGER); + } + + /** + * + * @param suiteId + * 应用ID + * @param suiteSecret + * 应用secret + * @param ticketStorager + * 应用ticket存储器(用于读取) + * @param tokenStorager + * 应用token存储器 + * @throws WeixinException + */ + public WeixinSuiteProxy(String suiteId, String suiteSecret, + TokenStorager tokenStorager) throws WeixinException { + this.suiteApi = new SuiteApi(suiteId, suiteSecret, tokenStorager); + } + + /** + * 应用套件token + * + * @return + */ + public TokenHolder getTokenHolder() { + return suiteApi.getTokenHolder(); + } + + /** + * 应用套件ticket + * + * @return + */ + public SuiteTicketHolder getTicketHolder() { + return suiteApi.getTicketHolder(); + } + + /** + * 应用套件永久授权码 + * + * @return + */ + public SuitePerCodeHolder getPerCodeHolder() { + return suiteApi.getPerCodeHolder(); + } + + /** + * 应用套件预授权码 + * + * @return + */ + public TokenHolder getPreCodeHolder() { + return suiteApi.getPreCodeHolder(); + } + + /** + * 获取企业号access_token(永久授权码) + * + * @param authCorpid + * 授权方corpid + * @return 企业号token + */ + public TokenHolder crateTokenHolder(String authCorpid) { + return suiteApi.crateTokenHolder(authCorpid); + } + + /** + * 设置套件授权配置:如果需要对某次授权进行配置,则调用本接口,目前仅可以设置哪些应用可以授权,不调用则默认允许所有应用进行授权。 + * + * @param appids + * 允许进行授权的应用id,如1、2、3 + * @return 处理结果 + * @throws WeixinException + * @see 设置套件授权配置 + */ + public JsonResult setSuiteSession(int... appids) throws WeixinException { + return suiteApi.setSuiteSession(appids); + } + + /** + * 获取企业号的永久授权码 + * + * @param authCode + * 临时授权码会在授权成功时附加在redirect_uri中跳转回应用提供商网站。 + * @return 授权得到的信息 + * @throws WeixinException + * @see com.foxinmy.weixin4j.qy.model.OUserInfo + * @see 获取企业号的永久授权码 + */ + public OUserInfo exchangePermanentCode(String authCode) + throws WeixinException { + return suiteApi.exchangePermanentCode(authCode); + } + + /** + * 获取企业号的授权信息 + * + * @param authCorpid + * 授权方corpid + * @return 授权方信息 + * @throws WeixinException + * @see com.foxinmy.weixin4j.qy.model.OUserInfo + * @see 获取企业号的授权信息 + */ + public OUserInfo getOAuthInfo(String authCorpid) throws WeixinException { + return suiteApi.getOAuthInfo(authCorpid); + } + + /** + * 获取企业号应用 + * + * @param authCorpid + * 授权方corpid + * @param agentid + * 授权方应用id + * @return 应用信息 + * @see com.foxinmy.weixin4j.qy.model.AgentInfo + * @see 获取企业号应用 + * @throws WeixinException + */ + public AgentInfo getAgent(String authCorpid, int agentid) + throws WeixinException { + return suiteApi.getAgent(authCorpid, agentid); + } + + /** + * 设置企业应用的选项设置信息,如:地理位置上报等 + * + * @param authCorpid + * 授权方corpid + * @param agentSet + * 设置信息 + * @see com.foxinmy.weixin4j.qy.model.AgentSetter + * @see 设置企业号信息 + * @return 处理结果 + * @throws WeixinException + */ + public JsonResult setAgent(String authCorpid, AgentSetter agentSet) + throws WeixinException { + return suiteApi.setAgent(authCorpid, agentSet); + } +} diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/OauthApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/OauthApi.java index a61acc81..17545aec 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/OauthApi.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/OauthApi.java @@ -3,11 +3,7 @@ package com.foxinmy.weixin4j.qy.api; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; -import com.alibaba.fastjson.JSON; -import com.foxinmy.weixin4j.exception.WeixinException; -import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.model.Consts; -import com.foxinmy.weixin4j.qy.model.OUserInfo; import com.foxinmy.weixin4j.util.ConfigUtil; /** @@ -62,28 +58,6 @@ public class OauthApi extends QyApi { return ""; } - /** - * 获取企业号管理员登录信息 - * - * @param providerToken - * 提供商的token - * @param authCode - * oauth2.0授权企业号管理员登录产生的code - * @return 登陆信息 - * @see 授权获取企业号管理员登录信息 - * @see com.foxinmy.weixin4j.qy.model.OUserInfo - * @throws WeixinException - */ - public OUserInfo getOUserInfo(String providerToken, String authCode) - throws WeixinException { - String oauth_logininfo_uri = getRequestUri("oauth_logininfo_uri"); - WeixinResponse response = weixinClient.post( - String.format(oauth_logininfo_uri, providerToken), - String.format("{\"auth_code\":\"%s\"}", authCode)); - return JSON.parseObject(response.getAsString(), OUserInfo.class); - } - /** * @see {@link com.foxinmy.weixin4j.qy.api.OauthApi#getSuiteAuthorizeURL(String,String, String,String)} * @param preAuthCode diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/SuiteApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/SuiteApi.java index c47339fb..aa5c5b01 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/SuiteApi.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/SuiteApi.java @@ -16,7 +16,6 @@ import com.foxinmy.weixin4j.qy.suite.SuiteTicketHolder; import com.foxinmy.weixin4j.qy.suite.WeixinSuitePreCodeCreator; import com.foxinmy.weixin4j.qy.suite.WeixinSuiteTokenCreator; import com.foxinmy.weixin4j.qy.suite.WeixinTokenSuiteCreator; -import com.foxinmy.weixin4j.qy.token.WeixinTokenCreator; import com.foxinmy.weixin4j.token.TokenCreator; import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.token.TokenStorager; @@ -48,10 +47,6 @@ public class SuiteApi extends QyApi { * 应用套件pre_code */ private final TokenHolder suitePreCodeHolder; - /** - * 应用套件的存储策略 - */ - private final TokenStorager tokenStorager; /** * 应用套件ID */ @@ -87,7 +82,6 @@ public class SuiteApi extends QyApi { new WeixinSuitePreCodeCreator(suiteTokenHolder, suiteId), tokenStorager); this.suitePerCodeHolder = new SuitePerCodeHolder(tokenStorager); - this.tokenStorager = tokenStorager; this.suiteId = suiteId; } @@ -109,6 +103,15 @@ public class SuiteApi extends QyApi { return this.suiteTicketHolder; } + /** + * 应用套件预授权码 + * + * @return + */ + public TokenHolder getPreCodeHolder() { + return this.suitePreCodeHolder; + } + /** * 应用套件永久授权码 * @@ -118,15 +121,6 @@ public class SuiteApi extends QyApi { return this.suitePerCodeHolder; } - /** - * 应用套件pre_code - * - * @return - */ - public TokenHolder getPreCodeHolder() { - return this.suitePreCodeHolder; - } - /** * 获取企业号access_token(永久授权码) * @@ -136,7 +130,7 @@ public class SuiteApi extends QyApi { */ public TokenHolder crateTokenHolder(String authCorpid) { return new TokenHolder(new WeixinTokenSuiteCreator(suiteId, authCorpid, - suitePerCodeHolder), tokenStorager); + suitePerCodeHolder), suiteTicketHolder.getTokenStorager()); } /** @@ -153,7 +147,7 @@ public class SuiteApi extends QyApi { public JsonResult setSuiteSession(int... appids) throws WeixinException { String suite_set_session_uri = getRequestUri("suite_set_session_uri"); JSONObject para = new JSONObject(); - para.put("pre_auth_code", suiteTicketHolder.lookup(suiteId)); + para.put("pre_auth_code", suiteTicketHolder.getTicket(suiteId)); para.put("session_info", appids); WeixinResponse response = weixinClient .post(String.format(suite_set_session_uri, @@ -187,14 +181,16 @@ public class SuiteApi extends QyApi { obj.put("user_info", obj.remove("auth_user_info")); OUserInfo oInfo = JSON.toJavaObject(obj, OUserInfo.class); // 缓存微信企业号access_token - TokenCreator tokenCreator = new WeixinTokenCreator(oInfo.getCorpinfo() - .getCorpid(), null); + TokenCreator tokenCreator = new WeixinTokenSuiteCreator(suiteId, null, + suitePerCodeHolder); Token token = new Token(obj.getString("access_token")); token.setExpiresIn(obj.getIntValue("expires_in")); token.setTime(System.currentTimeMillis()); - tokenStorager.caching(tokenCreator.getCacheKey(), token); + suiteTicketHolder.getTokenStorager().caching( + tokenCreator.getCacheKey(), token); // 缓存微信企业号永久授权码 - suitePerCodeHolder.caching(suiteId, obj.getString("permanent_code")); + suitePerCodeHolder.cachingPermanentCode(suiteId, + obj.getString("permanent_code")); return oInfo; } @@ -214,7 +210,7 @@ public class SuiteApi extends QyApi { JSONObject obj = new JSONObject(); obj.put("suite_id", suiteId); obj.put("auth_corpid", authCorpid); - obj.put("permanent_code", suitePerCodeHolder.lookup(suiteId)); + obj.put("permanent_code", suitePerCodeHolder.getPermanentCode(suiteId)); WeixinResponse response = weixinClient.post( String.format(suite_get_authinfo_uri, suiteTokenHolder.getAccessToken()), obj.toJSONString()); @@ -241,7 +237,7 @@ public class SuiteApi extends QyApi { JSONObject obj = new JSONObject(); obj.put("suite_id", suiteId); obj.put("auth_corpid", authCorpid); - obj.put("permanent_code", suitePerCodeHolder.lookup(suiteId)); + obj.put("permanent_code", suitePerCodeHolder.getPermanentCode(suiteId)); obj.put("agentid", agentid); WeixinResponse response = weixinClient.post(String.format( suite_get_agent_uri, suiteTokenHolder.getAccessToken(), @@ -278,7 +274,7 @@ public class SuiteApi extends QyApi { JSONObject obj = new JSONObject(); obj.put("suite_id", suiteId); obj.put("auth_corpid", authCorpid); - obj.put("permanent_code", suitePerCodeHolder.lookup(suiteId)); + obj.put("permanent_code", suitePerCodeHolder.getPermanentCode(suiteId)); obj.put("agent", agentSet); WeixinResponse response = weixinClient.post( String.format(suite_set_agent_uri, diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/UserApi.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/UserApi.java index 1cffcc3a..015e0fee 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/UserApi.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/api/UserApi.java @@ -10,6 +10,7 @@ import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.model.Token; +import com.foxinmy.weixin4j.qy.model.OUserInfo; import com.foxinmy.weixin4j.qy.model.User; import com.foxinmy.weixin4j.qy.type.InviteType; import com.foxinmy.weixin4j.qy.type.UserStatus; @@ -126,6 +127,28 @@ public class UserApi extends QyApi { return getUser(getUserIdByCode(code, agentid).getString("UserId")); } + /** + * 获取企业号管理员登录信息 + * + * @param providerToken + * 提供商的token + * @param authCode + * oauth2.0授权企业号管理员登录产生的code + * @return 登陆信息 + * @see 授权获取企业号管理员登录信息 + * @see com.foxinmy.weixin4j.qy.model.OUserInfo + * @throws WeixinException + */ + public OUserInfo getOUserInfoByCode(String providerToken, String authCode) + throws WeixinException { + String oauth_logininfo_uri = getRequestUri("oauth_logininfo_uri"); + WeixinResponse response = weixinClient.post( + String.format(oauth_logininfo_uri, providerToken), + String.format("{\"auth_code\":\"%s\"}", authCode)); + return JSON.parseObject(response.getAsString(), OUserInfo.class); + } + /** * 根据code获取成员信息 * @@ -144,8 +167,8 @@ public class UserApi extends QyApi { throws WeixinException { String user_getid_uri = getRequestUri("user_getid_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinClient.post(String.format(user_getid_uri, - token.getAccessToken(), code, agentid)); + WeixinResponse response = weixinClient.post(String.format( + user_getid_uri, token.getAccessToken(), code, agentid)); return response.getAsJson(); } @@ -171,9 +194,9 @@ public class UserApi extends QyApi { String user_list_uri = findDetail ? getRequestUri("user_list_uri") : getRequestUri("user_slist_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinClient.post(String.format(user_list_uri, - token.getAccessToken(), departId, fetchChild ? 1 : 0, - userStatus.getVal())); + WeixinResponse response = weixinClient.post(String.format( + user_list_uri, token.getAccessToken(), departId, fetchChild ? 1 + : 0, userStatus.getVal())); List list = null; if (findDetail) { JSONArray arrays = response.getAsJson().getJSONArray("userlist"); @@ -220,8 +243,8 @@ public class UserApi extends QyApi { public JsonResult deleteUser(String userid) throws WeixinException { String user_delete_uri = getRequestUri("user_delete_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinClient.post(String.format(user_delete_uri, - token.getAccessToken(), userid)); + WeixinResponse response = weixinClient.post(String.format( + user_delete_uri, token.getAccessToken(), userid)); return response.getAsJsonResult(); } @@ -242,8 +265,8 @@ public class UserApi extends QyApi { obj.put("useridlist", userIds); String user_delete_uri = getRequestUri("user_batchdelete_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinClient.post(String.format(user_delete_uri, - token.getAccessToken(), obj.toJSONString())); + WeixinResponse response = weixinClient.post(String.format( + user_delete_uri, token.getAccessToken(), obj.toJSONString())); return response.getAsJsonResult(); } @@ -260,8 +283,8 @@ public class UserApi extends QyApi { public JsonResult authsucc(String userId) throws WeixinException { String user_authsucc_uri = getRequestUri("user_authsucc_uri"); Token token = tokenHolder.getToken(); - WeixinResponse response = weixinClient.post(String.format(user_authsucc_uri, - token.getAccessToken(), userId)); + WeixinResponse response = weixinClient.post(String.format( + user_authsucc_uri, token.getAccessToken(), userId)); return response.getAsJsonResult(); } diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/SuitePerCodeHolder.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/SuitePerCodeHolder.java index 6d5b486b..365d232d 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/SuitePerCodeHolder.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/SuitePerCodeHolder.java @@ -28,7 +28,7 @@ public class SuitePerCodeHolder { * @param permanentCode * @throws WeixinException */ - public void caching(String suiteId, String permanentCode) + public void cachingPermanentCode(String suiteId, String permanentCode) throws WeixinException { Token token = new Token(permanentCode); token.setExpiresIn(-1); @@ -52,7 +52,7 @@ public class SuitePerCodeHolder { * @return * @throws WeixinException */ - public String lookup(String suiteId) throws WeixinException { + public String getPermanentCode(String suiteId) throws WeixinException { return tokenStorager.lookup(getCacheKey(suiteId)).getAccessToken(); } } diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/SuiteTicketHolder.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/SuiteTicketHolder.java index 334e40cb..6d22372f 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/SuiteTicketHolder.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/SuiteTicketHolder.java @@ -15,7 +15,7 @@ import com.foxinmy.weixin4j.token.TokenStorager; */ public class SuiteTicketHolder { - public final TokenStorager tokenStorager; + private final TokenStorager tokenStorager; public SuiteTicketHolder(TokenStorager tokenStorager) { this.tokenStorager = tokenStorager; @@ -28,7 +28,7 @@ public class SuiteTicketHolder { * @return * @throws WeixinException */ - public String lookup(String suiteId) throws WeixinException { + public String getTicket(String suiteId) throws WeixinException { return tokenStorager.lookup(getCacheKey(suiteId)).getAccessToken(); } @@ -48,9 +48,14 @@ public class SuiteTicketHolder { * @param suiteTicket * @throws WeixinException */ - public void caching(SuiteTicketMessage suiteTicket) throws WeixinException { + public void cachingTicket(SuiteTicketMessage suiteTicket) + throws WeixinException { Token token = new Token(suiteTicket.getSuiteTicket()); token.setExpiresIn(-1); tokenStorager.caching(getCacheKey(suiteTicket.getSuiteId()), token); } + + public TokenStorager getTokenStorager() { + return this.tokenStorager; + } } diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteTokenCreator.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteTokenCreator.java index 7e978414..696421fb 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteTokenCreator.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinSuiteTokenCreator.java @@ -53,7 +53,7 @@ public class WeixinSuiteTokenCreator implements TokenCreator { JSONObject obj = new JSONObject(); obj.put("suite_id", suiteId); obj.put("suite_secret", suiteSecret); - obj.put("suite_ticket", ticketHolder.lookup(suiteId)); + obj.put("suite_ticket", ticketHolder.getTicket(suiteId)); WeixinResponse response = httpClient.post(URLConsts.SUITE_TOKEN_URL, obj.toJSONString()); obj = response.getAsJson(); diff --git a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinTokenSuiteCreator.java b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinTokenSuiteCreator.java index 5a3f86f5..a0ec6d0c 100644 --- a/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinTokenSuiteCreator.java +++ b/weixin4j-qy/src/main/java/com/foxinmy/weixin4j/qy/suite/WeixinTokenSuiteCreator.java @@ -53,7 +53,7 @@ public class WeixinTokenSuiteCreator implements TokenCreator { JSONObject obj = new JSONObject(); obj.put("suite_id", suiteId); obj.put("auth_corpid", authCorpid); - obj.put("permanent_code", perCodeHolder.lookup(suiteId)); + obj.put("permanent_code", perCodeHolder.getPermanentCode(suiteId)); WeixinResponse response = httpClient.post(URLConsts.TOKEN_SUITE_URL, obj.toJSONString()); obj = response.getAsJson();