me.chanjar.weixin.cp.api

## 类 WxCpServiceImpl

- java.lang.Object
- - me.chanjar.weixin.cp.api.WxCpServiceImpl

所有已实现的接口:
  WxCpService

    public class WxCpServiceImpl
    extends Object
    implements WxCpService

### 字段概要

字段
`protected WxCpConfigStorage` `configStorage`
`protected Object` `globalAccessTokenRefreshLock` 全局的是否正在刷新access token的锁
`protected Object` `globalJsapiTicketRefreshLock` 全局的是否正在刷新jsapi_ticket的锁
`protected org.apache.http.impl.client.CloseableHttpClient` `httpClient`
`protected org.apache.http.HttpHost` `httpProxy`
`protected org.slf4j.Logger` `log`
`protected WxSessionManager` `sessionManager`
`protected File` `tmpDirFile` 临时文件目录

### 构造器概要

构造器
构造器和说明
`WxCpServiceImpl()`

### 方法概要

方法
`boolean` `checkSignature(String msgSignature, String timestamp, String nonce, String data)` 验证推送过来的消息的正确性 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`WxJsapiSignature` `createJsapiSignature(String url)` 创建调用jsapi时所需要的签名 详情请见：http://qydev.weixin.qq.com/wiki/index.php?
`Integer` `departCreate(WxCpDepart depart)` 部门管理接口 - 创建部门 最多支持创建500个部门 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`void` `departDelete(Integer departId)` 部门管理接口 - 删除部门
`List<WxCpDepart>` `departGet()` 部门管理接口 - 查询所有部门 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`List<WxCpUser>` `departGetUsers(Integer departId, Boolean fetchChild, Integer status)` 获取部门成员 http://qydev.weixin.qq.com/wiki/index.php?
`void` `departUpdate(WxCpDepart group)` 部门管理接口 - 修改部门名 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`<T,E> T` `execute(RequestExecutor<T,E> executor, String uri, E data)` 向微信端发送请求，在这里执行的策略是当发生access_token过期时才去刷新，然后重新执行请求，而不是全局定时请求
`protected <T,E> T` `executeInternal(RequestExecutor<T,E> executor, String uri, E data)`
`String` `get(String url, String queryParam)` 当本Service没有实现某个API的时候，可以用这个，针对所有微信API中的GET请求
`String` `getAccessToken()` 获取access_token, 不强制刷新access_token
`String` `getAccessToken(boolean forceRefresh)` 获取access_token，本方法线程安全 且在多线程同时刷新时只刷新一次，避免超出2000次/日的调用次数上限 另：本service的所有方法都会在access_token过期是调用此方法 程序员在非必要情况下尽量不要主动调用此方法 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`String[]` `getCallbackIp()` 获取微信服务器的ip段 http://qydev.weixin.qq.com/wiki/index.php?
`protected org.apache.http.impl.client.CloseableHttpClient` `getHttpclient()`
`String` `getJsapiTicket()` 获得jsapi_ticket,不强制刷新jsapi_ticket
`String` `getJsapiTicket(boolean forceRefresh)` 获得jsapi_ticket 获得时会检查jsapiToken是否过期，如果过期了，那么就刷新一下，否则就什么都不干 详情请见：http://qydev.weixin.qq.com/wiki/index.php?
`WxSession` `getSession(String id)` 获取某个sessionId对应的session,如果sessionId没有对应的session，则新建一个并返回。
`WxSession` `getSession(String id, boolean create)` 获取某个sessionId对应的session,如果sessionId没有对应的session，若create为true则新建一个，否则返回null。
`String` `getTaskResult(String joinId)` 获取异步任务结果
`File` `getTmpDirFile()`
`int` `invite(String userId, String inviteTips)` 邀请成员关注 http://qydev.weixin.qq.com/wiki/index.php?
`File` `mediaDownload(String media_id)` 下载多媒体文件 根据微信文档，视频文件下载不了，会返回null 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`WxMediaUploadResult` `mediaUpload(String mediaType, File file)`
`WxMediaUploadResult` `mediaUpload(String mediaType, String fileType, InputStream inputStream)` 上传多媒体文件 上传的多媒体文件有格式和大小限制，如下： 图片（image）: 1M，支持JPG格式 语音（voice）：2M，播放长度不超过60s，支持AMR\MP3格式 视频（video）：10MB，支持MP4格式 缩略图（thumb）：64KB，支持JPG格式 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`void` `menuCreate(Integer agentId, WxMenu menu)` 自定义菜单创建接口 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`void` `menuCreate(WxMenu menu)` 自定义菜单创建接口 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`void` `menuDelete()` 自定义菜单删除接口 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`void` `menuDelete(Integer agentId)` 自定义菜单删除接口 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`WxMenu` `menuGet()` 自定义菜单查询接口 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`WxMenu` `menuGet(Integer agentId)` 自定义菜单查询接口 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`void` `messageSend(WxCpMessage message)` 发送消息 详情请见: http://mp.weixin.qq.com/wiki/index.php?
`String` `oauth2buildAuthorizationUrl(String state)` 构造oauth2授权的url连接
`String` `oauth2buildAuthorizationUrl(String redirectUri, String state)` 构造oauth2授权的url连接 详情请见: http://qydev.weixin.qq.com/wiki/index.php?
`String[]` `oauth2getUserInfo(Integer agentId, String code)` 用oauth2获取用户信息 http://qydev.weixin.qq.com/wiki/index.php?
`String[]` `oauth2getUserInfo(String code)` 用oauth2获取用户信息 http://qydev.weixin.qq.com/wiki/index.php?
`String` `post(String url, String postData)` 当本Service没有实现某个API的时候，可以用这个，针对所有微信API中的POST请求
`String` `replaceParty(String mediaId)` 上传部门列表覆盖企业号上的部门信息
`String` `replaceUser(String mediaId)` 上传用户列表覆盖企业号上的用户信息
`void` `setMaxRetryTimes(int maxRetryTimes)` 设置当微信系统响应系统繁忙时，最大重试次数 默认：5次
`void` `setRetrySleepMillis(int retrySleepMillis)` 设置当微信系统响应系统繁忙时，要等待多少 retrySleepMillis(ms) * 2^(重试次数 - 1) 再发起重试 默认：1000ms
`void` `setSessionManager(WxSessionManager sessionManager)` 设置WxSessionManager，只有当需要使用个性化的WxSessionManager的时候才需要调用此方法， WxCpService默认使用的是`StandardSessionManager`
`void` `setTmpDirFile(File tmpDirFile)`
`void` `setWxCpConfigStorage(WxCpConfigStorage wxConfigProvider)` 注入 `WxCpConfigStorage` 的实现
`void` `tagAddUsers(String tagId, List<String> userIds, List<String> partyIds)` 增加标签成员
`String` `tagCreate(String tagName)` 创建标签
`void` `tagDelete(String tagId)` 删除标签
`List<WxCpTag>` `tagGet()` 获得标签列表
`List<WxCpUser>` `tagGetUsers(String tagId)` 获取标签成员
`void` `tagRemoveUsers(String tagId, List<String> userIds)` 移除标签成员
`void` `tagUpdate(String tagId, String tagName)` 更新标签
`void` `userAuthenticated(String userId)` 用在二次验证的时候 企业在员工验证成功后，调用本方法告诉企业号平台该员工关注成功。
`void` `userCreate(WxCpUser user)` 新建用户
`void` `userDelete(String userid)` 删除用户
`void` `userDelete(String[] userids)` 批量删除成员 http://qydev.weixin.qq.com/wiki/index.php?
`WxCpUser` `userGet(String userid)` 获取用户
`List<WxCpUser>` `userList(Integer departId, Boolean fetchChild, Integer status)` 获取部门成员(详情) http://qydev.weixin.qq.com/wiki/index.php?
`void` `userUpdate(WxCpUser user)` 更新用户

