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

me.chanjar.weixin.mp.api.WxMpService Maven / Gradle / Ivy

package me.chanjar.weixin.mp.api;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
import java.util.Map;

import me.chanjar.weixin.common.bean.WxCardApiSignature;
import me.chanjar.weixin.common.bean.WxJsapiSignature;
import me.chanjar.weixin.common.bean.WxMenu;
import me.chanjar.weixin.common.bean.result.WxMediaUploadResult;
import me.chanjar.weixin.common.exception.WxErrorException;
import me.chanjar.weixin.common.util.http.RequestExecutor;
import me.chanjar.weixin.mp.bean.WxMpCustomMessage;
import me.chanjar.weixin.mp.bean.WxMpGroup;
import me.chanjar.weixin.mp.bean.WxMpIndustry;
import me.chanjar.weixin.mp.bean.WxMpMassGroupMessage;
import me.chanjar.weixin.mp.bean.WxMpMassNews;
import me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage;
import me.chanjar.weixin.mp.bean.WxMpMassPreviewMessage;
import me.chanjar.weixin.mp.bean.WxMpMassVideo;
import me.chanjar.weixin.mp.bean.WxMpMaterial;
import me.chanjar.weixin.mp.bean.WxMpMaterialArticleUpdate;
import me.chanjar.weixin.mp.bean.WxMpMaterialNews;
import me.chanjar.weixin.mp.bean.WxMpSemanticQuery;
import me.chanjar.weixin.mp.bean.WxMpTemplateMessage;
import me.chanjar.weixin.mp.bean.result.WxMediaImgUploadResult;
import me.chanjar.weixin.mp.bean.result.WxMpCardResult;
import me.chanjar.weixin.mp.bean.result.WxMpMassSendResult;
import me.chanjar.weixin.mp.bean.result.WxMpMassUploadResult;
import me.chanjar.weixin.mp.bean.result.WxMpMaterialCountResult;
import me.chanjar.weixin.mp.bean.result.WxMpMaterialFileBatchGetResult;
import me.chanjar.weixin.mp.bean.result.WxMpMaterialNewsBatchGetResult;
import me.chanjar.weixin.mp.bean.result.WxMpMaterialUploadResult;
import me.chanjar.weixin.mp.bean.result.WxMpMaterialVideoInfoResult;
import me.chanjar.weixin.mp.bean.result.WxMpOAuth2AccessToken;
import me.chanjar.weixin.mp.bean.result.WxMpPayCallback;
import me.chanjar.weixin.mp.bean.result.WxMpPayRefundResult;
import me.chanjar.weixin.mp.bean.result.WxMpPayResult;
import me.chanjar.weixin.mp.bean.result.WxMpPrepayIdResult;
import me.chanjar.weixin.mp.bean.result.WxMpQrCodeTicket;
import me.chanjar.weixin.mp.bean.result.WxMpSemanticQueryResult;
import me.chanjar.weixin.mp.bean.result.WxMpUser;
import me.chanjar.weixin.mp.bean.result.WxMpUserCumulate;
import me.chanjar.weixin.mp.bean.result.WxMpUserList;
import me.chanjar.weixin.mp.bean.result.WxMpUserSummary;
import me.chanjar.weixin.mp.bean.result.WxRedpackResult;

/**
 * 微信API的Service
 */
public interface WxMpService {

