This commit is contained in:
jinyu 2016-03-23 17:10:23 +08:00
parent 4ef35151de
commit 89bbc8ecb6
5 changed files with 359 additions and 346 deletions

View File

@ -59,9 +59,11 @@ public class WeixinPayProxy {
* 现金API * 现金API
*/ */
private final CashApi cashApi; private final CashApi cashApi;
/**
* 配置相关
*/
private final Weixin4jSettings settings; private final Weixin4jSettings settings;
/** /**
* 使用weixin4j.properties配置的支付账号信息 * 使用weixin4j.properties配置的支付账号信息
*/ */

View File

@ -112,8 +112,13 @@ public class WeixinProxy {
* 数据统计API * 数据统计API
*/ */
private final DataApi dataApi; private final DataApi dataApi;
/**
* token实现
*/
private final TokenHolder tokenHolder; private final TokenHolder tokenHolder;
/**
* 配置相关
*/
private Weixin4jSettings settings; private Weixin4jSettings settings;
/** /**

View File

@ -1,179 +1,179 @@
package com.foxinmy.weixin4j.mp.api; package com.foxinmy.weixin4j.mp.api;
import java.util.List; import java.util.List;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.NameFilter; import com.alibaba.fastjson.serializer.NameFilter;
import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.http.weixin.JsonResult; import com.foxinmy.weixin4j.http.weixin.JsonResult;
import com.foxinmy.weixin4j.http.weixin.WeixinResponse; import com.foxinmy.weixin4j.http.weixin.WeixinResponse;
import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.model.Token;
import com.foxinmy.weixin4j.mp.message.TemplateMessage; import com.foxinmy.weixin4j.mp.message.TemplateMessage;
import com.foxinmy.weixin4j.mp.model.TemplateMessageInfo; import com.foxinmy.weixin4j.mp.model.TemplateMessageInfo;
import com.foxinmy.weixin4j.mp.type.IndustryType; import com.foxinmy.weixin4j.mp.type.IndustryType;
import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.util.NameValue; import com.foxinmy.weixin4j.util.NameValue;
/** /**
* 模板消息相关API * 模板消息相关API
* *
* @className TemplApi * @className TemplApi
* @author jy * @author jy
* @date 2014年9月30日 * @date 2014年9月30日
* @since JDK 1.6 * @since JDK 1.6
* @see * @see
*/ */
public class TmplApi extends MpApi { public class TmplApi extends MpApi {
private final TokenHolder tokenHolder; private final TokenHolder tokenHolder;
public TmplApi(TokenHolder tokenHolder) { public TmplApi(TokenHolder tokenHolder) {
this.tokenHolder = tokenHolder; this.tokenHolder = tokenHolder;
} }
/** /**
* 设置所属行业(每月可修改行业1次账号仅可使用所属行业中相关的模板) * 设置所属行业(每月可修改行业1次账号仅可使用所属行业中相关的模板)
* *
* @param industryTypes * @param industryTypes
* 所处行业 目前不超过两个 * 所处行业 目前不超过两个
* @return 操作结果 * @return 操作结果
* @throws WeixinException * @throws WeixinException
* @see com.foxinmy.weixin4j.mp.type.IndustryType * @see com.foxinmy.weixin4j.mp.type.IndustryType
* @see <a * @see <a
* href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.AE.BE.E7.BD.AE.E6.89.80.E5.B1.9E.E8.A1.8C.E4.B8.9A">设置所处行业</a> * href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.AE.BE.E7.BD.AE.E6.89.80.E5.B1.9E.E8.A1.8C.E4.B8.9A">设置所处行业</a>
*/ */
public JsonResult setTmplIndustry(IndustryType... industryTypes) public JsonResult setTmplIndustry(IndustryType... industryTypes)
throws WeixinException { throws WeixinException {
JSONObject obj = new JSONObject(); JSONObject obj = new JSONObject();
for (int i = 0; i < industryTypes.length; i++) { for (int i = 0; i < industryTypes.length; i++) {
obj.put(String.format("industry_id%d", i + 1), obj.put(String.format("industry_id%d", i + 1),
Integer.toString(industryTypes[i].getTypeId())); Integer.toString(industryTypes[i].getTypeId()));
} }
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
String template_set_industry_uri = getRequestUri("template_set_industry_uri"); String template_set_industry_uri = getRequestUri("template_set_industry_uri");
WeixinResponse response = weixinExecutor.post(String.format( WeixinResponse response = weixinExecutor.post(String.format(
template_set_industry_uri, token.getAccessToken()), obj template_set_industry_uri, token.getAccessToken()), obj
.toJSONString()); .toJSONString());
return response.getAsJsonResult(); return response.getAsJsonResult();
} }
/** /**
* 获取设置的行业信息 * 获取设置的行业信息
* *
* @return 行业信息数组 第一个元素为帐号设置的主营行业 第二个元素为帐号设置的副营行业 * @return 行业信息数组 第一个元素为帐号设置的主营行业 第二个元素为帐号设置的副营行业
* @throws WeixinException * @throws WeixinException
* @see com.foxinmy.weixin4j.mp.type.IndustryType * @see com.foxinmy.weixin4j.mp.type.IndustryType
* @see <a * @see <a
* href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.8E.B7.E5.8F.96.E8.AE.BE.E7.BD.AE.E7.9A.84.E8.A1.8C.E4.B8.9A.E4.BF.A1.E6.81.AF">获取设置的行业信息</a> * href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.8E.B7.E5.8F.96.E8.AE.BE.E7.BD.AE.E7.9A.84.E8.A1.8C.E4.B8.9A.E4.BF.A1.E6.81.AF">获取设置的行业信息</a>
*/ */
public IndustryType[] getTmplIndustry() throws WeixinException { public IndustryType[] getTmplIndustry() throws WeixinException {
String template_get_industry_uri = getRequestUri("template_get_industry_uri"); String template_get_industry_uri = getRequestUri("template_get_industry_uri");
WeixinResponse response = weixinExecutor.get(String.format( WeixinResponse response = weixinExecutor.get(String.format(
template_get_industry_uri, tokenHolder.getAccessToken())); template_get_industry_uri, tokenHolder.getAccessToken()));
JSONObject primary = response.getAsJson().getJSONObject( JSONObject primary = response.getAsJson().getJSONObject(
"primary_industry"); "primary_industry");
JSONObject secondary = response.getAsJson().getJSONObject( JSONObject secondary = response.getAsJson().getJSONObject(
"secondary_industry"); "secondary_industry");
return new IndustryType[] { return new IndustryType[] {
primary != null ? IndustryType.getIndustry( primary != null ? IndustryType.getIndustry(
primary.getString("first_class"), primary.getString("first_class"),
primary.getString("second_class")) : null, primary.getString("second_class")) : null,
secondary != null ? IndustryType.getIndustry( secondary != null ? IndustryType.getIndustry(
secondary.getString("first_class"), secondary.getString("first_class"),
secondary.getString("second_class")) : null }; secondary.getString("second_class")) : null };
} }
/** /**
* 获取模板ID * 获取模板ID
* *
* @param shortId * @param shortId
* 模板库中模板的编号TM**OPENTMTM**等形式 * 模板库中模板的编号TM**OPENTMTM**等形式
* @return 模板ID * @return 模板ID
* @throws WeixinException * @throws WeixinException
* @see <a * @see <a
* href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.8E.B7.E5.BE.97.E6.A8.A1.E6.9D.BFID">获得模板ID</a> * href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.8E.B7.E5.BE.97.E6.A8.A1.E6.9D.BFID">获得模板ID</a>
*/ */
public String getTemplateId(String shortId) throws WeixinException { public String getTemplateId(String shortId) throws WeixinException {
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
String template_getid_uri = getRequestUri("template_getid_uri"); String template_getid_uri = getRequestUri("template_getid_uri");
WeixinResponse response = weixinExecutor.post( WeixinResponse response = weixinExecutor.post(
String.format(template_getid_uri, token.getAccessToken()), String.format(template_getid_uri, token.getAccessToken()),
String.format("{\"template_id_short\":\"%s\"}", shortId)); String.format("{\"template_id_short\":\"%s\"}", shortId));
return response.getAsJson().getString("template_id"); return response.getAsJson().getString("template_id");
} }
/** /**
* 获取模板列表 * 获取模板列表
* *
* @return 模板列表 * @return 模板列表
* @see com.foxinmy.weixin4j.mp.model.TemplateMessageInfo * @see com.foxinmy.weixin4j.mp.model.TemplateMessageInfo
* @see <a * @see <a
* href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.8E.B7.E5.8F.96.E6.A8.A1.E6.9D.BF.E5.88.97.E8.A1.A8">获取模板列表</a> * href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E8.8E.B7.E5.8F.96.E6.A8.A1.E6.9D.BF.E5.88.97.E8.A1.A8">获取模板列表</a>
* @throws WeixinException * @throws WeixinException
*/ */
public List<TemplateMessageInfo> getAllTemplates() throws WeixinException { public List<TemplateMessageInfo> getAllTemplates() throws WeixinException {
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
String template_getall_uri = getRequestUri("template_getall_uri"); String template_getall_uri = getRequestUri("template_getall_uri");
WeixinResponse response = weixinExecutor.get(String.format( WeixinResponse response = weixinExecutor.get(String.format(
template_getall_uri, token.getAccessToken())); template_getall_uri, token.getAccessToken()));
return JSON.parseArray(response.getAsJson().getString("template_list"), return JSON.parseArray(response.getAsJson().getString("template_list"),
TemplateMessageInfo.class); TemplateMessageInfo.class);
} }
/** /**
* 删除模板 * 删除模板
* *
* @param templateId * @param templateId
* 公众帐号下模板消息ID * 公众帐号下模板消息ID
* @return 处理结果 * @return 处理结果
* @see <a * @see <a
* href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E5.88.A0.E9.99.A4.E6.A8.A1.E6.9D.BF">删除模板</a> * href="http://mp.weixin.qq.com/wiki/5/6dde9eaa909f83354e0094dc3ad99e05.html#.E5.88.A0.E9.99.A4.E6.A8.A1.E6.9D.BF">删除模板</a>
* @throws WeixinException * @throws WeixinException
*/ */
public JsonResult deleteTemplate(String templateId) throws WeixinException { public JsonResult deleteTemplate(String templateId) throws WeixinException {
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
String template_del_uri = getRequestUri("template_del_uri"); String template_del_uri = getRequestUri("template_del_uri");
WeixinResponse response = weixinExecutor.post( WeixinResponse response = weixinExecutor.post(
String.format(template_del_uri, token.getAccessToken()), String.format(template_del_uri, token.getAccessToken()),
String.format("{\"template_id\"=\"%s\"}", templateId)); String.format("{\"template_id\"=\"%s\"}", templateId));
return response.getAsJsonResult(); return response.getAsJsonResult();
} }
/** /**
* 发送模板消息 * 发送模板消息
* *
* @param tplMessage * @param tplMessage
* 消息对象 * 消息对象
* @return 发送结果 * @return 发送结果
* @throws WeixinException * @throws WeixinException
* @see <a * @see <a
* href="http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html#.E5.8F.91.E9.80.81.E6.A8.A1.E6.9D.BF.E6.B6.88.E6.81.AF">模板消息</a> * href="http://mp.weixin.qq.com/wiki/17/304c1885ea66dbedf7dc170d84999a9d.html#.E5.8F.91.E9.80.81.E6.A8.A1.E6.9D.BF.E6.B6.88.E6.81.AF">模板消息</a>
* @see <a href= * @see <a href=
* "http://mp.weixin.qq.com/wiki/2/def71e3ecb5706c132229ae505815966.html" * "http://mp.weixin.qq.com/wiki/2/def71e3ecb5706c132229ae505815966.html"
* >运营规范</a> * >运营规范</a>
* @see com.foxinmy.weixin4j.mp.message.TemplateMessage * @see com.foxinmy.weixin4j.mp.message.TemplateMessage
* @seee com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage * @see com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage
*/ */
public JsonResult sendTmplMessage(TemplateMessage tplMessage) public JsonResult sendTmplMessage(TemplateMessage tplMessage)
throws WeixinException { throws WeixinException {
Token token = tokenHolder.getToken(); Token token = tokenHolder.getToken();
String template_send_uri = getRequestUri("template_send_uri"); String template_send_uri = getRequestUri("template_send_uri");
WeixinResponse response = weixinExecutor.post( WeixinResponse response = weixinExecutor.post(
String.format(template_send_uri, token.getAccessToken()), String.format(template_send_uri, token.getAccessToken()),
JSON.toJSONString(tplMessage, new NameFilter() { JSON.toJSONString(tplMessage, new NameFilter() {
@Override @Override
public String process(Object object, String name, public String process(Object object, String name,
Object value) { Object value) {
if (object instanceof NameValue && name.equals("name")) { if (object instanceof NameValue && name.equals("name")) {
return "color"; return "color";
} }
return name; return name;
} }
})); }));
return response.getAsJsonResult(); return response.getAsJsonResult();
} }
} }

View File

@ -103,9 +103,13 @@ public class WeixinProxy {
* 聊天服务API * 聊天服务API
*/ */
private final ChatApi chatApi; private final ChatApi chatApi;
/**
* token实现
*/
private final TokenHolder tokenHolder; private final TokenHolder tokenHolder;
/**
* 配置相关
*/
private Weixin4jSettings settings; private Weixin4jSettings settings;
/** /**

View File

@ -1,162 +1,164 @@
package com.foxinmy.weixin4j.qy; package com.foxinmy.weixin4j.qy;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.exception.WeixinException;
import com.foxinmy.weixin4j.model.WeixinAccount; import com.foxinmy.weixin4j.model.WeixinAccount;
import com.foxinmy.weixin4j.qy.api.ProviderApi; import com.foxinmy.weixin4j.qy.api.ProviderApi;
import com.foxinmy.weixin4j.qy.api.SuiteApi; import com.foxinmy.weixin4j.qy.api.SuiteApi;
import com.foxinmy.weixin4j.qy.model.OUserInfo; import com.foxinmy.weixin4j.qy.model.OUserInfo;
import com.foxinmy.weixin4j.qy.model.WeixinQyAccount; import com.foxinmy.weixin4j.qy.model.WeixinQyAccount;
import com.foxinmy.weixin4j.qy.suite.SuiteTicketHolder; import com.foxinmy.weixin4j.qy.suite.SuiteTicketHolder;
import com.foxinmy.weixin4j.qy.suite.Weixin4jSuiteSettings; import com.foxinmy.weixin4j.qy.suite.Weixin4jSuiteSettings;
import com.foxinmy.weixin4j.qy.token.WeixinProviderTokenCreator; import com.foxinmy.weixin4j.qy.token.WeixinProviderTokenCreator;
import com.foxinmy.weixin4j.qy.type.LoginTargetType; import com.foxinmy.weixin4j.qy.type.LoginTargetType;
import com.foxinmy.weixin4j.token.TokenHolder; import com.foxinmy.weixin4j.token.TokenHolder;
import com.foxinmy.weixin4j.util.StringUtil; import com.foxinmy.weixin4j.util.StringUtil;
/** /**
* 微信第三方应用接口实现 * 微信第三方应用接口实现
* *
* @className WeixinSuiteProxy * @className WeixinSuiteProxy
* @author jy * @author jy
* @date 2015年6月22日 * @date 2015年6月22日
* @since JDK 1.6 * @since JDK 1.6
* @see com.foxinmy.weixin4j.qy.api.SuiteApi * @see com.foxinmy.weixin4j.qy.api.SuiteApi
* @see <a * @see <a
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%94%E7%94%A8%E6%8E%88%E6%9D%83">企业号第三方应用</a> * href="http://qydev.weixin.qq.com/wiki/index.php?title=%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%94%E7%94%A8%E6%8E%88%E6%9D%83">企业号第三方应用</a>
*/ */
public class WeixinSuiteProxy { public class WeixinSuiteProxy {
/** /**
* 每个套件授权不一样 suiteId - suiteApi * 每个套件授权不一样 suiteId - suiteApi
*/ */
private Map<String, SuiteApi> suiteMap; private Map<String, SuiteApi> suiteMap;
/** /**
* 供应商API:如登陆URL * 供应商API:如登陆URL
*/ */
private ProviderApi providerApi; private ProviderApi providerApi;
/**
private final Weixin4jSuiteSettings suiteSettings; * 配置相关
*/
public WeixinSuiteProxy() { private final Weixin4jSuiteSettings suiteSettings;
this(new Weixin4jSuiteSettings());
} public WeixinSuiteProxy() {
this(new Weixin4jSuiteSettings());
/** }
*
* @param suiteSettings /**
* 套件信息配置 *
*/ * @param suiteSettings
public WeixinSuiteProxy(Weixin4jSuiteSettings suiteSettings) { * 套件信息配置
this.suiteSettings = suiteSettings; */
if (suiteSettings.getWeixinAccount().getSuiteAccounts() != null) { public WeixinSuiteProxy(Weixin4jSuiteSettings suiteSettings) {
this.suiteMap = new HashMap<String, SuiteApi>(); this.suiteSettings = suiteSettings;
for (WeixinAccount suite : suiteSettings.getWeixinAccount() if (suiteSettings.getWeixinAccount().getSuiteAccounts() != null) {
.getSuiteAccounts()) { this.suiteMap = new HashMap<String, SuiteApi>();
this.suiteMap.put(suite.getId(), new SuiteApi( for (WeixinAccount suite : suiteSettings.getWeixinAccount()
new SuiteTicketHolder(suite.getId(), suite.getSecret(), .getSuiteAccounts()) {
suiteSettings.getTokenStorager0()))); this.suiteMap.put(suite.getId(), new SuiteApi(
this.suiteMap.put( new SuiteTicketHolder(suite.getId(), suite.getSecret(),
null, suiteSettings.getTokenStorager0())));
suiteMap.get(suiteSettings.getWeixinAccount() this.suiteMap.put(
.getSuiteAccounts().get(0).getId())); null,
} suiteMap.get(suiteSettings.getWeixinAccount()
} .getSuiteAccounts().get(0).getId()));
if (StringUtil.isNotBlank(suiteSettings.getWeixinAccount().getId()) }
&& StringUtil.isNotBlank(suiteSettings.getWeixinAccount() }
.getProviderSecret())) { if (StringUtil.isNotBlank(suiteSettings.getWeixinAccount().getId())
this.providerApi = new ProviderApi(new TokenHolder( && StringUtil.isNotBlank(suiteSettings.getWeixinAccount()
new WeixinProviderTokenCreator(suiteSettings .getProviderSecret())) {
.getWeixinAccount().getId(), suiteSettings this.providerApi = new ProviderApi(new TokenHolder(
.getWeixinAccount().getProviderSecret()), new WeixinProviderTokenCreator(suiteSettings
suiteSettings.getTokenStorager0()), .getWeixinAccount().getId(), suiteSettings
suiteSettings.getTokenStorager0()); .getWeixinAccount().getProviderSecret()),
} suiteSettings.getTokenStorager0()),
} suiteSettings.getTokenStorager0());
}
/** }
* 企业号信息
* /**
* @return * 企业号信息
*/ *
public WeixinQyAccount getWeixinAccount() { * @return
return this.suiteSettings.getWeixinAccount(); */
} public WeixinQyAccount getWeixinAccount() {
return this.suiteSettings.getWeixinAccount();
/** }
* 只关注第一个套件获取API(如果只有一个套件
* /**
* @see com.foxinmy.weixin4j.qy.api.SuiteApi * 只关注第一个套件获取API(如果只有一个套件
* @return API实例 *
*/ * @see com.foxinmy.weixin4j.qy.api.SuiteApi
public SuiteApi api() { * @return API实例
return this.suiteMap.get(null); */
} public SuiteApi api() {
return this.suiteMap.get(null);
/** }
* 多个套件获取API
* /**
* @see com.foxinmy.weixin4j.qy.api.SuiteApi * 多个套件获取API
* @param suiteId *
* 套件ID * @see com.foxinmy.weixin4j.qy.api.SuiteApi
* @return API实例 * @param suiteId
*/ * 套件ID
public SuiteApi api(String suiteId) { * @return API实例
return this.suiteMap.get(suiteId); */
} public SuiteApi api(String suiteId) {
return this.suiteMap.get(suiteId);
/** }
* 第三方套件获取企业号管理员登录信息
* /**
* @param authCode * 第三方套件获取企业号管理员登录信息
* oauth2.0授权企业号管理员登录产生的code *
* @return 登陆信息 * @param authCode
* @see com.foxinmy.weixin4j.qy.api.ProviderApi * oauth2.0授权企业号管理员登录产生的code
* @see <a * @return 登陆信息
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E4%BC%81%E4%B8%9A%E7%AE%A1%E7%90%86%E5%91%98%E7%99%BB%E5%BD%95%E4%BF%A1%E6%81%AF">授权获取企业号管理员登录信息</a> * @see com.foxinmy.weixin4j.qy.api.ProviderApi
* @see com.foxinmy.weixin4j.qy.model.OUserInfo * @see <a
* @throws WeixinException * href="http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E4%BC%81%E4%B8%9A%E7%AE%A1%E7%90%86%E5%91%98%E7%99%BB%E5%BD%95%E4%BF%A1%E6%81%AF">授权获取企业号管理员登录信息</a>
*/ * @see com.foxinmy.weixin4j.qy.model.OUserInfo
public OUserInfo getOUserInfoByCode(String authCode) throws WeixinException { * @throws WeixinException
return providerApi.getOUserInfoByCode(authCode); */
} public OUserInfo getOUserInfoByCode(String authCode) throws WeixinException {
return providerApi.getOUserInfoByCode(authCode);
/** }
* 获取登录企业号官网的url
* /**
* @param corpId * 获取登录企业号官网的url
* <font color="red">oauth授权的corpid</font> *
* @param targetType * @param corpId
* 登录跳转到企业号后台的目标页面 * <font color="red">oauth授权的corpid</font>
* @param agentId * @param targetType
* 授权方应用id 小余1时则不传递 * 登录跳转到企业号后台的目标页面
* @return 登陆URL * @param agentId
* @see com.foxinmy.weixin4j.qy.api.ProviderApi * 授权方应用id 小余1时则不传递
* @see <a * @return 登陆URL
* href="http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E7%99%BB%E5%BD%95%E4%BC%81%E4%B8%9A%E5%8F%B7%E5%AE%98%E7%BD%91%E7%9A%84url">获取登录企业号官网的url</a> * @see com.foxinmy.weixin4j.qy.api.ProviderApi
* @throws WeixinException * @see <a
*/ * href="http://qydev.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E7%99%BB%E5%BD%95%E4%BC%81%E4%B8%9A%E5%8F%B7%E5%AE%98%E7%BD%91%E7%9A%84url">获取登录企业号官网的url</a>
public String getLoginUrl(String corpId, LoginTargetType targetType, * @throws WeixinException
int agentId) throws WeixinException { */
return providerApi.getLoginUrl(corpId, targetType, agentId); public String getLoginUrl(String corpId, LoginTargetType targetType,
} int agentId) throws WeixinException {
return providerApi.getLoginUrl(corpId, targetType, agentId);
/** }
* 创建WeixinProxy对象
* /**
* @param suiteId * 创建WeixinProxy对象
* 套件ID *
* @param authCorpId * @param suiteId
* 已授权的corpid * 套件ID
* @see com.foxinmy.weixin4j.qy.WeixinProxy * @param authCorpId
* @return * 已授权的corpid
*/ * @see com.foxinmy.weixin4j.qy.WeixinProxy
public WeixinProxy getWeixinProxy(String suiteId, String authCorpId) { * @return
return new WeixinProxy(api(suiteId).getPerCodeHolder(authCorpId), api( */
suiteId).getSuiteTokenHolder()); public WeixinProxy getWeixinProxy(String suiteId, String authCorpId) {
} return new WeixinProxy(api(suiteId).getPerCodeHolder(authCorpId), api(
suiteId).getSuiteTokenHolder());
public final static String VERSION = "1.6.7"; }
}
public final static String VERSION = "1.6.7";
}