### 从类继承的方法 java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### 字段详细资料

#### log

    protected final org.slf4j.Logger log

#### globalAccessTokenRefreshLock

    protected final Object globalAccessTokenRefreshLock

全局的是否正在刷新access token的锁

#### globalJsapiTicketRefreshLock

    protected final Object globalJsapiTicketRefreshLock

全局的是否正在刷新jsapi_ticket的锁

#### configStorage

    protected WxCpConfigStorage configStorage

#### httpClient

    protected org.apache.http.impl.client.CloseableHttpClient httpClient

#### httpProxy

    protected org.apache.http.HttpHost httpProxy

#### sessionManager

    protected WxSessionManager sessionManager

#### tmpDirFile

    protected File tmpDirFile

临时文件目录

### 构造器详细资料

#### WxCpServiceImpl

    public WxCpServiceImpl()

### 方法详细资料

#### checkSignature

    public boolean checkSignature(String msgSignature,
                         String timestamp,
                         String nonce,
                         String data)

从接口复制的说明: `WxCpService`

     验证推送过来的消息的正确性
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=验证消息真实性

指定者:
  `checkSignature` 在接口中 `WxCpService`
  `data` - 微信传输过来的数据，有可能是echoStr，有可能是xml消息

#### userAuthenticated

    public void userAuthenticated(String userId)
                           throws WxErrorException