  public static final SimpleDateFormat SIMPLE_DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
  /**
   * 
   * 验证推送过来的消息的正确性
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=验证消息真实性
   * 
*/ public boolean checkSignature(String timestamp, String nonce, String signature); /** * 获取access_token, 不强制刷新access_token * @see #getAccessToken(boolean) */ public String getAccessToken() throws WxErrorException; /** *
   * 获取access_token,本方法线程安全
   * 且在多线程同时刷新时只刷新一次,避免超出2000次/日的调用次数上限
   *
   * 另:本service的所有方法都会在access_token过期是调用此方法
   *
   * 程序员在非必要情况下尽量不要主动调用此方法

   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取access_token
   * 
* @param forceRefresh 强制刷新 */ public String getAccessToken(boolean forceRefresh) throws WxErrorException; /** * 获得jsapi_ticket,不强制刷新jsapi_ticket * @see #getJsapiTicket(boolean) */ public String getJsapiTicket() throws WxErrorException; /** *
   * 获得jsapi_ticket
   * 获得时会检查jsapiToken是否过期,如果过期了,那么就刷新一下,否则就什么都不干
   *
   * 详情请见:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.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
   * 
* @param forceRefresh 强制刷新 */ public String getJsapiTicket(boolean forceRefresh) throws WxErrorException; /** *
   * 创建调用jsapi时所需要的签名
   *
   * 详情请见:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.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
   * 
*/ public WxJsapiSignature createJsapiSignature(String url) throws WxErrorException; /** *
   * 新增临时素材
   * 本接口即为原“上传多媒体文件”接口。
   *
   * 上传的多媒体文件有格式和大小限制,如下:
   *   图片(image): 1M,支持JPG格式
   *   语音(voice):2M,播放长度不超过60s,支持AMR\MP3格式
   *   视频(video):10MB,支持MP4格式
   *   缩略图(thumb):64KB,支持JPG格式
   *
   * 详情请见: 新增临时素材
   * 
* @param mediaType 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts} * @param fileType 文件类型,请看{@link me.chanjar.weixin.common.api.WxConsts} * @param inputStream 输入流 * @throws WxErrorException */ public WxMediaUploadResult mediaUpload(String mediaType, String fileType, InputStream inputStream) throws WxErrorException, IOException; /** *
   * 上传非图文永久素材
   *
   * 上传的多媒体文件有格式和大小限制,如下:
   *   图片(image): 图片大小不超过2M,支持bmp/png/jpeg/jpg/gif格式
   *   语音(voice):语音大小不超过5M,长度不超过60秒,支持mp3/wma/wav/amr格式
   *   视频(video):在上传视频素材时需要POST另一个表单,id为description,包含素材的描述信息,内容格式为JSON
   *   缩略图(thumb):文档未说明
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/14/7e6c03263063f4813141c3e17dd4350a.html
   * 
* @param mediaType 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts} * @param material 上传的素材, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterial} */ public WxMpMaterialUploadResult materialFileUpload(String mediaType, WxMpMaterial material) throws WxErrorException; /** *
   * 上传永久图文素材
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/14/7e6c03263063f4813141c3e17dd4350a.html
   * 
* @param news 上传的图文消息, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialNews} */ public WxMpMaterialUploadResult materialNewsUpload(WxMpMaterialNews news) throws WxErrorException; /** *
   * 下载声音或者图片永久素材
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/4/b3546879f07623cb30df9ca0e420a5d0.html
   * 
* @param media_id 永久素材的id */ public InputStream materialImageOrVoiceDownload(String media_id) throws WxErrorException; /** *
   * 获取视频永久素材的信息和下载地址
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/4/b3546879f07623cb30df9ca0e420a5d0.html
   * 
* @param media_id 永久素材的id */ public WxMpMaterialVideoInfoResult materialVideoInfo(String media_id) throws WxErrorException; /** *
   * 获取图文永久素材的信息
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/4/b3546879f07623cb30df9ca0e420a5d0.html
   * 
* @param media_id 永久素材的id */ public WxMpMaterialNews materialNewsInfo(String media_id) throws WxErrorException; /** *
   * 更新图文永久素材
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/4/19a59cba020d506e767360ca1be29450.html
   * 
* @param wxMpMaterialArticleUpdate 用来更新图文素材的bean, 请看{@link me.chanjar.weixin.mp.bean.WxMpMaterialArticleUpdate} */ public boolean materialNewsUpdate(WxMpMaterialArticleUpdate wxMpMaterialArticleUpdate) throws WxErrorException; /** *
   * 删除永久素材
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/5/e66f61c303db51a6c0f90f46b15af5f5.html
   * 
* @param media_id 永久素材的id */ public boolean materialDelete(String media_id) throws WxErrorException; /** *
   * 获取各类素材总数
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/16/8cc64f8c189674b421bee3ed403993b8.html
   * 
*/ public WxMpMaterialCountResult materialCount() throws WxErrorException; /** *
   * 分页获取图文素材列表
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/12/2108cd7aafff7f388f41f37efa710204.html
   * 
* @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 * @param count 返回素材的数量,取值在1到20之间 */ public WxMpMaterialNewsBatchGetResult materialNewsBatchGet(int offset, int count) throws WxErrorException; /** *
   * 分页获取其他媒体素材列表
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/12/2108cd7aafff7f388f41f37efa710204.html
   * 
* @param type 媒体类型, 请看{@link me.chanjar.weixin.common.api.WxConsts} * @param offset 从全部素材的该偏移位置开始返回,0表示从第一个素材 返回 * @param count 返回素材的数量,取值在1到20之间 */ public WxMpMaterialFileBatchGetResult materialFileBatchGet(String type, int offset, int count) throws WxErrorException; /** * 新增临时素材 * @see #mediaUpload(String, String, InputStream) * @param mediaType * @param file * @throws WxErrorException */ public WxMediaUploadResult mediaUpload(String mediaType, File file) throws WxErrorException; /** *
   * 获取临时素材
   * 本接口即为原“下载多媒体文件”接口。
   * 根据微信文档,视频文件下载不了,会返回null
   * 详情请见: 获取临时素材
   * 
* @param media_id * @return 保存到本地的临时文件 * @throws WxErrorException */ public File mediaDownload(String media_id) throws WxErrorException; /** *
   * 发送客服消息
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=发送客服消息
   * 
*/ public void customMessageSend(WxMpCustomMessage message) throws WxErrorException; /** *
   * 上传群发用的图文消息,上传后才能群发图文消息
   *
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口
   * 
* @param news * @throws WxErrorException * @see #massGroupMessageSend(me.chanjar.weixin.mp.bean.WxMpMassGroupMessage) * @see #massOpenIdsMessageSend(me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage) */ public WxMpMassUploadResult massNewsUpload(WxMpMassNews news) throws WxErrorException; /** *
   * 上传群发用的视频,上传后才能群发视频消息
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口
   * 
* @see #massGroupMessageSend(me.chanjar.weixin.mp.bean.WxMpMassGroupMessage) * @see #massOpenIdsMessageSend(me.chanjar.weixin.mp.bean.WxMpMassOpenIdsMessage) */ public WxMpMassUploadResult massVideoUpload(WxMpMassVideo video) throws WxErrorException; /** *
   * 分组群发消息
   * 如果发送图文消息,必须先使用 {@link #massNewsUpload(me.chanjar.weixin.mp.bean.WxMpMassNews)} 获得media_id,然后再发送
   * 如果发送视频消息,必须先使用 {@link #massVideoUpload(me.chanjar.weixin.mp.bean.WxMpMassVideo)} 获得media_id,然后再发送
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口
   * 
*/ public WxMpMassSendResult massGroupMessageSend(WxMpMassGroupMessage message) throws WxErrorException; /** *
   * 按openId列表群发消息
   * 如果发送图文消息,必须先使用 {@link #massNewsUpload(me.chanjar.weixin.mp.bean.WxMpMassNews)} 获得media_id,然后再发送
   * 如果发送视频消息,必须先使用 {@link #massVideoUpload(me.chanjar.weixin.mp.bean.WxMpMassVideo)} 获得media_id,然后再发送
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=高级群发接口
   * 
*/ public WxMpMassSendResult massOpenIdsMessageSend(WxMpMassOpenIdsMessage message) throws WxErrorException; /** *
   * 自定义菜单创建接口
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单创建接口
   * 如果要创建个性化菜单,请设置matchrule属性
   * 详情请见:http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
   * 
*/ public void menuCreate(WxMenu menu) throws WxErrorException; /** *
   * 自定义菜单删除接口
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单删除接口
   * 
*/ public void menuDelete() throws WxErrorException; /** *
   * 删除个性化菜单接口
   * 详情请见: http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
   * 
* @param menuid */ public void menuDelete(String menuid) throws WxErrorException; /** *
   * 自定义菜单查询接口
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=自定义菜单查询接口
   * 
*/ public WxMenu menuGet() throws WxErrorException; /** *
   * 测试个性化菜单匹配结果
   * 详情请见: http://mp.weixin.qq.com/wiki/0/c48ccd12b69ae023159b4bfaa7c39c20.html
   * 
* @param userid 可以是粉丝的OpenID,也可以是粉丝的微信号。 */ public WxMenu menuTryMatch(String userid) throws WxErrorException; /** *
   * 分组管理接口 - 创建分组
   * 最多支持创建500个分组
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
   * 
* @param name 分组名字(30个字符以内) */ public WxMpGroup groupCreate(String name) throws WxErrorException; /** *
   * 分组管理接口 - 查询所有分组
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
   * 
*/ public List groupGet() throws WxErrorException; /** *
   * 分组管理接口 - 查询用户所在分组
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
   * 
* @param openid 微信用户的openid */ public long userGetGroup(String openid) throws WxErrorException; /** *
   * 分组管理接口 - 修改分组名
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
   *
   * 如果id为0(未分组),1(黑名单),2(星标组),或者不存在的id,微信会返回系统繁忙的错误
   * 
* @param group 要更新的group,group的id,name必须设置 */ public void groupUpdate(WxMpGroup group) throws WxErrorException; /** *
   * 分组管理接口 - 移动用户分组
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=分组管理接口
   *
   * 如果to_groupid为0(未分组),1(黑名单),2(星标组),或者不存在的id,微信会返回系统繁忙的错误
   * 
* @param openid 用户openid * @param to_groupid 移动到的分组id */ public void userUpdateGroup(String openid, long to_groupid) throws WxErrorException; /** *
   * 设置用户备注名接口
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=设置用户备注名接口
   * 
* @param openid 用户openid * @param remark 备注名 */ public void userUpdateRemark(String openid, String remark) throws WxErrorException; /** *
   * 获取用户基本信息
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取用户基本信息
   * 
* @param openid 用户openid * @param lang 语言,zh_CN 简体(默认),zh_TW 繁体,en 英语 */ public WxMpUser userInfo(String openid, String lang) throws WxErrorException; /** *
   * 获取关注者列表
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=获取关注者列表
   * 
* @param next_openid 可选,第一个拉取的OPENID,null为从头开始拉取 */ public WxMpUserList userList(String next_openid) throws WxErrorException; /** *
   * 换取临时二维码ticket
   * 详情请见: 生成带参数的二维码
   * 
* @param scene_id 参数。 * @param expire_seconds 过期秒数,默认60秒,最小60秒,最大1800秒 */ public WxMpQrCodeTicket qrCodeCreateTmpTicket(int scene_id, Integer expire_seconds) throws WxErrorException; /** *
   * 换取永久二维码ticket
   * 详情请见: 生成带参数的二维码
   * 
* @param scene_id 参数。永久二维码时最大值为100000(目前参数只支持1--100000) */ public WxMpQrCodeTicket qrCodeCreateLastTicket(int scene_id) throws WxErrorException; /** *
   * 换取永久字符串二维码ticket
   * 详情请见: 生成带参数的二维码
   * 
* * @param scene_str 参数。字符串类型长度现在为1到64 */ public WxMpQrCodeTicket qrCodeCreateLastTicket(String scene_str) throws WxErrorException; /** *
   * 换取二维码图片文件,jpg格式
   * 详情请见: 生成带参数的二维码
   * 
* @param ticket 二维码ticket */ public File qrCodePicture(WxMpQrCodeTicket ticket) throws WxErrorException; /** *
   * 换取二维码图片url地址(可以选择是否生成压缩的网址)
   * 详情请见: 生成带参数的二维码
   * 
* @param ticket 二维码ticket * @param needShortUrl 是否需要压缩的二维码地址 */ public String qrCodePictureUrl(String ticket, boolean needShortUrl) throws WxErrorException; /** *
   * 换取二维码图片url地址
   * 详情请见: 生成带参数的二维码
   * 
* @param ticket 二维码ticket */ public String qrCodePictureUrl(String ticket) throws WxErrorException; /** *
   * 长链接转短链接接口
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=长链接转短链接接口
   * 
* @param long_url */ public String shortUrl(String long_url) throws WxErrorException; /** *
   * 发送模板消息
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=模板消息接口
   * 
* @param templateMessage * @throws WxErrorException * @return msgid */ public String templateSend(WxMpTemplateMessage templateMessage) throws WxErrorException; /** *
   * 语义查询接口
   * 详情请见:http://mp.weixin.qq.com/wiki/index.php?title=语义理解
   * 
*/ WxMpSemanticQueryResult semanticQuery(WxMpSemanticQuery semanticQuery) throws WxErrorException; /** *
   * 构造oauth2授权的url连接
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息
   * 
* @param scope * @param state * @return url */ public String oauth2buildAuthorizationUrl(String scope, String state); /** *
   * 构造oauth2授权的url连接
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息
   * 
* @param redirectURI * 用户授权完成后的重定向链接,无需urlencode, 方法内会进行encode * @param scope * @param state * @return url */ public String oauth2buildAuthorizationUrl(String redirectURI, String scope, String state); /** *
   * 用code换取oauth2的access token
   * 详情请见: http://mp.weixin.qq.com/wiki/index.php?title=网页授权获取用户基本信息
   * 
*/ public WxMpOAuth2AccessToken oauth2getAccessToken(String code) throws WxErrorException; /** *
   * 刷新oauth2的access token
   * 
*/ public WxMpOAuth2AccessToken oauth2refreshAccessToken(String refreshToken) throws WxErrorException; /** *
   * 用oauth2获取用户信息, 当前面引导授权时的scope是snsapi_userinfo的时候才可以
   * 
* @param oAuth2AccessToken * @param lang zh_CN, zh_TW, en */ public WxMpUser oauth2getUserInfo(WxMpOAuth2AccessToken oAuth2AccessToken, String lang) throws WxErrorException; /** *
   * 验证oauth2的access token是否有效
   * 
* @param oAuth2AccessToken */ public boolean oauth2validateAccessToken(WxMpOAuth2AccessToken oAuth2AccessToken); /** *
   * 获取微信服务器IP地址
   * http://mp.weixin.qq.com/wiki/0/2ad4b6bfd29f30f71d39616c2a0fcedc.html
   * 
*/ String[] getCallbackIP() throws WxErrorException; /** *
   * 获取用户增减数据
   * http://mp.weixin.qq.com/wiki/3/ecfed6e1a0a03b5f35e5efac98e864b7.html
   * 
* @param beginDate 最大时间跨度7天 * @param endDate endDate不能早于begingDate */ List getUserSummary(Date beginDate, Date endDate) throws WxErrorException; /** *
   * 获取累计用户数据
   * http://mp.weixin.qq.com/wiki/3/ecfed6e1a0a03b5f35e5efac98e864b7.html
   * 
* @param beginDate 最大时间跨度7天 * @param endDate endDate不能早于begingDate */ List getUserCumulate(Date beginDate, Date endDate) throws WxErrorException; /** * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的GET请求 */ String get(String url, String queryParam) throws WxErrorException; /** * 当本Service没有实现某个API的时候,可以用这个,针对所有微信API中的POST请求 */ String post(String url, String postData) throws WxErrorException; /** *
   * Service没有实现某个API的时候,可以用这个,
   * 比{@link #get}和{@link #post}方法更灵活,可以自己构造RequestExecutor用来处理不同的参数和不同的返回类型。
   * 可以参考,{@link me.chanjar.weixin.common.util.http.MediaUploadRequestExecutor}的实现方法
   * 
*/ public T execute(RequestExecutor executor, String uri, E data) throws WxErrorException; /** * 注入 {@link WxMpConfigStorage} 的实现 */ public void setWxMpConfigStorage(WxMpConfigStorage wxConfigProvider); /** *
   * 设置当微信系统响应系统繁忙时,要等待多少 retrySleepMillis(ms) * 2^(重试次数 - 1) 再发起重试
   * 默认:1000ms
   * 
*/ void setRetrySleepMillis(int retrySleepMillis); /** *
   * 设置当微信系统响应系统繁忙时,最大重试次数
   * 默认:5次
   * 
*/ void setMaxRetryTimes(int maxRetryTimes); /** * 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1) * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识" * @param openId 支付人openId * @param outTradeNo 商户端对应订单号 * @param amt 金额(单位元) * @param body 商品描述 * @param tradeType 交易类型 JSAPI,NATIVE,APP,WAP * @param ip 发起支付的客户端IP * @param notifyUrl 通知地址 * @deprecated Use me.chanjar.weixin.mp.api.WxMpService.getPrepayId(Map) instead */ @Deprecated WxMpPrepayIdResult getPrepayId(String openId, String outTradeNo, double amt, String body, String tradeType, String ip, String notifyUrl); /** * 统一下单(详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1) * 在发起微信支付前,需要调用统一下单接口,获取"预支付交易会话标识" * * @param parameters * All required/optional parameters for weixin payment * @throws IllegalArgumentException */ WxMpPrepayIdResult getPrepayId(Map parameters); /** * 该接口调用“统一下单”接口,并拼装发起支付请求需要的参数 * 详见http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82 * @param parameters * the required or optional parameters */ Map getPayInfo(Map parameters) throws WxErrorException; /** * 该接口调用“统一下单”接口,并拼装NATIVE发起支付请求需要的参数 * 详见http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82 * tradeType 交易类型 NATIVE (其他交易类型JSAPI,APP,WAP) * @param productId 商户商品ID * @param outTradeNo 商户端对应订单号 * @param amt 金额(单位元) * @param body 商品描述 * @param ip 发起支付的客户端IP * @param notifyUrl 通知地址 * @deprecated Use me.chanjar.weixin.mp.api.WxMpService.getPayInfo(Map) instead */ @Deprecated Map getNativePayInfo(String productId, String outTradeNo, double amt, String body, String ip, String notifyUrl) throws WxErrorException; /** * 该接口调用“统一下单”接口,并拼装JSAPI发起支付请求需要的参数 * 详见http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E5.8F.91.E8.B5.B7.E4.B8.80.E4.B8.AA.E5.BE.AE.E4.BF.A1.E6.94.AF.E4.BB.98.E8.AF.B7.E6.B1.82 * tradeType 交易类型 JSAPI(其他交易类型NATIVE,APP,WAP) * @param openId 支付人openId * @param outTradeNo 商户端对应订单号 * @param amt 金额(单位元) * @param body 商品描述 * @param ip 发起支付的客户端IP * @param notifyUrl 通知地址 * @deprecated Use me.chanjar.weixin.mp.api.WxMpService.getPayInfo(Map) instead */ @Deprecated Map getJsapiPayInfo(String openId, String outTradeNo, double amt, String body, String ip, String notifyUrl) throws WxErrorException; /** * 该接口提供所有微信支付订单的查询,当支付通知处理异常戒丢失的情冴,商户可以通过该接口查询订单支付状态。 * 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_2 * @param transactionId * @param outTradeNo */ WxMpPayResult getJSSDKPayResult(String transactionId, String outTradeNo); /** * 读取支付结果通知 * 详见http://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_7 * @param xmlData */ WxMpPayCallback getJSSDKCallbackData(String xmlData); /** * 微信支付-申请退款 * 详见 https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_4 * @param parameters 需要传入的退款参数的Map。以下几项为参数的必须项:
*
  • transaction_id *
  • out_trade_no (仅在上述transaction_id为空时是必须项) *
  • out_refund_no *
  • total_fee *
  • refund_fee * @return 退款操作结果 * @throws WxErrorException */ public WxMpPayRefundResult refundPay(Map parameters) throws WxErrorException; /** *
       * 计算Map键值对是否和签名相符,
       * 按照字段名的 ASCII 码从小到大排序(字典序)后,使用 URL 键值对的 格式(即 key1=value1&key2=value2...)拼接成字符串
       * 
    * @param kvm * @param signature */ public boolean checkJSSDKCallbackDataSignature(Map kvm, String signature); /** * 发送微信红包给个人用户 * * 需要传入的必填参数如下: * mch_billno//商户订单号 * send_name//商户名称 * re_openid//用户openid * total_amount//红包总额 * total_num//红包发放总人数 * wishing//红包祝福语 * client_ip//服务器Ip地址 * act_name//活动名称 * remark //备注 * 文档详见:https://pay.weixin.qq.com/wiki/doc/api/tools/cash_coupon.php?chapter=13_5 * * 使用现金红包功能需要在xml配置文件中额外设置: * 微信商户平台ID * 商户平台设置的API密钥 * * @param parameters */ public WxRedpackResult sendRedpack(Map parameters) throws WxErrorException; /** * 获得卡券api_ticket,不强制刷新卡券api_ticket * @see #getCardApiTicket(boolean) * @return 卡券api_ticket * @throws WxErrorException */ public String getCardApiTicket() throws WxErrorException; /** *
       * 获得卡券api_ticket
       * 获得时会检查卡券apiToken是否过期,如果过期了,那么就刷新一下,否则就什么都不干
       *
       * 详情请见:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD.954-.E5.8D.A1.E5.88.B8.E6.89.A9.E5.B1.95.E5.AD.97.E6.AE.B5.E5.8F.8A.E7.AD.BE.E5.90.8D.E7.94.9F.E6.88.90.E7.AE.97.E6.B3.95
       * 
    * @param forceRefresh 强制刷新 * @return 卡券api_ticket * @throws WxErrorException */ public String getCardApiTicket(boolean forceRefresh) throws WxErrorException; /** *
       * 创建调用卡券api时所需要的签名
       *
       * 详情请见:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html#.E9.99.84.E5.BD
       * .954-.E5.8D.A1.E5.88.B8.E6.89.A9.E5.B1.95.E5.AD.97.E6.AE.B5.E5.8F.8A.E7.AD.BE.E5.90.8D.E7.94
       * .9F.E6.88.90.E7.AE.97.E6.B3.95
       * 
    * * @param optionalSignParam 参与签名的参数数组。 * 可以为下列字段:app_id, card_id, card_type, code, openid, location_id *
    注意:当做wx.chooseCard调用时,必须传入app_id参与签名,否则会造成签名失败导致拉取卡券列表为空 * @return 卡券Api签名对象 */ public WxCardApiSignature createCardApiSignature(String... optionalSignParam) throws WxErrorException; /** * 卡券Code解码 * @param encryptCode 加密Code,通过JSSDK的chooseCard接口获得 * @return 解密后的Code * @throws WxErrorException */ public String decryptCardCode(String encryptCode) throws WxErrorException; /** * 卡券Code查询 * @param cardId 卡券ID代表一类卡券 * @param code 单张卡券的唯一标准 * @param checkConsume 是否校验code核销状态,填入true和false时的code异常状态返回数据不同 * @return WxMpCardResult对象 * @throws WxErrorException */ public WxMpCardResult queryCardCode(String cardId, String code, boolean checkConsume) throws WxErrorException; /** * 卡券Code核销。核销失败会抛出异常 * * @param code 单张卡券的唯一标准 * @return 调用返回的JSON字符串。 *
    可用 com.google.gson.JsonParser#parse 等方法直接取JSON串中的errcode等信息。 * @throws WxErrorException */ public String consumeCardCode(String code) throws WxErrorException; /** * 卡券Code核销。核销失败会抛出异常 * * @param code 单张卡券的唯一标准 * @param cardId 当自定义Code卡券时需要传入card_id * @return 调用返回的JSON字符串。 *
    可用 com.google.gson.JsonParser#parse 等方法直接取JSON串中的errcode等信息。 * @throws WxErrorException */ public String consumeCardCode(String code, String cardId) throws WxErrorException; /** * 卡券Mark接口。 * 开发者在帮助消费者核销卡券之前,必须帮助先将此code(卡券串码)与一个openid绑定(即mark住), * 才能进一步调用核销接口,否则报错。 * @param code 卡券的code码 * @param cardId 卡券的ID * @param openId 用券用户的openid * @param isMark 是否要mark(占用)这个code,填写true或者false,表示占用或解除占用 * @throws WxErrorException */ public void markCardCode(String code, String cardId, String openId, boolean isMark) throws WxErrorException; /** * 查看卡券详情接口 * 详见 https://mp.weixin.qq.com/wiki/14/8dd77aeaee85f922db5f8aa6386d385e.html#.E6.9F.A5.E7.9C.8B.E5.8D.A1.E5.88.B8.E8.AF.A6.E6.83.85 * @param cardId 卡券的ID * @return 返回的卡券详情JSON字符串 *
    [注] 由于返回的JSON格式过于复杂,难以定义其对应格式的Bean并且难以维护,因此只返回String格式的JSON串。 *
    可由 com.google.gson.JsonParser#parse 等方法直接取JSON串中的某个字段。 * @throws WxErrorException */ public String getCardDetail(String cardId) throws WxErrorException; /** *
         * 预览接口
         * 详情请见:http://mp.weixin.qq.com/wiki/15/40b6865b893947b764e2de8e4a1fb55f.html#.E9.A2.84.E8.A7.88.E6.8E.A5.E5.8F.A3.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91
         * 
    * @param wxMpMassPreviewMessage * @return wxMpMassSendResult * @throws WxErrorException */ public WxMpMassSendResult massMessagePreview(WxMpMassPreviewMessage wxMpMassPreviewMessage) throws Exception; /** *
         * 上传图文消息内的图片获取URL
         * 详情请见:http://mp.weixin.qq.com/wiki/15/40b6865b893947b764e2de8e4a1fb55f.html#.E4.B8.8A.E4.BC.A0.E5.9B.BE.E6.96.87.E6.B6.88.E6.81.AF.E5.86.85.E7.9A.84.E5.9B.BE.E7.89.87.E8.8E.B7.E5.8F.96URL.E3.80.90.E8.AE.A2.E9.98.85.E5.8F.B7.E4.B8.8E.E6.9C.8D.E5.8A.A1.E5.8F.B7.E8.AE.A4.E8.AF.81.E5.90.8E.E5.9D.87.E5.8F.AF.E7.94.A8.E3.80.91
         * 
    * @param file * @return WxMediaImgUploadResult 返回图片url * @throws WxErrorException */ public WxMediaImgUploadResult mediaImgUpload(File file) throws WxErrorException; /** *
         * 设置所属行业
         * 官方文档中暂未告知响应内容
         * 详情请见: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
         * 
    * @param wxMpIndustry * @return JsonObject * @throws WxErrorException */ String setIndustry(WxMpIndustry wxMpIndustry) throws WxErrorException; /*** *
       * 获取设置的行业信息
       * 详情请见: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
       * 
    * * @return wxMpIndustry * @throws WxErrorException */ WxMpIndustry getIndustry() throws WxErrorException; /** * 返回客服接口方法实现类,以方便调用个其各种接口 * @return WxMpKefuService */ WxMpKefuService getKefuService(); }




  • © 2015 - 2025 Weber Informatics LLC | Privacy Policy