
com.foxinmy.weixin4j.qy.suite.WeixinTokenSuiteCreator Maven / Gradle / Ivy
package com.foxinmy.weixin4j.qy.suite;
import com.alibaba.fastjson.JSONObject;
import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.qy.type.URLConsts;
import com.foxinmy.weixin4j.token.AbstractTokenCreator;
import com.foxinmy.weixin4j.token.TokenHolder;
/**
* 微信企业号token创建(永久授权码)
*
* @className WeixinTokenSuiteCreator
* @author jy
* @date 2015年6月17日
* @since JDK 1.6
* @see
* 获取企业号access_token
* @see com.foxinmy.weixin4j.model.Token
*/
public class WeixinTokenSuiteCreator extends AbstractTokenCreator {
private final SuitePerCodeHolder perCodeHolder;
private final TokenHolder suiteTokenHolder;
/**
*
* @param perCodeHolder
* 第三方套件永久授权码
* @param suiteTokenHolder
* 第三方套件凭证token
*/
public WeixinTokenSuiteCreator(SuitePerCodeHolder perCodeHolder, TokenHolder suiteTokenHolder) {
this.perCodeHolder = perCodeHolder;
this.suiteTokenHolder = suiteTokenHolder;
}
@Override
public String getCacheKey0() {
return String.format("qy_token_suite_%s_%s", perCodeHolder.getSuiteId(), perCodeHolder.getAuthCorpId());
}
@Override
public Token createToken() throws WeixinException {
JSONObject obj = new JSONObject();
obj.put("suite_id", perCodeHolder.getSuiteId());
obj.put("auth_corpid", perCodeHolder.getAuthCorpId());
obj.put("permanent_code", perCodeHolder.getPermanentCode());
WeixinResponse response = weixinExecutor
.post(String.format(URLConsts.TOKEN_SUITE_URL, suiteTokenHolder.getAccessToken()), obj.toJSONString());
obj = response.getAsJson();
Token token = new Token(obj.getString("access_token"));
token.setExpiresIn(obj.getIntValue("expires_in"));
token.setOriginalResult(response.getAsString());
return token;
}
}