从接口复制的说明: `WxCpService`

       用在二次验证的时候
       企业在员工验证成功后，调用本方法告诉企业号平台该员工关注成功。

指定者:
  `userAuthenticated` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### getAccessToken

    public String getAccessToken()
                          throws WxErrorException

从接口复制的说明: `WxCpService`
获取access_token, 不强制刷新access_token

指定者:
  `getAccessToken` 在接口中 `WxCpService`
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.getAccessToken(boolean)`

#### getAccessToken

    public String getAccessToken(boolean forceRefresh)
                          throws WxErrorException

从接口复制的说明: `WxCpService`

     获取access_token，本方法线程安全
     且在多线程同时刷新时只刷新一次，避免超出2000次/日的调用次数上限
     另：本service的所有方法都会在access_token过期是调用此方法
     程序员在非必要情况下尽量不要主动调用此方法
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token

指定者:
  `getAccessToken` 在接口中 `WxCpService`
参数:
  `forceRefresh` - 强制刷新
抛出:
  `WxErrorException`

#### getJsapiTicket

    public String getJsapiTicket()
                          throws WxErrorException

从接口复制的说明: `WxCpService`
获得jsapi_ticket,不强制刷新jsapi_ticket

指定者:
  `getJsapiTicket` 在接口中 `WxCpService`
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.getJsapiTicket(boolean)`

#### getJsapiTicket

    public String getJsapiTicket(boolean forceRefresh)
                          throws WxErrorException

从接口复制的说明: `WxCpService`

     获得jsapi_ticket
     获得时会检查jsapiToken是否过期，如果过期了，那么就刷新一下，否则就什么都不干

     详情请见：http://qydev.weixin.qq.com/wiki/index.php?title=微信JS接口#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95

指定者:
  `getJsapiTicket` 在接口中 `WxCpService`
参数:
  `forceRefresh` - 强制刷新
抛出:
  `WxErrorException`

#### createJsapiSignature

    public WxJsapiSignature createJsapiSignature(String url)
                                          throws WxErrorException

从接口复制的说明: `WxCpService`

     创建调用jsapi时所需要的签名

     详情请见：http://qydev.weixin.qq.com/wiki/index.php?title=微信JS接口#.E9.99.84.E5.BD.951-JS-SDK.E4.BD.BF.E7.94.A8.E6.9D.83.E9.99.90.E7.AD.BE.E5.90.8D.E7.AE.97.E6.B3.95

指定者:
  `createJsapiSignature` 在接口中 `WxCpService`
参数:
  `url` - url
抛出:
  `WxErrorException`

#### messageSend

    public void messageSend(WxCpMessage message)
                     throws WxErrorException

从接口复制的说明: `WxCpService`

     发送消息
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=发送消息

指定者:
  `messageSend` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### menuCreate

    public void menuCreate(WxMenu menu)
                    throws WxErrorException

从接口复制的说明: `WxCpService`

     自定义菜单创建接口
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单创建接口

     注意: 这个方法使用WxCpConfigStorage里的agentId

指定者:
  `menuCreate` 在接口中 `WxCpService`
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.menuCreate(Integer, WxMenu)`

#### menuCreate

    public void menuCreate(Integer agentId,
                  WxMenu menu)
                    throws WxErrorException

从接口复制的说明: `WxCpService`

     自定义菜单创建接口
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单创建接口

     注意: 这个方法不使用WxCpConfigStorage里的agentId，需要开发人员自己给出

指定者:
  `menuCreate` 在接口中 `WxCpService`
参数:
  `agentId` - 企业号应用的id
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.menuCreate(me.chanjar.weixin.common.bean.menu.WxMenu)`

#### menuDelete

    public void menuDelete()
                    throws WxErrorException

从接口复制的说明: `WxCpService`

     自定义菜单删除接口
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单删除接口

     注意: 这个方法使用WxCpConfigStorage里的agentId

指定者:
  `menuDelete` 在接口中 `WxCpService`
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.menuDelete(Integer)`

#### menuDelete

    public void menuDelete(Integer agentId)
                    throws WxErrorException

从接口复制的说明: `WxCpService`

     自定义菜单删除接口
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单删除接口

     注意: 这个方法不使用WxCpConfigStorage里的agentId，需要开发人员自己给出

指定者:
  `menuDelete` 在接口中 `WxCpService`
参数:
  `agentId` - 企业号应用的id
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.menuDelete()`

#### menuGet

    public WxMenu menuGet()
                   throws WxErrorException

从接口复制的说明: `WxCpService`

     自定义菜单查询接口
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单查询接口

     注意: 这个方法使用WxCpConfigStorage里的agentId

指定者:
  `menuGet` 在接口中 `WxCpService`
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.menuGet(Integer)`

#### menuGet

    public WxMenu menuGet(Integer agentId)
                   throws WxErrorException

从接口复制的说明: `WxCpService`

     自定义菜单查询接口
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单查询接口

     注意: 这个方法不使用WxCpConfigStorage里的agentId，需要开发人员自己给出

指定者:
  `menuGet` 在接口中 `WxCpService`
参数:
  `agentId` - 企业号应用的id
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.menuGet()`

#### mediaUpload

    public WxMediaUploadResult mediaUpload(String mediaType,
                                  String fileType,
                                  InputStream inputStream)
                                    throws WxErrorException,
                                           IOException

从接口复制的说明: `WxCpService`

     上传多媒体文件
     上传的多媒体文件有格式和大小限制，如下：
       图片（image）: 1M，支持JPG格式
       语音（voice）：2M，播放长度不超过60s，支持AMR\MP3格式
       视频（video）：10MB，支持MP4格式
       缩略图（thumb）：64KB，支持JPG格式
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件

指定者:
  `mediaUpload` 在接口中 `WxCpService`
参数:
  `mediaType` - 媒体类型, 请看`WxConsts`
  `fileType` - 文件类型，请看`WxConsts`
  `inputStream` - 输入流
抛出:
  `WxErrorException`
  `IOException`

#### mediaUpload

    public WxMediaUploadResult mediaUpload(String mediaType,
                                  File file)
                                    throws WxErrorException

