All Downloads are FREE. Search and download functionalities are using the official Maven repository.

me.chanjar.weixin.cp.tp.service.WxCpTpService Maven / Gradle / Ivy

There is a newer version: 4.6.7.B
Show newest version
package me.chanjar.weixin.cp.tp.service;

import me.chanjar.weixin.common.bean.WxAccessToken;
import me.chanjar.weixin.common.bean.WxJsapiSignature;
import me.chanjar.weixin.common.error.WxErrorException;
import me.chanjar.weixin.common.session.WxSessionManager;
import me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.common.util.http.RequestHttp;
import me.chanjar.weixin.cp.bean.*;
import me.chanjar.weixin.cp.config.WxCpTpConfigStorage;

import java.util.List;

/**
 * 企业微信第三方应用API的Service.
 *
 * @author zhenjun cai
 */
public interface WxCpTpService {
  /**
   * 
   * 验证推送过来的消息的正确性
   * 详情请见: https://work.weixin.qq.com/api/doc#90000/90139/90968/消息体签名校验
   * 
* * @param msgSignature 消息签名 * @param timestamp 时间戳 * @param nonce 随机数 * @param data 微信传输过来的数据,有可能是echoStr,有可能是xml消息 * @return the boolean */ boolean checkSignature(String msgSignature, String timestamp, String nonce, String data); /** * 获取suite_access_token, 不强制刷新suite_access_token * * @return the suite access token * @throws WxErrorException the wx error exception * @see #getSuiteAccessToken(boolean) #getSuiteAccessToken(boolean)#getSuiteAccessToken(boolean) * #getSuiteAccessToken(boolean) */ String getSuiteAccessToken() throws WxErrorException; /** *
   * 获取suite_access_token,本方法线程安全
   * 且在多线程同时刷新时只刷新一次,避免超出2000次/日的调用次数上限
   * 另:本service的所有方法都会在suite_access_token过期是调用此方法
   * 程序员在非必要情况下尽量不要主动调用此方法
   * 详情请见: https://work.weixin.qq.com/api/doc#90001/90143/90600
   * 
* * @param forceRefresh 强制刷新 * @return the suite access token * @throws WxErrorException the wx error exception */ String getSuiteAccessToken(boolean forceRefresh) throws WxErrorException; /** * 获取suite_access_token和剩余过期时间, 不强制刷新suite_access_token * * @return suite access token and the remaining expiration time * @throws WxErrorException the wx error exception */ WxAccessToken getSuiteAccessTokenEntity() throws WxErrorException; /** * 获取suite_access_token和剩余过期时间, 支持强制刷新suite_access_token * * @param forceRefresh 是否调用微信服务器强制刷新token * @return suite access token and the remaining expiration time * @throws WxErrorException the wx error exception */ WxAccessToken getSuiteAccessTokenEntity(boolean forceRefresh) throws WxErrorException; /** * 获得suite_ticket,不强制刷新suite_ticket * * @return the suite ticket * @throws WxErrorException the wx error exception * @see #getSuiteTicket(boolean) #getSuiteTicket(boolean)#getSuiteTicket(boolean)#getSuiteTicket(boolean) */ String getSuiteTicket() throws WxErrorException; /** *
   * 保存企业微信定时推送的suite_ticket,(每10分钟)
   * 详情请见:https://work.weixin.qq.com/api/doc#90001/90143/90628
   *
   * 注意:微信不是固定10分钟推送suite_ticket的, 且suite_ticket的有效期为30分钟
   * https://work.weixin.qq.com/api/doc/10975#%E8%8E%B7%E5%8F%96%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%94%E7%94%A8%E5%87%AD%E8%AF%81
   * 
* * @param suiteTicket the suite ticket */ void setSuiteTicket(String suiteTicket); /** *
   * 获得suite_ticket
   * 由于suite_ticket是微信服务器定时推送(每10分钟),不能主动获取,如果碰到过期只能抛异常
   *
   * 详情请见:https://work.weixin.qq.com/api/doc#90001/90143/90628
   * 
* * @param forceRefresh 强制刷新 * @return the suite ticket * @throws WxErrorException the wx error exception * @see #setSuiteTicket(String) #setSuiteTicket(String)#setSuiteTicket(String) * @deprecated 由于无法主动刷新 ,所以这个接口实际已经没有意义,需要在接收企业微信的主动推送后,保存这个ticket */ @Deprecated String getSuiteTicket(boolean forceRefresh) throws WxErrorException; /** *
   * 保存企业微信定时推送的suite_ticket,(每10分钟)
   * 详情请见:https://work.weixin.qq.com/api/doc#90001/90143/90628
   *
   * 注意:微信不是固定10分钟推送suite_ticket的, 且suite_ticket的有效期为30分钟
   * https://work.weixin.qq.com/api/doc/10975#%E8%8E%B7%E5%8F%96%E7%AC%AC%E4%B8%89%E6%96%B9%E5%BA%94%E7%94%A8%E5%87%AD%E8%AF%81
   * 
* * @param suiteTicket the suite ticket * @param expiresInSeconds the expires in seconds */ void setSuiteTicket(String suiteTicket, int expiresInSeconds); /** * 获取应用的 jsapi ticket * * @param authCorpId 授权企业的cropId * @return jsapi ticket * @throws WxErrorException the wx error exception */ String getSuiteJsApiTicket(String authCorpId) throws WxErrorException; /** * 获取应用的 jsapi ticket, 支持强制刷新 * * @param authCorpId the auth corp id * @param forceRefresh the force refresh * @return suite js api ticket * @throws WxErrorException the wx error exception */ String getSuiteJsApiTicket(String authCorpId, boolean forceRefresh) throws WxErrorException; /** * 小程序登录凭证校验 * * @param jsCode 登录时获取的 code * @return the wx cp ma js code 2 session result * @throws WxErrorException the wx error exception */ WxCpMaJsCode2SessionResult jsCode2Session(String jsCode) throws WxErrorException; /** * 获取企业凭证 * * @param authCorpId 授权方corpid * @param permanentCode 永久授权码,通过get_permanent_code获取 * @return the corp token * @throws WxErrorException the wx error exception */ WxAccessToken getCorpToken(String authCorpId, String permanentCode) throws WxErrorException; /** * 获取企业凭证, 支持强制刷新 * * @param authCorpId the auth corp id * @param permanentCode the permanent code * @param forceRefresh the force refresh * @return corp token * @throws WxErrorException the wx error exception */ WxAccessToken getCorpToken(String authCorpId, String permanentCode, boolean forceRefresh) throws WxErrorException; /** * 获取企业永久授权码 . * * @param authCode . * @return . permanent code * @throws WxErrorException the wx error exception */ @Deprecated WxCpTpCorp getPermanentCode(String authCode) throws WxErrorException; /** * 获取企业永久授权码信息 *
   *   原来的方法实现不全
   * 
* * @param authCode the auth code * @return permanent code info * @throws WxErrorException the wx error exception * @author yuan * @since 2020 -03-18 */ WxCpTpPermanentCodeInfo getPermanentCodeInfo(String authCode) throws WxErrorException; /** *
   *   获取预授权链接
   * 
* * @param redirectUri 授权完成后的回调网址 * @param state a-zA-Z0-9的参数值(不超过128个字节),用于第三方自行校验session,防止跨域攻击 * @return pre auth url * @throws WxErrorException the wx error exception */ String getPreAuthUrl(String redirectUri, String state) throws WxErrorException; /** *
   *   获取预授权链接,测试环境下使用
   * 
* * @param redirectUri 授权完成后的回调网址 * @param state a-zA-Z0-9的参数值(不超过128个字节),用于第三方自行校验session,防止跨域攻击 * @param authType 授权类型:0 正式授权, 1 测试授权。 * @return pre auth url * @throws WxErrorException the wx error exception * @link https ://work.weixin.qq.com/api/doc/90001/90143/90602 */ String getPreAuthUrl(String redirectUri, String state, int authType) throws WxErrorException; /** * 获取企业的授权信息 * * @param authCorpId 授权企业的corpId * @param permanentCode 授权企业的永久授权码 * @return auth info * @throws WxErrorException the wx error exception */ WxCpTpAuthInfo getAuthInfo(String authCorpId, String permanentCode) throws WxErrorException; /** * 获取授权企业的 jsapi ticket * * @param authCorpId 授权企业的cropId * @return jsapi ticket * @throws WxErrorException the wx error exception */ String getAuthCorpJsApiTicket(String authCorpId) throws WxErrorException; /** * 获取授权企业的 jsapi ticket, 支持强制刷新 * * @param authCorpId the auth corp id * @param forceRefresh the force refresh * @return auth corp js api ticket * @throws WxErrorException the wx error exception */ String getAuthCorpJsApiTicket(String authCorpId, boolean forceRefresh) throws WxErrorException; /** * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求. * * @param url 接口地址 * @param queryParam 请求参数 * @return the string * @throws WxErrorException the wx error exception */ String get(String url, String queryParam) throws WxErrorException; /** * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求. * * @param url 接口地址 * @param queryParam 请求参数 * @param withoutSuiteAccessToken 请求是否忽略SuiteAccessToken 默认不忽略-false * @return the string * @throws WxErrorException the wx error exception */ String get(String url, String queryParam, boolean withoutSuiteAccessToken) throws WxErrorException; /** * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的POST请求. * * @param url 接口地址 * @param postData 请求body字符串 * @return the string * @throws WxErrorException the wx error exception */ String post(String url, String postData) throws WxErrorException; /** *
   * Service没有实现某个API的时候,可以用这个,
   * 比{@link #get}和{@link #post}方法更灵活,可以自己构造RequestExecutor用来处理不同的参数和不同的返回类型。
   * 可以参考,{@link MediaUploadRequestExecutor}的实现方法
   * 
* * @param 请求值类型 * @param 返回值类型 * @param executor 执行器 * @param uri 请求地址 * @param data 参数 * @return the t * @throws WxErrorException the wx error exception */ T execute(RequestExecutor executor, String uri, E data) throws WxErrorException; /** *
   * 设置当微信系统响应系统繁忙时,要等待多少 retrySleepMillis(ms) * 2^(重试次数 - 1) 再发起重试.
   * 默认:1000ms
   * 
* * @param retrySleepMillis 重试休息时间 */ void setRetrySleepMillis(int retrySleepMillis); /** *
   * 设置当微信系统响应系统繁忙时,最大重试次数.
   * 默认:5次
   * 
* * @param maxRetryTimes 最大重试次数 */ void setMaxRetryTimes(int maxRetryTimes); /** * 初始化http请求对象 */ void initHttp(); /** * 获取WxCpTpConfigStorage 对象. * * @return WxCpTpConfigStorage wx cp tp config storage * @deprecated storage应该在service内部使用 ,提供这个接口,容易破坏这个封装 */ @Deprecated WxCpTpConfigStorage getWxCpTpConfigStorage(); /** * 注入 {@link WxCpTpConfigStorage} 的实现. * * @param wxConfigProvider 配置对象 */ void setWxCpTpConfigStorage(WxCpTpConfigStorage wxConfigProvider); /** * http请求对象. * * @return the request http */ RequestHttp getRequestHttp(); /** * 获取WxSessionManager 对象 * * @return WxSessionManager session manager */ WxSessionManager getSessionManager(); /** *
   * 获取访问用户身份
   * 
* * @param code the code * @return user info 3 rd * @throws WxErrorException the wx error exception */ WxCpTpUserInfo getUserInfo3rd(String code) throws WxErrorException; /** *
   * 获取访问用户敏感信息
   * 文档地址
   * 
* * @param userTicket the user ticket * @return user detail 3 rd * @throws WxErrorException the wx error exception */ WxCpTpUserDetail getUserDetail3rd(String userTicket) throws WxErrorException; /** * 获取登录用户信息 *

* 文档地址:https://work.weixin.qq.com/api/doc/90001/90143/91125 * * @param authCode the auth code * @return login info * @throws WxErrorException the wx error exception */ WxTpLoginInfo getLoginInfo(String authCode) throws WxErrorException; /** * 获取带参授权链接 *

* 文档地址:https://developer.work.weixin.qq.com/document/path/95436 * * @param state state * @param templateIdList 代开发自建应用模版ID列表,数量不能超过9个 * @return customized auth url * @throws WxErrorException the wx error exception */ WxTpCustomizedAuthUrl getCustomizedAuthUrl(String state, List templateIdList) throws WxErrorException; /** * 获取服务商providerToken * * @return the wx cp provider token * @throws WxErrorException the wx error exception */ String getWxCpProviderToken() throws WxErrorException; /** * 获取服务商providerToken和剩余过期时间 * * @return wx cp provider token entity * @throws WxErrorException the wx error exception */ WxCpProviderToken getWxCpProviderTokenEntity() throws WxErrorException; /** * 获取服务商providerToken和剩余过期时间,支持强制刷新 * * @param forceRefresh the force refresh * @return wx cp provider token entity * @throws WxErrorException the wx error exception */ WxCpProviderToken getWxCpProviderTokenEntity(boolean forceRefresh) throws WxErrorException; /** * get contact service * * @return WxCpTpContactService wx cp tp contact service */ WxCpTpContactService getWxCpTpContactService(); /** * set contact service * * @param wxCpTpContactService the contact service */ void setWxCpTpContactService(WxCpTpContactService wxCpTpContactService); /** * get department service * * @return WxCpTpDepartmentService wx cp tp department service */ WxCpTpDepartmentService getWxCpTpDepartmentService(); /** * set department service * * @param wxCpTpDepartmentService the department service */ void setWxCpTpDepartmentService(WxCpTpDepartmentService wxCpTpDepartmentService); /** * get media service * * @return WxCpTpMediaService wx cp tp media service */ WxCpTpMediaService getWxCpTpMediaService(); /** * set media service * * @param wxCpTpMediaService the media service */ void setWxCpTpMediaService(WxCpTpMediaService wxCpTpMediaService); /** * get oa service * * @return WxCpTpOAService wx cp tp oa service */ WxCpTpOAService getWxCpTpOAService(); /** * set oa service * * @param wxCpTpOAService the oa service */ void setWxCpTpOAService(WxCpTpOAService wxCpTpOAService); /** * get user service * * @return WxCpTpUserService wx cp tp user service */ WxCpTpUserService getWxCpTpUserService(); /** * set user service * * @param wxCpTpUserService the set user service */ void setWxCpTpUserService(WxCpTpUserService wxCpTpUserService); /** * set license service * * @param wxCpTpLicenseService the oa service */ void setWxCpTpLicenseService(WxCpTpLicenseService wxCpTpLicenseService); /** * get license service * * @return getCpTPLicenseService wx cp tp license service */ WxCpTpLicenseService getWxCpTpLicenseService(); /** * 获取应用的管理员列表 * * @param authCorpId the auth corp id * @param agentId the agent id * @return admin list * @throws WxErrorException the wx error exception */ WxCpTpAdmin getAdminList(String authCorpId, Integer agentId) throws WxErrorException; /** * 获取应用二维码 * @param suiteId 第三方应用id(即ww或wx开头的suiteid) * @param appId 第三方应用id,单应用不需要该参数,多应用旧套件才需要传该参数。若不传默认为1 * @param state state值,用于区分不同的安装渠道 * @param style 二维码样式选项,默认为不带说明外框小尺寸。0:带说明外框的二维码,适合于实体物料,1:带说明外框的二维码,适合于屏幕类,2:不带说明外框(小尺寸),3:不带说明外框(中尺寸),4:不带说明外框(大尺寸)。具体样式与服务商管理端获取到的应用二维码样式一一对应,参见下文二维码样式说明 * @param resultType 结果返回方式,默认为返回二维码图片buffer。1:二维码图片buffer,2:二维码图片url * @return 二维码 * @throws WxErrorException the wx error exception */ WxCpTpAppQrcode getAppQrcode(String suiteId, String appId, String state, Integer style, Integer resultType) throws WxErrorException ; /** * * 明文corpid转换为加密corpid 为更好地保护企业与用户的数据,第三方应用获取的corpid不再是明文的corpid,将升级为第三方服务商级别的加密corpid。文档说明 * 第三方可以将已有的明文corpid转换为第三方的加密corpid。 * @param corpId * @return * @throws WxErrorException */ WxCpTpCorpId2OpenCorpId corpId2OpenCorpId(String corpId) throws WxErrorException; /** * 创建机构级jsApiTicket签名 * 详情参见企业微信第三方应用开发文档:https://work.weixin.qq.com/api/doc/90001/90144/90539 * * @param url 调用JS接口页面的完整URL * @param authCorpId the auth corp id * @return wx jsapi signature * @throws WxErrorException the wx error exception */ WxJsapiSignature createAuthCorpJsApiTicketSignature(String url, String authCorpId) throws WxErrorException; /** * 创建应用级jsapiTicket签名 * 详情参见企业微信第三方应用开发文档:https://work.weixin.qq.com/api/doc/90001/90144/90539 * * @param url 调用JS接口页面的完整URL * @param authCorpId the auth corp id * @return wx jsapi signature * @throws WxErrorException the wx error exception */ WxJsapiSignature createSuiteJsApiTicketSignature(String url, String authCorpId) throws WxErrorException; /** * 使套件accessToken缓存失效 */ void expireSuiteAccessToken(); /** * 使机构accessToken缓存失效 * * @param authCorpId 机构id */ void expireAccessToken(String authCorpId); /** * 使机构jsapiticket缓存失效 * * @param authCorpId 机构id */ void expireAuthCorpJsApiTicket(String authCorpId); /** * 使应用jsapiticket失效 * * @param authCorpId 机构id */ void expireAuthSuiteJsApiTicket(String authCorpId); /** * 使供应商accessToken失效 */ void expireProviderToken(); /** * 获取应用版本付费订单相关接口服务 * * @return the wx cp tp order service */ WxCpTpOrderService getWxCpTpOrderService(); /** * 设置应用版本付费订单相关接口服务 * * @param wxCpTpOrderService the wx cp tp order service */ void setWxCpTpOrderService(WxCpTpOrderService wxCpTpOrderService); /** * 获取应用版本付费版本相关接口服务 * * @return the wx cp tp edition service */ WxCpTpEditionService getWxCpTpEditionService(); /** * 设置应用版本付费版本相关接口服务 * * @param wxCpTpEditionService the wx cp tp edition service */ void setWxCpTpOrderService(WxCpTpEditionService wxCpTpEditionService); WxCpTpIdConvertService getWxCpTpIdConverService(); void setWxCpTpIdConverService(WxCpTpIdConvertService wxCpTpIdConvertService); /** * 构造第三方应用oauth2链接 */ WxCpTpOAuth2Service getWxCpTpOAuth2Service(); void setWxCpTpOAuth2Service(WxCpTpOAuth2Service wxCpTpOAuth2Service); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy