package chanjarster.weixin.api; import java.io.File; import java.io.IOException; import java.io.InputStream; import chanjarster.weixin.bean.WxCustomMessage; import chanjarster.weixin.bean.WxMassGroupMessage; import chanjarster.weixin.bean.WxMassNews; import chanjarster.weixin.bean.WxMassOpenIdsMessage; import chanjarster.weixin.bean.WxMassVideo; import chanjarster.weixin.bean.WxMenu; import chanjarster.weixin.bean.result.WxMassUploadResult; import chanjarster.weixin.bean.result.WxMassSendResult; import chanjarster.weixin.bean.result.WxMediaUploadResult; import chanjarster.weixin.exception.WxErrorException; /** * 微信API的Service */ public interface WxService { /** *
* 验证推送过来的消息的正确性 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=验证消息真实性 ** @param timestamp * @param nonce * @param signature * @return */ public boolean checkSignature(String timestamp, String nonce, String signature); /** *
* 获取access_token,本方法线程安全 * 且在多线程同时刷新时只刷新一次,避免超出2000次/日的调用次数上限 * * 另:本service的所有方法都会在access_token过期是调用此方法 * * 程序员在非必要情况下尽量不要主动调用此方法 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token ** @throws WxErrorException */ public void accessTokenRefresh() throws WxErrorException; /** *
* 上传多媒体文件 * * 上传的多媒体文件有格式和大小限制,如下: * 图片(image): 1M,支持JPG格式 * 语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式 * 视频(video):10MB,支持MP4格式 * 缩略图(thumb):64KB,支持JPG格式 * * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件 ** @param mediaType 媒体类型, 请看{@link WxConsts} * @param fileType 文件类型,请看{@link WxConsts} * @param inputStream 输入流 * @throws WxErrorException */ public WxMediaUploadResult mediaUpload(String mediaType, String fileType, InputStream inputStream) throws WxErrorException, IOException; /** * @see #mediaUpload(String, String, InputStream) * @param mediaType * @param file * @throws WxErrorException */ public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException; /** *
* 下载多媒体文件 * * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=上传下载多媒体文件 ** @params media_id * @return 保存到本地的临时文件 * @throws WxErrorException */ public File mediaDownload(String media_id) throws WxErrorException; /** *
* 发送客服消息 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=发送客服消息 ** @param message * @throws WxErrorException */ public void customMessageSend(WxCustomMessage message) throws WxErrorException; /** *
* 上传群发用的图文消息,上传后才能群发图文消息 * * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口 ** @param news * @throws WxErrorException * @see #massGroupMessageSend(WxMassGroupMessage) * @see #massOpenIdsMessageSend(WxMassOpenIdsMessage) */ public WxMassUploadResult massNewsUpload(WxMassNews news) throws WxErrorException; /** *
* 上传群发用的视频,上传后才能群发视频消息 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口 ** @return * @throws WxErrorException * @see #massGroupMessageSend(WxMassGroupMessage) * @see #massOpenIdsMessageSend(WxMassOpenIdsMessage) */ public WxMassUploadResult massVideoUpload(WxMassVideo video) throws WxErrorException; /** *
* 分组群发消息 * 如果发送图文消息,必须先使用 {@link #massNewsUpload(WxMassNews)} 获得media_id,然后再发送 * 如果发送视频消息,必须先使用 {@link #massVideoUpload(WxMassVideo)} 获得media_id,然后再发送 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口 ** @param message * @throws WxErrorException * @return */ public WxMassSendResult massGroupMessageSend(WxMassGroupMessage message) throws WxErrorException; /** *
* 按openId列表群发消息 * 如果发送图文消息,必须先使用 {@link #massNewsUpload(WxMassNews)} 获得media_id,然后再发送 * 如果发送视频消息,必须先使用 {@link #massVideoUpload(WxMassVideo)} 获得media_id,然后再发送 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口 ** @param message * @return * @throws WxErrorException */ public WxMassSendResult massOpenIdsMessageSend(WxMassOpenIdsMessage message) throws WxErrorException; /** *
* 自定义菜单创建接口 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单创建接口 ** @param menu * @throws WxErrorException */ public void menuCreate(WxMenu menu) throws WxErrorException; /** *
* 自定义菜单删除接口 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单删除接口 ** @throws WxErrorException */ public void menuDelete() throws WxErrorException; /** *
* 自定义菜单查询接口 * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单查询接口 ** @return * @throws WxErrorException */ public WxMenu menuGet() throws WxErrorException; public void setWxConfigStorage(WxConfigStorage wxConfigProvider); }