指定者:
  `mediaUpload` 在接口中 `WxCpService`
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.mediaUpload(String, String, InputStream)`

#### mediaDownload

    public File mediaDownload(String media_id)
                       throws WxErrorException

从接口复制的说明: `WxCpService`

     下载多媒体文件
     根据微信文档，视频文件下载不了，会返回null
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件

指定者:
  `mediaDownload` 在接口中 `WxCpService`
返回:
  保存到本地的临时文件
抛出:
  `WxErrorException`

#### departCreate

    public Integer departCreate(WxCpDepart depart)
                         throws WxErrorException

从接口复制的说明: `WxCpService`

     部门管理接口 - 创建部门
     最多支持创建500个部门
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=部门管理接口

指定者:
  `departCreate` 在接口中 `WxCpService`
参数:
  `depart` - 部门
返回:
  部门id
抛出:
  `WxErrorException`

#### departUpdate

    public void departUpdate(WxCpDepart group)
                      throws WxErrorException

从接口复制的说明: `WxCpService`

     部门管理接口 - 修改部门名
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=部门管理接口
     如果id为0(未部门),1(黑名单),2(星标组)，或者不存在的id，微信会返回系统繁忙的错误

指定者:
  `departUpdate` 在接口中 `WxCpService`
参数:
  `group` - 要更新的group，group的id,name必须设置
抛出:
  `WxErrorException`

#### departDelete

    public void departDelete(Integer departId)
                      throws WxErrorException

从接口复制的说明: `WxCpService`

     部门管理接口 - 删除部门

指定者:
  `departDelete` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### departGet

    public List<WxCpDepart> departGet()
                               throws WxErrorException

从接口复制的说明: `WxCpService`

     部门管理接口 - 查询所有部门
     详情请见: http://mp.weixin.qq.com/wiki/index.php?title=部门管理接口

指定者:
  `departGet` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### userCreate

    public void userCreate(WxCpUser user)
                    throws WxErrorException

从接口复制的说明: `WxCpService`
新建用户

指定者:
  `userCreate` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### userUpdate

    public void userUpdate(WxCpUser user)
                    throws WxErrorException

从接口复制的说明: `WxCpService`
更新用户

指定者:
  `userUpdate` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### userDelete

    public void userDelete(String userid)
                    throws WxErrorException

从接口复制的说明: `WxCpService`
删除用户

指定者:
  `userDelete` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### userDelete

    public void userDelete(String[] userids)
                    throws WxErrorException

从接口复制的说明: `WxCpService`

     批量删除成员

     http://qydev.weixin.qq.com/wiki/index.php?title=管理成员#.E6.89.B9.E9.87.8F.E5.88.A0.E9.99.A4.E6.88.90.E5.91.98

指定者:
  `userDelete` 在接口中 `WxCpService`
参数:
  `userids` - 员工UserID列表。对应管理端的帐号
抛出:
  `WxErrorException`

#### userGet

    public WxCpUser userGet(String userid)
                     throws WxErrorException

从接口复制的说明: `WxCpService`
获取用户

指定者:
  `userGet` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### userList

    public List<WxCpUser> userList(Integer departId,
                          Boolean fetchChild,
                          Integer status)
                            throws WxErrorException

从接口复制的说明: `WxCpService`

     获取部门成员(详情)

     http://qydev.weixin.qq.com/wiki/index.php?title=管理成员#.E8.8E.B7.E5.8F.96.E9.83.A8.E9.97.A8.E6.88.90.E5.91.98.28.E8.AF.A6.E6.83.85.29

指定者:
  `userList` 在接口中 `WxCpService`
参数:
  `departId` - 必填。部门id
  `fetchChild` - 非必填。1/0：是否递归获取子部门下面的成员
  `status` - 非必填。0获取全部员工，1获取已关注成员列表，2获取禁用成员列表，4获取未关注成员列表。status可叠加
抛出:
  `WxErrorException`

#### departGetUsers

    public List<WxCpUser> departGetUsers(Integer departId,
                                Boolean fetchChild,
                                Integer status)
                                  throws WxErrorException

从接口复制的说明: `WxCpService`

     获取部门成员

     http://qydev.weixin.qq.com/wiki/index.php?title=管理成员#.E8.8E.B7.E5.8F.96.E9.83.A8.E9.97.A8.E6.88.90.E5.91.98

指定者:
  `departGetUsers` 在接口中 `WxCpService`
参数:
  `departId` - 必填。部门id
  `fetchChild` - 非必填。1/0：是否递归获取子部门下面的成员
  `status` - 非必填。0获取全部员工，1获取已关注成员列表，2获取禁用成员列表，4获取未关注成员列表。status可叠加
抛出:
  `WxErrorException`

#### tagCreate

    public String tagCreate(String tagName)
                     throws WxErrorException

从接口复制的说明: `WxCpService`
创建标签

指定者:
  `tagCreate` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### tagUpdate

    public void tagUpdate(String tagId,
                 String tagName)
                   throws WxErrorException

从接口复制的说明: `WxCpService`
更新标签

指定者:
  `tagUpdate` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### tagDelete

    public void tagDelete(String tagId)
                   throws WxErrorException

从接口复制的说明: `WxCpService`
删除标签

指定者:
  `tagDelete` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### tagGet

    public List<WxCpTag> tagGet()
                         throws WxErrorException

从接口复制的说明: `WxCpService`
获得标签列表

指定者:
  `tagGet` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### tagGetUsers

    public List<WxCpUser> tagGetUsers(String tagId)
                               throws WxErrorException

从接口复制的说明: `WxCpService`
获取标签成员

指定者:
  `tagGetUsers` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### tagAddUsers

    public void tagAddUsers(String tagId,
                   List<String> userIds,
                   List<String> partyIds)
                     throws WxErrorException

从接口复制的说明: `WxCpService`
增加标签成员

指定者:
  `tagAddUsers` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### tagRemoveUsers

    public void tagRemoveUsers(String tagId,
                      List<String> userIds)
                        throws WxErrorException

从接口复制的说明: `WxCpService`
移除标签成员

指定者:
  `tagRemoveUsers` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### oauth2buildAuthorizationUrl

    public String oauth2buildAuthorizationUrl(String state)

从接口复制的说明: `WxCpService`

     构造oauth2授权的url连接

指定者:
  `oauth2buildAuthorizationUrl` 在接口中 `WxCpService`
返回:
  url

#### oauth2buildAuthorizationUrl

    public String oauth2buildAuthorizationUrl(String redirectUri,
                                     String state)

从接口复制的说明: `WxCpService`

     构造oauth2授权的url连接
     详情请见: http://qydev.weixin.qq.com/wiki/index.php?title=企业获取code

指定者:
  `oauth2buildAuthorizationUrl` 在接口中 `WxCpService`
返回:
  url

#### oauth2getUserInfo

    public String[] oauth2getUserInfo(String code)
                               throws WxErrorException

从接口复制的说明: `WxCpService`

     用oauth2获取用户信息
     http://qydev.weixin.qq.com/wiki/index.php?title=根据code获取成员信息
     因为企业号oauth2.0必须在应用设置里设置通过ICP备案的可信域名，所以无法测试，因此这个方法很可能是坏的。

     注意: 这个方法使用WxCpConfigStorage里的agentId

指定者:
  `oauth2getUserInfo` 在接口中 `WxCpService`
返回:
  [userid, deviceid]
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.oauth2getUserInfo(Integer, String)`

#### oauth2getUserInfo

    public String[] oauth2getUserInfo(Integer agentId,
                             String code)
                               throws WxErrorException

从接口复制的说明: `WxCpService`

     用oauth2获取用户信息
     http://qydev.weixin.qq.com/wiki/index.php?title=根据code获取成员信息
     因为企业号oauth2.0必须在应用设置里设置通过ICP备案的可信域名，所以无法测试，因此这个方法很可能是坏的。

     注意: 这个方法不使用WxCpConfigStorage里的agentId，需要开发人员自己给出

指定者:
  `oauth2getUserInfo` 在接口中 `WxCpService`
参数:
  `agentId` - 企业号应用的id
返回:
  [userid, deviceid]
抛出:
  `WxErrorException`
另请参阅:
  `WxCpService.oauth2getUserInfo(String)`

#### invite

    public int invite(String userId,
             String inviteTips)
               throws WxErrorException

从接口复制的说明: `WxCpService`

     邀请成员关注
     http://qydev.weixin.qq.com/wiki/index.php?title=管理成员#.E9.82.80.E8.AF.B7.E6.88.90.E5.91.98.E5.85.B3.E6.B3.A8

指定者:
  `invite` 在接口中 `WxCpService`
参数:
  `userId` - 用户的userid
  `inviteTips` - 推送到微信上的提示语（只有认证号可以使用）。当使用微信推送时，该字段默认为“请关注XXX企业号”，邮件邀请时，该字段无效。
返回:
  1:微信邀请 2.邮件邀请
抛出:
  `WxErrorException`

#### getCallbackIp

    public String[] getCallbackIp()
                           throws WxErrorException

从接口复制的说明: `WxCpService`

     获取微信服务器的ip段
     http://qydev.weixin.qq.com/wiki/index.php?title=回调模式#.E8.8E.B7.E5.8F.96.E5.BE.AE.E4.BF.A1.E6.9C.8D.E5.8A.A1.E5.99.A8.E7.9A.84ip.E6.AE.B5

指定者:
  `getCallbackIp` 在接口中 `WxCpService`
返回:
  { "ip_list": ["101.226.103.*", "101.226.62.*"] }
抛出:
  `WxErrorException`

#### get

    public String get(String url,
             String queryParam)
               throws WxErrorException

从接口复制的说明: `WxCpService`
当本Service没有实现某个API的时候，可以用这个，针对所有微信API中的GET请求

指定者:
  `get` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### post

    public String post(String url,
              String postData)
                throws WxErrorException

从接口复制的说明: `WxCpService`
当本Service没有实现某个API的时候，可以用这个，针对所有微信API中的POST请求

指定者:
  `post` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### execute

    public <T,E> T execute(RequestExecutor<T,E> executor,
                  String uri,
                  E data)
              throws WxErrorException

向微信端发送请求，在这里执行的策略是当发生access_token过期时才去刷新，然后重新执行请求，而不是全局定时请求

指定者:
  `execute` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### executeInternal

    protected <T,E> T executeInternal(RequestExecutor<T,E> executor,
                          String uri,
                          E data)
                         throws WxErrorException

抛出:
  `WxErrorException`

#### getHttpclient

    protected org.apache.http.impl.client.CloseableHttpClient getHttpclient()

#### setWxCpConfigStorage

    public void setWxCpConfigStorage(WxCpConfigStorage wxConfigProvider)

从接口复制的说明: `WxCpService`
注入 `WxCpConfigStorage` 的实现

指定者:
  `setWxCpConfigStorage` 在接口中 `WxCpService`

#### setRetrySleepMillis

    public void setRetrySleepMillis(int retrySleepMillis)

从接口复制的说明: `WxCpService`

     设置当微信系统响应系统繁忙时，要等待多少 retrySleepMillis(ms) * 2^(重试次数 - 1) 再发起重试
     默认：1000ms

指定者:
  `setRetrySleepMillis` 在接口中 `WxCpService`

#### setMaxRetryTimes

    public void setMaxRetryTimes(int maxRetryTimes)

从接口复制的说明: `WxCpService`

     设置当微信系统响应系统繁忙时，最大重试次数
     默认：5次

指定者:
  `setMaxRetryTimes` 在接口中 `WxCpService`

#### getSession

    public WxSession getSession(String id)

从接口复制的说明: `WxCpService`
获取某个sessionId对应的session,如果sessionId没有对应的session，则新建一个并返回。

指定者:
  `getSession` 在接口中 `WxCpService`
参数:
  `id` - id可以为任意字符串，建议使用FromUserName作为id

#### getSession

    public WxSession getSession(String id,
                       boolean create)

从接口复制的说明: `WxCpService`
获取某个sessionId对应的session,如果sessionId没有对应的session，若create为true则新建一个，否则返回null。

指定者:
  `getSession` 在接口中 `WxCpService`
参数:
  `id` - id可以为任意字符串，建议使用FromUserName作为id

#### setSessionManager

    public void setSessionManager(WxSessionManager sessionManager)

从接口复制的说明: `WxCpService`

     设置WxSessionManager，只有当需要使用个性化的WxSessionManager的时候才需要调用此方法，
     WxCpService默认使用的是StandardSessionManager

指定者:
  `setSessionManager` 在接口中 `WxCpService`

#### replaceParty

    public String replaceParty(String mediaId)
                        throws WxErrorException

从接口复制的说明: `WxCpService`
上传部门列表覆盖企业号上的部门信息

指定者:
  `replaceParty` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### replaceUser

    public String replaceUser(String mediaId)
                       throws WxErrorException

从接口复制的说明: `WxCpService`
上传用户列表覆盖企业号上的用户信息

指定者:
  `replaceUser` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### getTaskResult

    public String getTaskResult(String joinId)
                         throws WxErrorException

从接口复制的说明: `WxCpService`
获取异步任务结果

指定者:
  `getTaskResult` 在接口中 `WxCpService`
抛出:
  `WxErrorException`

#### getTmpDirFile

    public File getTmpDirFile()

#### setTmpDirFile

    public void setTmpDirFile(File tmpDirFile)