diff --git a/README.md b/README.md index ab7ada780b..a9640c1401 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ ### 重要信息 -1. **2020-08-24 发布 [【3.9.0正式版】](https://mp.weixin.qq.com/s/xkT7P79SVwkpk85d-2fCUw)**! +1. **2020-11-29 发布 [【4.0.0正式版】](https://mp.weixin.qq.com/s/OPoICwLifOZGVN_ZX_BBhw)**! 1. 新手重要提示:本项目仅是一个SDK开发工具包,未提供Web实现,建议使用 `maven` 或 `gradle` 引用本项目即可使用本SDK提供的各种功能,详情可参考 **[【Demo项目】](demo.md)** 或本项目中的部分单元测试代码;另外微信开发新手请务必阅读[【开发文档 Wiki 首页】](https://github.com/Wechat-Group/WxJava/wiki)的常见问题部分,可以少走很多弯路,节省不少时间。 1. 技术交流群:想获得QQ群/微信群/钉钉企业群等信息的同学,请使用微信扫描上面的微信公众号二维码关注 `WxJava` 后点击相关菜单即可获取加入方式,同时也可以在微信中搜索 `weixin-java-tools` 或 `WxJava` 后选择正确的公众号进行关注,该公众号会及时通知SDK相关更新信息,并不定期分享微信Java开发相关技术知识; 1. 付费QQ群:(**注意:刚入群会有5分钟禁言,稍等片刻即可正常发言**) [![加入QQ群](https://img.shields.io/badge/QQ群-343954419-blue.svg)](http://shang.qq.com/wpa/qunwpa?idkey=731dc3e7ea31ebe25376cc1a791445468612c63fd0e9e05399b088ec81fd9e15) 或 [![加入QQ群](https://img.shields.io/badge/QQ群-343954419-blue.svg)](http://jq.qq.com/?_wv=1027&k=40lRskK),或者请自行搜索群号`343954419`进行添加;当然由于某种原因无法入群的,可关注公众号后获取其他群的加入方式; @@ -68,7 +68,7 @@ com.github.binarywang (不同模块参考下文) - 3.9.0 + 4.0.0 ``` diff --git a/demo.md b/demo.md index b1953e077c..7d05f4d683 100644 --- a/demo.md +++ b/demo.md @@ -17,6 +17,6 @@ 1. 开放平台 Demo:[GitHub](http://github.com/Wechat-Group/weixin-java-open-demo)、[码云](http://gitee.com/binary/weixin-java-open-demo) [![Build Status](https://travis-ci.org/Wechat-Group/weixin-java-open-demo.svg?branch=master)](https://travis-ci.org/Wechat-Group/weixin-java-open-demo) 1. 公众号 Demo: - 使用 `Spring MVC` 实现的公众号 Demo:[GitHub](http://github.com/binarywang/weixin-java-mp-demo-springmvc)、[码云](https://gitee.com/binary/weixin-java-mp-demo) [![Build Status](https://travis-ci.org/binarywang/weixin-java-mp-demo-springmvc.svg?branch=master)](https://travis-ci.org/binarywang/weixin-java-mp-demo-springmvc) - - 使用 `Spring Boot` 实现的公众号 Demo(支持多公众号):[GitHub](http://github.com/binarywang/weixin-java-mp-demo-springboot)、[码云](http://gitee.com/binary/weixin-java-mp-demo-springboot) [![Build Status](https://travis-ci.org/binarywang/weixin-java-mp-demo-springboot.svg?branch=master)](https://travis-ci.org/binarywang/weixin-java-mp-demo-springboot) + - 使用 `Spring Boot` 实现的公众号 Demo(支持多公众号):[GitHub](http://github.com/binarywang/weixin-java-mp-demo)、[码云](http://gitee.com/binary/weixin-java-mp-demo-springboot) [![Build Status](https://travis-ci.org/binarywang/weixin-java-mp-demo.svg?branch=master)](https://travis-ci.org/binarywang/weixin-java-mp-demo) - 含公众号和部分微信支付代码的 Demo:[GitHub](http://github.com/Wechat-Group/weixin-java-demo-springmvc)、[码云](http://gitee.com/binary/weixin-java-tools-springmvc) [![Build Status](https://travis-ci.org/Wechat-Group/weixin-java-demo-springmvc.svg?branch=master)](https://travis-ci.org/Wechat-Group/weixin-java-demo-springmvc) diff --git a/pom.xml b/pom.xml index 589fc3bef5..89255baa73 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ 4.0.0 com.github.binarywang wx-java - 3.9.9.B + 4.0.0 pom WxJava - Weixin/Wechat Java SDK 微信开发Java SDK @@ -121,7 +121,7 @@ UTF-8 4.5 - 9.4.31.v20200723 + 9.4.35.v20201120 diff --git a/spring-boot-starters/pom.xml b/spring-boot-starters/pom.xml index a7028adf4f..553c01950c 100644 --- a/spring-boot-starters/pom.xml +++ b/spring-boot-starters/pom.xml @@ -6,7 +6,7 @@ com.github.binarywang wx-java - 3.9.9.B + 4.0.0 pom wx-java-spring-boot-starters diff --git a/spring-boot-starters/wx-java-miniapp-spring-boot-starter/pom.xml b/spring-boot-starters/wx-java-miniapp-spring-boot-starter/pom.xml index 73fd0fdde5..dd243cf015 100644 --- a/spring-boot-starters/wx-java-miniapp-spring-boot-starter/pom.xml +++ b/spring-boot-starters/wx-java-miniapp-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ wx-java-spring-boot-starters com.github.binarywang - 3.9.9.B + 4.0.0 4.0.0 diff --git a/spring-boot-starters/wx-java-mp-spring-boot-starter/pom.xml b/spring-boot-starters/wx-java-mp-spring-boot-starter/pom.xml index f5ab99b1ed..6aa7368413 100644 --- a/spring-boot-starters/wx-java-mp-spring-boot-starter/pom.xml +++ b/spring-boot-starters/wx-java-mp-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ wx-java-spring-boot-starters com.github.binarywang - 3.9.9.B + 4.0.0 4.0.0 diff --git a/spring-boot-starters/wx-java-open-spring-boot-starter/pom.xml b/spring-boot-starters/wx-java-open-spring-boot-starter/pom.xml index 7cd8aa016b..462723d8a6 100644 --- a/spring-boot-starters/wx-java-open-spring-boot-starter/pom.xml +++ b/spring-boot-starters/wx-java-open-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ wx-java-spring-boot-starters com.github.binarywang - 3.9.9.B + 4.0.0 4.0.0 diff --git a/spring-boot-starters/wx-java-pay-spring-boot-starter/pom.xml b/spring-boot-starters/wx-java-pay-spring-boot-starter/pom.xml index 9cb011a3c9..50ed40360d 100644 --- a/spring-boot-starters/wx-java-pay-spring-boot-starter/pom.xml +++ b/spring-boot-starters/wx-java-pay-spring-boot-starter/pom.xml @@ -5,7 +5,7 @@ wx-java-spring-boot-starters com.github.binarywang - 3.9.9.B + 4.0.0 4.0.0 diff --git a/weixin-graal/pom.xml b/weixin-graal/pom.xml index 43b28ab1e7..8e01bca88f 100644 --- a/weixin-graal/pom.xml +++ b/weixin-graal/pom.xml @@ -6,7 +6,7 @@ com.github.binarywang wx-java - 3.9.9.B + 4.0.0 weixin-graal diff --git a/weixin-java-common/pom.xml b/weixin-java-common/pom.xml index 11b2b4abc8..0dddfb44b0 100644 --- a/weixin-java-common/pom.xml +++ b/weixin-java-common/pom.xml @@ -6,7 +6,7 @@ com.github.binarywang wx-java - 3.9.9.B + 4.0.0 weixin-java-common diff --git a/weixin-java-cp/pom.xml b/weixin-java-cp/pom.xml index fa884a6f35..969d9c850b 100644 --- a/weixin-java-cp/pom.xml +++ b/weixin-java-cp/pom.xml @@ -7,7 +7,7 @@ com.github.binarywang wx-java - 3.9.9.B + 4.0.0 weixin-java-cp diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpUserService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpUserService.java index 4804dbc818..ede813a0a5 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpUserService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/WxCpUserService.java @@ -183,5 +183,20 @@ public interface WxCpUserService { */ WxCpExternalContactInfo getExternalContact(String userId) throws WxErrorException; - + /** + *
+   *
+   * 获取加入企业二维码。
+   *
+   * 请求方式:GET(HTTPS)
+   * 请求地址:https://qyapi.weixin.qq.com/cgi-bin/corp/get_join_qrcode?access_token=ACCESS_TOKEN&size_type=SIZE_TYPE
+   *
+   * 文档地址:https://work.weixin.qq.com/api/doc/90000/90135/91714
+   * 
+ * + * @param sizeType qrcode尺寸类型,1: 171 x 171; 2: 399 x 399; 3: 741 x 741; 4: 2052 x 2052 + * @return join_qrcode 二维码链接,有效期7天 + * @throws WxErrorException . + */ + String getJoinQrCode(int sizeType) throws WxErrorException; } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java index cb122a0142..d0648b21ec 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpUserServiceImpl.java @@ -1,7 +1,9 @@ package me.chanjar.weixin.cp.api.impl; import com.google.common.collect.Maps; -import com.google.gson.*; +import com.google.gson.JsonArray; +import com.google.gson.JsonObject; +import com.google.gson.JsonPrimitive; import com.google.gson.reflect.TypeToken; import lombok.RequiredArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; @@ -198,4 +200,12 @@ public WxCpExternalContactInfo getExternalContact(String userId) throws WxErrorE String responseContent = this.mainService.get(url, null); return WxCpExternalContactInfo.fromJson(responseContent); } + + @Override + public String getJoinQrCode(int sizeType) throws WxErrorException { + String url = this.mainService.getWxCpConfigStorage().getApiUrl(GET_JOIN_QR_CODE + sizeType); + String responseContent = this.mainService.get(url, null); + JsonObject tmpJson = GsonParser.parse(responseContent); + return tmpJson.get("join_qrcode").getAsString(); + } } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java index 36ea3fc3fb..40f66df5e0 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpXmlMessage.java @@ -547,6 +547,9 @@ public static class SendLocationInfo implements Serializable { } + /** + * 审批信息 + */ @XStreamAlias("ApprovalInfo") @Data public static class ApprovalInfo implements Serializable { @@ -557,11 +560,14 @@ public static class ApprovalInfo implements Serializable { */ @XStreamAlias("SpNo") private String spNo; + /** * 审批申请类型名称(审批模板名称) */ @XStreamAlias("SpName") + @XStreamConverter(value = XStreamCDataConverter.class) private String spName; + /** * 申请单状态:1-审批中;2-已通过;3-已驳回;4-已撤销;6-通过后撤销;7-已删除;10-已支付 */ @@ -572,35 +578,214 @@ public static class ApprovalInfo implements Serializable { * 审批模板id。 */ @XStreamAlias("TemplateId") + @XStreamConverter(value = XStreamCDataConverter.class) private String templateId; /** * 审批申请提交时间,Unix时间戳 */ @XStreamAlias("ApplyTime") - private Integer applyTime; + private Long applyTime; /** * 申请人信息 */ @XStreamAlias("Applyer") private Applier applier; + + /** + * 审批流程信息,可能有多个审批节点。 + */ + @XStreamImplicit(itemFieldName="SpRecord") + private List spRecords; + + /** + * 抄送信息,可能有多个抄送节点 + * 这回查字典,notifier通知人,Notifyer这不知道是什么 + */ + @XStreamImplicit(itemFieldName="Notifyer") + private List notifier; + + /** + * 审批申请备注信息,可能有多个备注节点 + */ + @XStreamImplicit(itemFieldName="Comments") + private List comments; + /** * 审批申请单变化类型 */ @XStreamAlias("StatuChangeEvent") private Integer statusChangeEvent; + /** + * 申请人信息 + */ @XStreamAlias("Applyer") @Data public static class Applier implements Serializable { private static final long serialVersionUID = -979255011922209018L; - @XStreamAlias("Applyer") + /** + * 申请人userid + */ + @XStreamAlias("UserId") private String userId; + + /** + * 申请人所在部门pid + */ @XStreamAlias("Party") private String party; } + /** + * 审批流程信息 + */ + @XStreamAlias("SpRecord") + @Data + public static class SpRecord implements Serializable{ + + private static final long serialVersionUID = 1247535623941881764L; + + /** + * 审批节点状态:1-审批中;2-已同意;3-已驳回;4-已转审 + */ + @XStreamAlias("SpStatus") + private String spStatus; + + /** + * 节点审批方式:1-或签;2-会签 + */ + @XStreamAlias("ApproverAttr") + private String approverAttr; + + /** + * 审批节点详情。当节点为标签或上级时,一个节点可能有多个分支 + */ + @XStreamImplicit(itemFieldName="Details") + private List details; + + } + + /** + * 审批节点详情 + */ + @XStreamAlias("Details") + @Data + public static class Detail implements Serializable{ + + private static final long serialVersionUID = -8446107461495047603L; + + /** + * 分支审批人 + */ + @XStreamAlias("Approver") + private Approver approver; + + /** + * 审批意见字段 + */ + @XStreamAlias("Speech") + private String speech; + + /** + * 分支审批人审批状态:1-审批中;2-已同意;3-已驳回;4-已转审 + */ + @XStreamAlias("SpStatus") + private String spStatus; + + /** + * 节点分支审批人审批操作时间,0为尚未操作 + */ + @XStreamAlias("SpTime") + private Long spTime; + + /** + * 节点分支审批人审批意见附件,赋值为media_id具体使用请参考:文档-获取临时素材 + */ + @XStreamAlias("Attach") + private String attach; + } + + /** + * 分支审批人 + */ + @Data + @XStreamAlias("Approver") + public static class Approver implements Serializable{ + + private static final long serialVersionUID = 7360442444186683191L; + + /** + * 分支审批人userid + */ + @XStreamAlias("UserId") + private String userId; + } + + /** + * 抄送信息 + */ + @Data + @XStreamAlias("Notifyer") + public static class Notifier implements Serializable{ + + private static final long serialVersionUID = -4524071522890013920L; + + /** + * 节点抄送人userid + */ + @XStreamAlias("UserId") + private String userId; + } + + /** + * 审批申请备注信息 + */ + @Data + @XStreamAlias("Comments") + public static class Comment implements Serializable{ + + private static final long serialVersionUID = 6912156206252719485L; + + /** + * 备注人信息 + */ + @XStreamAlias("CommentUserInfo") + private CommentUserInfo commentUserInfo; + + /** + * 备注提交时间 + */ + @XStreamAlias("CommentTime") + private String commentTime; + + /** + * 备注文本内容 + */ + @XStreamAlias("CommentContent") + private String commentContent; + + /** + * 备注id + */ + @XStreamAlias("CommentId") + private String commentId; + + } + + @Data + @XStreamAlias("CommentUserInfo") + private static class CommentUserInfo implements Serializable{ + + private static final long serialVersionUID = 5031739716823000947L; + + /** + * 备注人userid + */ + @XStreamAlias("UserId") + private String userId; + } } } diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java index f1e1902e05..bac4dd96e4 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/constant/WxCpApiPathConsts.java @@ -161,6 +161,7 @@ public static class User { public static final String USER_CONVERT_TO_USERID = "/cgi-bin/user/convert_to_userid"; public static final String GET_USER_ID = "/cgi-bin/user/getuserid"; public static final String GET_EXTERNAL_CONTACT = "/cgi-bin/crm/get_external_contact?external_userid="; + public static final String GET_JOIN_QR_CODE = "/cgi-bin/corp/get_join_qrcode?size_type="; } @UtilityClass diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java index 9bc3684ef6..1047368832 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/WxCpTpService.java @@ -154,6 +154,20 @@ public interface WxCpTpService { */ String getPreAuthUrl(String redirectUri, String state) throws WxErrorException; + /** + *
+   *   获取预授权链接,测试环境下使用
+   *   @Link https://work.weixin.qq.com/api/doc/90001/90143/90602
+   * 
+ * + * @param redirectUri 授权完成后的回调网址 + * @param state a-zA-Z0-9的参数值(不超过128个字节),用于第三方自行校验session,防止跨域攻击 + * @param authType 授权类型:0 正式授权, 1 测试授权。 + * @return pre auth url + * @throws WxErrorException the wx error exception + */ + String getPreAuthUrl(String redirectUri, String state, int authType) throws WxErrorException; + /** * 获取企业的授权信息 * @@ -278,7 +292,7 @@ public interface WxCpTpService { *
    * 获取访问用户敏感信息
    * 
- * + * * @param userTicket * @return */ diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java index c3bbe95c65..5726204fbd 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/tp/service/impl/BaseWxCpTpServiceImpl.java @@ -1,6 +1,7 @@ package me.chanjar.weixin.cp.tp.service.impl; import com.google.common.base.Joiner; +import com.google.gson.Gson; import com.google.gson.JsonObject; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; @@ -210,6 +211,30 @@ public String getPreAuthUrl(String redirectUri, String state) throws WxErrorExce return preAuthUrl; } + @Override + @SneakyThrows + public String getPreAuthUrl(String redirectUri, String state, int authType) throws WxErrorException { + String result = get(configStorage.getApiUrl(GET_PREAUTH_CODE), null); + WxCpTpPreauthCode preAuthCode = WxCpTpPreauthCode.fromJson(result); + String setSessionUrl = "https://qyapi.weixin.qq.com/cgi-bin/service/set_session_info"; + + Map sessionInfo = new HashMap<>(1); + sessionInfo.put("auth_type", authType); + Map param = new HashMap<>(2); + param.put("pre_auth_code", preAuthCode.getPreAuthCode()); + param.put("session_info", sessionInfo); + String postData = new Gson().toJson(param); + + post(setSessionUrl, postData); + + String preAuthUrl = "https://open.work.weixin.qq.com/3rdapp/install?suite_id=" + configStorage.getSuiteId() + + "&pre_auth_code=" + preAuthCode.getPreAuthCode() + "&redirect_uri=" + URLEncoder.encode(redirectUri, "utf-8"); + if (StringUtils.isNotBlank(state)) { + preAuthUrl += "&state=" + state; + } + return preAuthUrl; + } + @Override public WxCpTpAuthInfo getAuthInfo(String authCorpId, String permanentCode) throws WxErrorException { JsonObject jsonObject = new JsonObject(); diff --git a/weixin-java-miniapp/pom.xml b/weixin-java-miniapp/pom.xml index 232f5cf83e..02bbaf21a8 100644 --- a/weixin-java-miniapp/pom.xml +++ b/weixin-java-miniapp/pom.xml @@ -7,7 +7,7 @@ com.github.binarywang wx-java - 3.9.9.B + 4.0.0 weixin-java-miniapp diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java index 96e6d879b4..78cb4d497d 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/WxMaLiveService.java @@ -1,9 +1,6 @@ package cn.binarywang.wx.miniapp.api; -import cn.binarywang.wx.miniapp.bean.live.WxMaAssistantResult; -import cn.binarywang.wx.miniapp.bean.live.WxMaLiveAssistantInfo; -import cn.binarywang.wx.miniapp.bean.live.WxMaLiveResult; -import cn.binarywang.wx.miniapp.bean.live.WxMaLiveRoomInfo; +import cn.binarywang.wx.miniapp.bean.live.*; import me.chanjar.weixin.common.error.WxErrorException; import java.util.List; @@ -41,7 +38,7 @@ public interface WxMaLiveService { * @return . * @throws WxErrorException . */ - Integer createRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException; + WxMaCreateRoomResult createRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException; /** * 删除直播间 diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaAnalysisServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaAnalysisServiceImpl.java index db69642714..b0f1606593 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaAnalysisServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaAnalysisServiceImpl.java @@ -8,7 +8,7 @@ import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitDistribution; import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitPage; import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitTrend; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import lombok.AllArgsConstructor; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImpl.java index 300ded88fe..c4058e1523 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCloudServiceImpl.java @@ -5,7 +5,7 @@ import cn.binarywang.wx.miniapp.bean.cloud.*; import cn.binarywang.wx.miniapp.constant.WxMaConstants; import cn.binarywang.wx.miniapp.util.JoinerUtils; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; import com.google.gson.JsonArray; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java index 2d965b4c45..4d73f6aa16 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaCodeServiceImpl.java @@ -19,7 +19,7 @@ import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeSubmitAuditRequest; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import me.chanjar.weixin.common.error.WxError; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java index 21d0bfe0b0..ab2d23c9dc 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImpl.java @@ -8,7 +8,7 @@ import cn.binarywang.wx.miniapp.bean.express.WxMaExpressPrinter; import cn.binarywang.wx.miniapp.bean.express.request.*; import cn.binarywang.wx.miniapp.bean.express.result.WxMaExpressOrderInfoResult; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.AllArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java index ba776a8f5d..a3ff950c21 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveGoodsServiceImpl.java @@ -4,7 +4,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.live.WxMaLiveGoodInfo; import cn.binarywang.wx.miniapp.bean.live.WxMaLiveResult; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableMap; import com.google.gson.JsonArray; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java index e3af028253..1fcd23e51c 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImpl.java @@ -2,11 +2,8 @@ import cn.binarywang.wx.miniapp.api.WxMaLiveService; import cn.binarywang.wx.miniapp.api.WxMaService; -import cn.binarywang.wx.miniapp.bean.live.WxMaAssistantResult; -import cn.binarywang.wx.miniapp.bean.live.WxMaLiveAssistantInfo; -import cn.binarywang.wx.miniapp.bean.live.WxMaLiveResult; -import cn.binarywang.wx.miniapp.bean.live.WxMaLiveRoomInfo; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.bean.live.*; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.common.base.Joiner; import com.google.gson.JsonObject; import lombok.AllArgsConstructor; @@ -31,16 +28,19 @@ @Slf4j @AllArgsConstructor public class WxMaLiveServiceImpl implements WxMaLiveService { + private static final String ERR_CODE = "errcode"; + private static final String ROOM_ID = "roomId"; private final WxMaService wxMaService; @Override - public Integer createRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException { + public WxMaCreateRoomResult createRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException { String responseContent = this.wxMaService.post(CREATE_ROOM, WxMaGsonBuilder.create().toJson(roomInfo)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } - return jsonObject.get("roomId").getAsInt(); + + return WxMaGsonBuilder.create().fromJson(responseContent, WxMaCreateRoomResult.class); } @Override @@ -49,7 +49,7 @@ public boolean deleteRoom(Integer roomId) throws WxErrorException { map.put("id", roomId); String responseContent = this.wxMaService.post(DELETE_ROOM, WxMaGsonBuilder.create().toJson(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return true; @@ -59,7 +59,7 @@ public boolean deleteRoom(Integer roomId) throws WxErrorException { public boolean editRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException { String responseContent = this.wxMaService.post(EDIT_ROOM, WxMaGsonBuilder.create().toJson(roomInfo)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return true; @@ -68,10 +68,10 @@ public boolean editRoom(WxMaLiveRoomInfo roomInfo) throws WxErrorException { @Override public String getPushUrl(Integer roomId) throws WxErrorException { Map map = new HashMap<>(2); - map.put("roomId", roomId); + map.put(ROOM_ID, roomId); String responseContent = this.wxMaService.get(GET_PUSH_URL, Joiner.on("&").withKeyValueSeparator("=").join(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return jsonObject.get("pushAddr").getAsString(); @@ -80,13 +80,13 @@ public String getPushUrl(Integer roomId) throws WxErrorException { @Override public String getSharedCode(Integer roomId, String params) throws WxErrorException { Map map = new HashMap<>(2); - map.put("roomId", roomId); + map.put(ROOM_ID, roomId); if (null != params) { map.put("params", params); } String responseContent = this.wxMaService.get(GET_SHARED_CODE, Joiner.on("&").withKeyValueSeparator("=").join(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return jsonObject.get("cdnUrl").getAsString(); @@ -135,19 +135,21 @@ public WxMaLiveResult getLiveReplay(String action, Integer roomId, Integer start JsonObject jsonObject = getLiveInfo(start, limit, map); return WxMaLiveResult.fromJson(jsonObject.toString()); } + private JsonObject getLiveInfo(Integer start, Integer limit, Map map) throws WxErrorException { if (map == null) { - map = new HashMap(2); + map = new HashMap<>(2); } map.put("start", start); map.put("limit", limit); String responseContent = wxMaService.post(GET_LIVE_INFO, WxMaGsonBuilder.create().toJson(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return jsonObject; } + @Override public WxMaLiveResult getLiveReplay(Integer roomId, Integer start, Integer limit) throws WxErrorException { return getLiveReplay("get_replay", roomId, start, limit); @@ -156,11 +158,11 @@ public WxMaLiveResult getLiveReplay(Integer roomId, Integer start, Integer limit @Override public boolean addGoodsToRoom(Integer roomId, List goodsIds) throws WxErrorException { Map map = new HashMap<>(2); - map.put("roomId", roomId); + map.put(ROOM_ID, roomId); map.put("ids", goodsIds); String responseContent = this.wxMaService.post(ADD_GOODS, WxMaGsonBuilder.create().toJson(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return true; @@ -169,38 +171,38 @@ public boolean addGoodsToRoom(Integer roomId, List goodsIds) throws WxE @Override public boolean addAssistant(Integer roomId, List users) throws WxErrorException { Map map = new HashMap<>(2); - map.put("roomId", roomId); + map.put(ROOM_ID, roomId); map.put("users", users); String responseContent = this.wxMaService.post(ADD_ASSISTANT, WxMaGsonBuilder.create().toJson(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return true; } @Override - public boolean modifyAssistant(Integer roomId, String username,String nickname) throws WxErrorException { + public boolean modifyAssistant(Integer roomId, String username, String nickname) throws WxErrorException { Map map = new HashMap<>(2); - map.put("roomId", roomId); - map.put("username",username); + map.put(ROOM_ID, roomId); + map.put("username", username); map.put("nickname", nickname); String responseContent = this.wxMaService.post(MODIFY_ASSISTANT, WxMaGsonBuilder.create().toJson(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return true; } @Override - public boolean removeAssistant(Integer roomId,String username) throws WxErrorException { + public boolean removeAssistant(Integer roomId, String username) throws WxErrorException { Map map = new HashMap<>(2); - map.put("roomId", roomId); - map.put("username",username); + map.put(ROOM_ID, roomId); + map.put("username", username); String responseContent = this.wxMaService.post(REMOVE_ASSISTANT, WxMaGsonBuilder.create().toJson(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return true; @@ -209,14 +211,13 @@ public boolean removeAssistant(Integer roomId,String username) throws WxErrorExc @Override public List getAssistantList(Integer roomId) throws WxErrorException { Map map = new HashMap<>(2); - map.put("roomId", roomId); + map.put(ROOM_ID, roomId); String responseContent = this.wxMaService.post(GET_ASSISTANT_LIST, WxMaGsonBuilder.create().toJson(map)); JsonObject jsonObject = GsonParser.parse(responseContent); - if (jsonObject.get("errcode").getAsInt() != 0) { + if (jsonObject.get(ERR_CODE).getAsInt() != 0) { throw new WxErrorException(WxError.fromJson(responseContent, WxType.MiniApp)); } return WxMaAssistantResult.fromJson(responseContent).getList(); } - } diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImpl.java index f647a80fee..776a17a251 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaMsgServiceImpl.java @@ -4,7 +4,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.*; import cn.binarywang.wx.miniapp.constant.WxMaConstants; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonObject; import lombok.AllArgsConstructor; import me.chanjar.weixin.common.enums.WxType; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaPluginServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaPluginServiceImpl.java index 134ed66d51..643b3e0592 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaPluginServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaPluginServiceImpl.java @@ -3,7 +3,7 @@ import cn.binarywang.wx.miniapp.api.WxMaPluginService; import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.bean.WxMaPluginListResult; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.common.collect.ImmutableMap; import lombok.AllArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaQrcodeServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaQrcodeServiceImpl.java index dbd8fa3e51..524be9fe92 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaQrcodeServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaQrcodeServiceImpl.java @@ -6,9 +6,9 @@ import cn.binarywang.wx.miniapp.bean.WxMaQrcode; import cn.binarywang.wx.miniapp.bean.WxaCode; import cn.binarywang.wx.miniapp.bean.WxaCodeUnlimit; -import cn.binarywang.wx.miniapp.util.QrcodeBytesRequestExecutor; -import cn.binarywang.wx.miniapp.util.QrcodeFileRequestExecutor; -import cn.binarywang.wx.miniapp.util.QrcodeRequestExecutor; +import cn.binarywang.wx.miniapp.executor.QrcodeBytesRequestExecutor; +import cn.binarywang.wx.miniapp.executor.QrcodeFileRequestExecutor; +import cn.binarywang.wx.miniapp.executor.QrcodeRequestExecutor; import lombok.AllArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSettingServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSettingServiceImpl.java index c69a58d1b1..3980f145fc 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSettingServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSettingServiceImpl.java @@ -3,7 +3,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaSettingService; import cn.binarywang.wx.miniapp.bean.WxMaDomainAction; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.AllArgsConstructor; import me.chanjar.weixin.common.error.WxErrorException; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSubscribeServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSubscribeServiceImpl.java index 8682612a9b..faa88a6387 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSubscribeServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/WxMaSubscribeServiceImpl.java @@ -3,7 +3,7 @@ import cn.binarywang.wx.miniapp.api.WxMaService; import cn.binarywang.wx.miniapp.api.WxMaSubscribeService; import cn.binarywang.wx.miniapp.bean.template.WxMaPubTemplateTitleListResult; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.common.base.Joiner; import com.google.common.collect.ImmutableMap; import com.google.gson.reflect.TypeToken; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/AbstractWxMaQrcodeWrapper.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/AbstractWxMaQrcodeWrapper.java index cb444c94c1..c7fbe10666 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/AbstractWxMaQrcodeWrapper.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/AbstractWxMaQrcodeWrapper.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; /** * 微信二维码(小程序码)包装器. diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaAuditMediaUploadResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaAuditMediaUploadResult.java new file mode 100644 index 0000000000..6468662528 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaAuditMediaUploadResult.java @@ -0,0 +1,33 @@ +package cn.binarywang.wx.miniapp.bean; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; +import me.chanjar.weixin.common.util.json.WxGsonBuilder; + +import java.io.Serializable; + +/** + * 小程序 提审素材上传接口 + * + * @author yangyh22 + * @since 2020/11/14 + */ +@Data +public class WxMaAuditMediaUploadResult implements Serializable { + private static final long serialVersionUID = 1L; + + private String type; + + @SerializedName("mediaid") + private String mediaId; + + public static WxMaAuditMediaUploadResult fromJson(String json) { + return WxGsonBuilder.create().fromJson(json, WxMaAuditMediaUploadResult.class); + } + + @Override + public String toString() { + return WxGsonBuilder.create().toJson(this); + } + +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaDomainAction.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaDomainAction.java index 19a6a1cde9..b41782597f 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaDomainAction.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaDomainAction.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaJscode2SessionResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaJscode2SessionResult.java index 85b4767702..af113e4ec5 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaJscode2SessionResult.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaJscode2SessionResult.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaKefuMessage.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaKefuMessage.java index 73ca435d62..5d16b60b75 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaKefuMessage.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaKefuMessage.java @@ -4,7 +4,7 @@ import cn.binarywang.wx.miniapp.builder.LinkMessageBuilder; import cn.binarywang.wx.miniapp.builder.MaPageMessageBuilder; import cn.binarywang.wx.miniapp.builder.TextMessageBuilder; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMediaAsyncCheckResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMediaAsyncCheckResult.java index e7fda61a02..f4428b959b 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMediaAsyncCheckResult.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMediaAsyncCheckResult.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.Data; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java index 08a2e5794c..57d6a5b9be 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaMessage.java @@ -2,7 +2,7 @@ import cn.binarywang.wx.miniapp.config.WxMaConfig; import cn.binarywang.wx.miniapp.util.crypt.WxMaCryptUtils; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import cn.binarywang.wx.miniapp.util.xml.XStreamTransformer; import com.google.gson.annotations.SerializedName; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaPhoneNumberInfo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaPhoneNumberInfo.java index 149ecbebe8..da481f0983 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaPhoneNumberInfo.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaPhoneNumberInfo.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.Data; import java.io.Serializable; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaQrcode.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaQrcode.java index 5c17cd1e58..cb505a1654 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaQrcode.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaQrcode.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaRunStepInfo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaRunStepInfo.java index 5e6ff641c4..fe9e74b3fc 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaRunStepInfo.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaRunStepInfo.java @@ -3,7 +3,7 @@ import java.io.Serializable; import java.util.List; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; import lombok.Data; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaShareInfo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaShareInfo.java index 91aff519c0..e8c7f1a9ae 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaShareInfo.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaShareInfo.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.Data; import java.io.Serializable; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaSubscribeMessage.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaSubscribeMessage.java index 74f3f6a61c..edf4dc3c3a 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaSubscribeMessage.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaSubscribeMessage.java @@ -1,7 +1,7 @@ package cn.binarywang.wx.miniapp.bean; import cn.binarywang.wx.miniapp.constant.WxMaConstants; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.*; import java.io.Serializable; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaUniformMessage.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaUniformMessage.java index 4cb4c86971..6df12b1b86 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaUniformMessage.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaUniformMessage.java @@ -4,7 +4,8 @@ import java.util.ArrayList; import java.util.List; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.adaptor.WxMaUniformMessageGsonAdapter; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -99,7 +100,7 @@ public static class MiniProgram implements Serializable { private String appid; /** * 注意,此属性不是最终的json字符串,可结合以下两个属性一起使用,确定最终json字符串是什么 - * 转换的代码逻辑,请阅读 {@link cn.binarywang.wx.miniapp.util.json.WxMaUniformMessageGsonAdapter} + * 转换的代码逻辑,请阅读 {@link WxMaUniformMessageGsonAdapter} */ private String pagePath; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaUserInfo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaUserInfo.java index 368fa772cc..86b14f7555 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaUserInfo.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxMaUserInfo.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.Data; import java.io.Serializable; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxaCode.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxaCode.java index 2d94f05cea..2361355adf 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxaCode.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxaCode.java @@ -2,7 +2,7 @@ import java.io.Serializable; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxaCodeUnlimit.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxaCodeUnlimit.java index 05bf134c6b..ab0dad4e2b 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxaCodeUnlimit.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/WxaCodeUnlimit.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaRetainInfo.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaRetainInfo.java index 7021a180e9..8006cca01d 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaRetainInfo.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaRetainInfo.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.analysis; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.Data; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaUserPortrait.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaUserPortrait.java index 5e1164909e..0dcf30ee38 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaUserPortrait.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaUserPortrait.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.analysis; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.Data; import java.io.Serializable; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaVisitDistribution.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaVisitDistribution.java index 1655eec286..84a8ac1220 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaVisitDistribution.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/analysis/WxMaVisitDistribution.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.analysis; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.Data; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeAuditStatus.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeAuditStatus.java index 3faa18660b..d8733756c1 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeAuditStatus.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeAuditStatus.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.code; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeCommitRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeCommitRequest.java index f59fb1f039..788f166413 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeCommitRequest.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeCommitRequest.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.code; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeSubmitAuditRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeSubmitAuditRequest.java index b65c4df588..ff245c8e6a 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeSubmitAuditRequest.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeSubmitAuditRequest.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.code; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeVersionDistribution.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeVersionDistribution.java index dd0a03a918..9a57933d75 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeVersionDistribution.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/code/WxMaCodeVersionDistribution.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.code; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressAccount.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressAccount.java index 950bda3066..d783c29acf 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressAccount.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressAccount.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonObject; import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressDelivery.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressDelivery.java index dbdb02c113..7a5465ee38 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressDelivery.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressDelivery.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonObject; import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressPath.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressPath.java index bbd3feacdb..28c0bcdfc2 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressPath.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressPath.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressPrinter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressPrinter.java index b41d33305c..2c1e98602a 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressPrinter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/WxMaExpressPrinter.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Data; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressAddOrderRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressAddOrderRequest.java index e11f5beb6e..01056753f7 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressAddOrderRequest.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressAddOrderRequest.java @@ -2,7 +2,7 @@ import cn.binarywang.wx.miniapp.bean.express.*; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressBindAccountRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressBindAccountRequest.java index be0ef991c1..aee69f9743 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressBindAccountRequest.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressBindAccountRequest.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express.request; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressGetOrderRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressGetOrderRequest.java index 6fe03ddae9..419be9e600 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressGetOrderRequest.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressGetOrderRequest.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express.request; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressPrinterUpdateRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressPrinterUpdateRequest.java index da47f77042..e3aea495fa 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressPrinterUpdateRequest.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressPrinterUpdateRequest.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express.request; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressTestUpdateOrderRequest.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressTestUpdateOrderRequest.java index c0a8561243..3377a7e77d 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressTestUpdateOrderRequest.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/request/WxMaExpressTestUpdateOrderRequest.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express.request; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.AllArgsConstructor; import lombok.Builder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/result/WxMaExpressOrderInfoResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/result/WxMaExpressOrderInfoResult.java index fb47057d87..9502eee826 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/result/WxMaExpressOrderInfoResult.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/express/result/WxMaExpressOrderInfoResult.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.express.result; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonObject; import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaAssistantResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaAssistantResult.java index 4137efc9fd..b508b2e09d 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaAssistantResult.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaAssistantResult.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.live; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import lombok.Data; import java.io.Serializable; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaCreateRoomResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaCreateRoomResult.java new file mode 100644 index 0000000000..56b4eb7251 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaCreateRoomResult.java @@ -0,0 +1,30 @@ +package cn.binarywang.wx.miniapp.bean.live; + +import com.google.gson.annotations.SerializedName; +import lombok.Data; + +import java.io.Serializable; + +/** + * 创建直播间接口返回. + * + * @author Binary Wang + * @date 2020-11-29 + */ +@Data +public class WxMaCreateRoomResult implements Serializable { + private static final long serialVersionUID = -335928442728127170L; + + /** + * "小程序直播" 小程序码 + * 当主播微信号没有在 “小程序直播“ 小程序实名认证 返回该字段 + */ + @SerializedName("qrcode_url") + private String qrcodeUrl; + + /** + * 房间ID + */ + @SerializedName("roomId") + private Integer roomId; +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveResult.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveResult.java index be89978728..9c8fc4016c 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveResult.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/bean/live/WxMaLiveResult.java @@ -1,6 +1,6 @@ package cn.binarywang.wx.miniapp.bean.live; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.annotations.SerializedName; import lombok.Data; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java index 94e09bc5ca..73104bd367 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/config/impl/WxMaDefaultConfigImpl.java @@ -1,7 +1,7 @@ package cn.binarywang.wx.miniapp.config.impl; import cn.binarywang.wx.miniapp.config.WxMaConfig; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import me.chanjar.weixin.common.bean.WxAccessToken; import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/ApacheAuditMediaUploadRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/ApacheAuditMediaUploadRequestExecutor.java new file mode 100644 index 0000000000..782dc46f29 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/ApacheAuditMediaUploadRequestExecutor.java @@ -0,0 +1,58 @@ +package cn.binarywang.wx.miniapp.executor; + +import java.io.File; +import java.io.IOException; + +import me.chanjar.weixin.common.enums.WxType; +import me.chanjar.weixin.common.error.WxError; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.util.http.RequestHttp; + +import me.chanjar.weixin.common.util.http.apache.Utf8ResponseHandler; +import cn.binarywang.wx.miniapp.bean.WxMaAuditMediaUploadResult; +import org.apache.http.HttpEntity; +import org.apache.http.HttpHost; +import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.mime.HttpMultipartMode; +import org.apache.http.entity.mime.MultipartEntityBuilder; +import org.apache.http.impl.client.CloseableHttpClient; + +/** + * @author yangyh22 + * @since 2020/11/14 + */ +public class ApacheAuditMediaUploadRequestExecutor extends AuditMediaUploadRequestExecutor { + + public ApacheAuditMediaUploadRequestExecutor(RequestHttp requestHttp) { + super(requestHttp); + } + + @Override + public WxMaAuditMediaUploadResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException { + HttpPost httpPost = new HttpPost(uri); + if (requestHttp.getRequestHttpProxy() != null) { + RequestConfig config = RequestConfig.custom().setProxy(requestHttp.getRequestHttpProxy()).build(); + httpPost.setConfig(config); + } + if (file != null) { + HttpEntity entity = MultipartEntityBuilder + .create() + .addBinaryBody("media", file) + .setMode(HttpMultipartMode.RFC6532) + .build(); + httpPost.setEntity(entity); + } + try (CloseableHttpResponse response = requestHttp.getRequestHttpClient().execute(httpPost)) { + String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); + WxError error = WxError.fromJson(responseContent, wxType); + if (error.getErrorCode() != 0) { + throw new WxErrorException(error); + } + return WxMaAuditMediaUploadResult.fromJson(responseContent); + } finally { + httpPost.releaseConnection(); + } + } +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/AuditMediaUploadRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/AuditMediaUploadRequestExecutor.java new file mode 100644 index 0000000000..6aad5cfdc3 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/AuditMediaUploadRequestExecutor.java @@ -0,0 +1,47 @@ +package cn.binarywang.wx.miniapp.executor; + +import java.io.File; +import java.io.IOException; + +import me.chanjar.weixin.common.util.http.RequestExecutor; +import me.chanjar.weixin.common.util.http.RequestHttp; +import me.chanjar.weixin.common.util.http.ResponseHandler; +import me.chanjar.weixin.common.enums.WxType; +import me.chanjar.weixin.common.error.WxErrorException; +import cn.binarywang.wx.miniapp.bean.WxMaAuditMediaUploadResult; + +/** + * 小程序 提审素材上传接口 + * 上传媒体文件请求执行器. + * 请求的参数是File, 返回的结果是String + * + * @author yangyh22 + * @since 2020/11/14 + */ +public abstract class AuditMediaUploadRequestExecutor implements RequestExecutor { + + protected RequestHttp requestHttp; + + public AuditMediaUploadRequestExecutor(RequestHttp requestHttp) { + this.requestHttp = requestHttp; + } + + @Override + public void execute(String uri, File data, ResponseHandler handler, WxType wxType) throws WxErrorException, IOException { + handler.handle(this.execute(uri, data, wxType)); + } + + public static RequestExecutor create(RequestHttp requestHttp) { + switch (requestHttp.getRequestType()) { + case APACHE_HTTP: + return new ApacheAuditMediaUploadRequestExecutor(requestHttp); + case JODD_HTTP: + return new JoddHttpAuditMediaUploadRequestExecutor(requestHttp); + case OK_HTTP: + return new OkHttpAuditMediaUploadRequestExecutor(requestHttp); + default: + return null; + } + } + +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/JoddHttpAuditMediaUploadRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/JoddHttpAuditMediaUploadRequestExecutor.java new file mode 100644 index 0000000000..cce7990983 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/JoddHttpAuditMediaUploadRequestExecutor.java @@ -0,0 +1,45 @@ +package cn.binarywang.wx.miniapp.executor; + +import java.io.File; +import java.io.IOException; +import java.nio.charset.StandardCharsets; + +import jodd.http.HttpConnectionProvider; +import jodd.http.HttpRequest; +import jodd.http.HttpResponse; +import jodd.http.ProxyInfo; +import me.chanjar.weixin.common.enums.WxType; +import me.chanjar.weixin.common.error.WxError; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.util.http.RequestHttp; +import cn.binarywang.wx.miniapp.bean.WxMaAuditMediaUploadResult; + +/** + * @author yangyh22 + * @since 2020/11/14 + */ +public class JoddHttpAuditMediaUploadRequestExecutor extends AuditMediaUploadRequestExecutor { + + public JoddHttpAuditMediaUploadRequestExecutor(RequestHttp requestHttp) { + super(requestHttp); + } + + @Override + public WxMaAuditMediaUploadResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException { + HttpRequest request = HttpRequest.post(uri); + if (requestHttp.getRequestHttpProxy() != null) { + requestHttp.getRequestHttpClient().useProxy(requestHttp.getRequestHttpProxy()); + } + request.withConnectionProvider(requestHttp.getRequestHttpClient()); + request.form("media", file); + HttpResponse response = request.send(); + response.charset(StandardCharsets.UTF_8.name()); + + String responseContent = response.bodyText(); + WxError error = WxError.fromJson(responseContent, wxType); + if (error.getErrorCode() != 0) { + throw new WxErrorException(error); + } + return WxMaAuditMediaUploadResult.fromJson(responseContent); + } +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpAuditMediaUploadRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpAuditMediaUploadRequestExecutor.java new file mode 100644 index 0000000000..808f16d838 --- /dev/null +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/OkHttpAuditMediaUploadRequestExecutor.java @@ -0,0 +1,49 @@ +package cn.binarywang.wx.miniapp.executor; + +import java.io.File; +import java.io.IOException; + +import me.chanjar.weixin.common.enums.WxType; +import me.chanjar.weixin.common.error.WxError; +import me.chanjar.weixin.common.error.WxErrorException; +import me.chanjar.weixin.common.util.http.RequestHttp; +import cn.binarywang.wx.miniapp.bean.WxMaAuditMediaUploadResult; +import me.chanjar.weixin.common.util.http.okhttp.OkHttpProxyInfo; +import okhttp3.MediaType; +import okhttp3.MultipartBody; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.RequestBody; +import okhttp3.Response; + +/** + * @author yangyh22 + * @since 2020/11/14 + */ +public class OkHttpAuditMediaUploadRequestExecutor extends AuditMediaUploadRequestExecutor { + + public OkHttpAuditMediaUploadRequestExecutor(RequestHttp requestHttp) { + super(requestHttp); + } + + @Override + public WxMaAuditMediaUploadResult execute(String uri, File file, WxType wxType) throws WxErrorException, IOException { + + RequestBody body = new MultipartBody.Builder() + .setType(MediaType.parse("multipart/form-data")) + .addFormDataPart("media", + file.getName(), + RequestBody.create(MediaType.parse("application/octet-stream"), file)) + .build(); + Request request = new Request.Builder().url(uri).post(body).build(); + + Response response = requestHttp.getRequestHttpClient().newCall(request).execute(); + String responseContent = response.body().string(); + WxError error = WxError.fromJson(responseContent, wxType); + if (error.getErrorCode() != 0) { + throw new WxErrorException(error); + } + return WxMaAuditMediaUploadResult.fromJson(responseContent); + } + +} diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeBytesRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeBytesRequestExecutor.java similarity index 98% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeBytesRequestExecutor.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeBytesRequestExecutor.java index bd473fb21c..ab2d262f2c 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeBytesRequestExecutor.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeBytesRequestExecutor.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util; +package cn.binarywang.wx.miniapp.executor; import cn.binarywang.wx.miniapp.bean.AbstractWxMaQrcodeWrapper; import me.chanjar.weixin.common.enums.WxType; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeFileRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeFileRequestExecutor.java similarity index 98% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeFileRequestExecutor.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeFileRequestExecutor.java index 8d5d674356..6580678efb 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeFileRequestExecutor.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeFileRequestExecutor.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util; +package cn.binarywang.wx.miniapp.executor; import cn.binarywang.wx.miniapp.bean.AbstractWxMaQrcodeWrapper; import me.chanjar.weixin.common.enums.WxType; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeRequestExecutor.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeRequestExecutor.java similarity index 98% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeRequestExecutor.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeRequestExecutor.java index d3b764ff1a..83e710dc10 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/QrcodeRequestExecutor.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/executor/QrcodeRequestExecutor.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util; +package cn.binarywang.wx.miniapp.executor; import cn.binarywang.wx.miniapp.bean.AbstractWxMaQrcodeWrapper; import me.chanjar.weixin.common.enums.WxType; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaGsonBuilder.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/WxMaGsonBuilder.java similarity index 94% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaGsonBuilder.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/WxMaGsonBuilder.java index 21b582d5bd..e6f6842fa2 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaGsonBuilder.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/WxMaGsonBuilder.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json; import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; @@ -7,6 +7,7 @@ import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitDistribution; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution; +import cn.binarywang.wx.miniapp.json.adaptor.*; import com.google.gson.Gson; import com.google.gson.GsonBuilder; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaCodeCommitRequestGsonAdapter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaCodeCommitRequestGsonAdapter.java old mode 100755 new mode 100644 similarity index 90% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaCodeCommitRequestGsonAdapter.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaCodeCommitRequestGsonAdapter.java index 410f86ca1f..accf80fc93 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaCodeCommitRequestGsonAdapter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaCodeCommitRequestGsonAdapter.java @@ -1,6 +1,7 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json.adaptor; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeCommitRequest; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonSerializationContext; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaCodeVersionDistributionGsonAdapter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaCodeVersionDistributionGsonAdapter.java similarity index 97% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaCodeVersionDistributionGsonAdapter.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaCodeVersionDistributionGsonAdapter.java index 027ca6a959..018be6b046 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaCodeVersionDistributionGsonAdapter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaCodeVersionDistributionGsonAdapter.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json.adaptor; import cn.binarywang.wx.miniapp.bean.code.WxMaCodeVersionDistribution; import com.google.gson.JsonArray; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaRetainInfoGsonAdapter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaRetainInfoGsonAdapter.java similarity index 97% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaRetainInfoGsonAdapter.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaRetainInfoGsonAdapter.java index a51972b4bd..2e71f9eb4e 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaRetainInfoGsonAdapter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaRetainInfoGsonAdapter.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json.adaptor; import cn.binarywang.wx.miniapp.bean.analysis.WxMaRetainInfo; import com.google.gson.JsonArray; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaSubscribeMessageGsonAdapter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaSubscribeMessageGsonAdapter.java similarity index 96% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaSubscribeMessageGsonAdapter.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaSubscribeMessageGsonAdapter.java index 89f8bad8d3..ac877f8b21 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaSubscribeMessageGsonAdapter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaSubscribeMessageGsonAdapter.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json.adaptor; import cn.binarywang.wx.miniapp.bean.WxMaSubscribeMessage; import com.google.gson.JsonElement; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaUniformMessageGsonAdapter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaUniformMessageGsonAdapter.java similarity index 98% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaUniformMessageGsonAdapter.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaUniformMessageGsonAdapter.java index 75ccd68aaa..3f81914d0c 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaUniformMessageGsonAdapter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaUniformMessageGsonAdapter.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json.adaptor; import java.lang.reflect.Type; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaUserPortraitGsonAdapter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaUserPortraitGsonAdapter.java similarity index 98% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaUserPortraitGsonAdapter.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaUserPortraitGsonAdapter.java index b8a7c448ff..c99fd67ba3 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaUserPortraitGsonAdapter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaUserPortraitGsonAdapter.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json.adaptor; import cn.binarywang.wx.miniapp.bean.analysis.WxMaUserPortrait; import com.google.gson.JsonArray; diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaVisitDistributionGsonAdapter.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaVisitDistributionGsonAdapter.java similarity index 97% rename from weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaVisitDistributionGsonAdapter.java rename to weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaVisitDistributionGsonAdapter.java index 0fc79d44bd..74ae61821b 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/util/json/WxMaVisitDistributionGsonAdapter.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/json/adaptor/WxMaVisitDistributionGsonAdapter.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json.adaptor; import cn.binarywang.wx.miniapp.bean.analysis.WxMaVisitDistribution; import com.google.gson.JsonArray; diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImplTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImplTest.java index 6991ad9c25..bf6e23797e 100644 --- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImplTest.java +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaExpressServiceImplTest.java @@ -7,7 +7,7 @@ import cn.binarywang.wx.miniapp.bean.express.result.WxMaExpressOrderInfoResult; import cn.binarywang.wx.miniapp.constant.WxMaConstants; import cn.binarywang.wx.miniapp.test.ApiTestModule; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.inject.Inject; import me.chanjar.weixin.common.error.WxErrorException; import org.apache.commons.lang3.StringUtils; diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImplTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImplTest.java index 1d43b50bee..b9a5b94121 100644 --- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImplTest.java +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/api/impl/WxMaLiveServiceImplTest.java @@ -1,6 +1,7 @@ package cn.binarywang.wx.miniapp.api.impl; import cn.binarywang.wx.miniapp.api.WxMaService; +import cn.binarywang.wx.miniapp.bean.live.WxMaCreateRoomResult; import cn.binarywang.wx.miniapp.bean.live.WxMaLiveResult; import cn.binarywang.wx.miniapp.bean.live.WxMaLiveRoomInfo; import cn.binarywang.wx.miniapp.test.ApiTestModule; @@ -14,6 +15,7 @@ import java.util.Calendar; import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; import static org.testng.Assert.assertNotNull; /** @@ -50,8 +52,9 @@ public void createRoom() throws Exception { roomInfo.setCloseLike(0); roomInfo.setCloseGoods(0); roomInfo.setCloseComment(0); - Integer roomId = this.wxService.getLiveService().createRoom(roomInfo); - System.out.println(roomId); + WxMaCreateRoomResult result = this.wxService.getLiveService().createRoom(roomInfo); + assertNotNull(result); + assertThat(result.getRoomId()).isNotNull(); } @Test diff --git a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/util/json/WxMaUniformMessageGsonAdapterTest.java b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/json/WxMaUniformMessageGsonAdapterTest.java similarity index 98% rename from weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/util/json/WxMaUniformMessageGsonAdapterTest.java rename to weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/json/WxMaUniformMessageGsonAdapterTest.java index 1ae60070cd..7b19136aff 100644 --- a/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/util/json/WxMaUniformMessageGsonAdapterTest.java +++ b/weixin-java-miniapp/src/test/java/cn/binarywang/wx/miniapp/json/WxMaUniformMessageGsonAdapterTest.java @@ -1,4 +1,4 @@ -package cn.binarywang.wx.miniapp.util.json; +package cn.binarywang.wx.miniapp.json; import cn.binarywang.wx.miniapp.bean.WxMaTemplateData; import cn.binarywang.wx.miniapp.bean.WxMaUniformMessage; diff --git a/weixin-java-mp/pom.xml b/weixin-java-mp/pom.xml index 27bbd195ab..5e5815661e 100644 --- a/weixin-java-mp/pom.xml +++ b/weixin-java-mp/pom.xml @@ -7,7 +7,7 @@ com.github.binarywang wx-java - 3.9.9.B + 4.0.0 weixin-java-mp diff --git a/weixin-java-open/pom.xml b/weixin-java-open/pom.xml index 3193581288..a7bd9d05b4 100644 --- a/weixin-java-open/pom.xml +++ b/weixin-java-open/pom.xml @@ -7,7 +7,7 @@ com.github.binarywang wx-java - 3.9.9.B + 4.0.0 weixin-java-open diff --git a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java index a8c252bae0..24d9e23414 100644 --- a/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java +++ b/weixin-java-open/src/main/java/me/chanjar/weixin/open/api/impl/WxOpenMaServiceImpl.java @@ -4,7 +4,7 @@ import cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl; import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; import cn.binarywang.wx.miniapp.config.WxMaConfig; -import cn.binarywang.wx.miniapp.util.json.WxMaGsonBuilder; +import cn.binarywang.wx.miniapp.json.WxMaGsonBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import me.chanjar.weixin.common.error.WxErrorException; diff --git a/weixin-java-pay/pom.xml b/weixin-java-pay/pom.xml index 3050ec8f6a..b992e899ed 100644 --- a/weixin-java-pay/pom.xml +++ b/weixin-java-pay/pom.xml @@ -5,7 +5,7 @@ com.github.binarywang wx-java - 3.9.9.B + 4.0.0 4.0.0 diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/FundBillRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/FundBillRequest.java new file mode 100644 index 0000000000..9f12bc3781 --- /dev/null +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/FundBillRequest.java @@ -0,0 +1,79 @@ +package com.github.binarywang.wxpay.bean.ecommerce; + +import com.google.gson.annotations.SerializedName; +import lombok.*; + +/** + * 资金账单请求 + * @author: f00lish + * @date: 2020/09/28 + */ +@Data +@Builder +@ToString +@NoArgsConstructor(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class FundBillRequest { + + /** + *
+   * 字段名:账单日期
+   * 变量名:bill_date
+   * 是否必填:是
+   * 类型:string(10)
+   * 描述:
+   *  格式YYYY-MM-DD
+   *  仅支持三个月内的账单下载申请。
+   *  示例值:2019-06-11
+   * 
+ */ + @SerializedName(value = "bill_date") + private String billDate; + + + /** + *
+   * 字段名:资金账户类型
+   * 变量名:account_type
+   * 是否必填:是
+   * 类型:string(32)
+   * 描述:
+   *  枚举值:
+   *  ALL:所有账户
+   *  示例值:ALL
+   * 
+ */ + @SerializedName(value = "account_type") + private String accountType; + + /** + *
+   * 字段名:压缩类型
+   * 变量名:tar_type
+   * 是否必填:否
+   * 类型:string(32)
+   * 描述:
+   *  不填则以不压缩的方式返回数据流
+   *  枚举值:
+   *  GZIP:返回格式为.gzip的压缩包账单
+   *  示例值:GZIP
+   * 
+ */ + @SerializedName(value = "tar_type") + private String tarType; + + /** + *
+   * 字段名:加密算法
+   * 变量名:algorithm
+   * 是否必填:是
+   * 类型:string(32)
+   * 描述:
+   *  枚举值:
+   *  AEAD_AES_256_GCM:AEAD_AES_256_GCM加密算法
+   *  示例值:AEAD_AES_256_GCM
+   * 
+ */ + @SerializedName(value = "algorithm") + private String algorithm; +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/FundBillResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/FundBillResult.java new file mode 100644 index 0000000000..de0dcdb890 --- /dev/null +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/FundBillResult.java @@ -0,0 +1,139 @@ +package com.github.binarywang.wxpay.bean.ecommerce; + +import com.google.gson.annotations.SerializedName; +import lombok.*; + +/** + * 资金账单结果 + * @author: f00lish + * @date: 2020/09/28 + */ +@Data +@Builder +@ToString +@NoArgsConstructor(access = AccessLevel.PRIVATE) +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public class FundBillResult { + + /** + *
+   * 字段名:下载信息总数
+   * 变量名:download_bill_count
+   * 是否必填:是
+   * 类型:int
+   * 描述:
+   *  下载信息总数
+   *  示例值:1
+   * 
+ */ + @SerializedName(value = "download_bill_count") + private int downloadBillCount; + + + + /** + *
+   * 字段名:下载信息明细
+   * 变量名:download_bill_list
+   * 是否必填:否
+   * 类型:array
+   * 描述:
+   *  下载信息明细
+   * 
+ */ + @SerializedName(value = "download_bill_list") + private FundBill[] downloadBillList; + + @Data + public static class FundBill { + + /** + *
+     * 字段名:账单文件序号
+     * 变量名:bill_sequence
+     * 是否必填:是
+     * 类型:int
+     * 描述:
+     *  商户将多个文件按账单文件序号的顺序合并为完整的资金账单文件,起始值为1
+     *  示例值:1
+     * 
+ */ + @SerializedName(value = "bill_sequence") + private String billSequence; + + /** + *
+     * 字段名:哈希类型
+     * 变量名:hash_type
+     * 是否必填:是
+     * 类型:string(32)
+     * 描述:
+     *  枚举值:
+     *  SHA1:SHA1值
+     *  示例值:SHA1
+     * 
+ */ + @SerializedName(value = "hash_type") + private String hashType; + + /** + *
+     * 字段名:哈希值
+     * 变量名:hash_value
+     * 是否必填:是
+     * 类型:string(1024)
+     * 描述:
+     *  原始账单(gzip需要解压缩)的摘要值,用于校验文件的完整性。
+     *  示例值:79bb0f45fc4c42234a918000b2668d689e2bde04
+     * 
+ */ + @SerializedName(value = "hash_value") + private String hashValue; + + /** + *
+     * 字段名:账单下载地址
+     * 变量名:download_url
+     * 是否必填:是
+     * 类型:string(2048)
+     * 描述:
+     *  供下一步请求账单文件的下载地址,该地址30s内有效。
+     *  示例值:https://api.mch.weixin.qq.com/v3/billdownload/file?token=xxx
+     * 
+ */ + @SerializedName(value = "download_url") + private String downloadUrl; + + + /** + *
+     * 字段名:加密密钥
+     * 变量名:encrypt_key
+     * 是否必填:是
+     * 类型:string(512)
+     * 描述:
+     *  加密账单文件使用的加密密钥。密钥用商户证书的公钥进行加密,然后进行Base64编码
+     *  示例值:YpkbxSne+mDwyXq//xYPmtr9eQ5LsH7zLMZSs+GSEcY4wjhlsfioS4n9X6q1ZBL0wM1v5qd7KhWuj0rFJ4N1FidP7Q8KDy25QDTt46wiKnsPKSCAXWRFNw1D2JmJBqZsc9y5g0DupONWKYB2GfRigRDEBVszj67uOIILPdxOKX1w3N4jvu0U9IFanJa7ldm70KVvYrMWVgQFDPbgjh1gVDbuTAjmPN88AobLdkiegnBUS2woDZW+PfhPo13kweOiR3h1gXIKRlnKnN3Jkkwpna/AFFijXrFphO3voSuiV0CfptfzTtcae4X3DYG3RSroKqmpa+5tuy2aU2VJUSIuFQ==
+     * 
+ */ + @SerializedName(value = "encrypt_key") + private String encryptKey; + + /** + *
+     * 字段名:随机字符串
+     * 变量名:nonce
+     * 是否必填:是
+     * 类型:string(16)
+     * 描述:
+     *  加密账单文件使用的随机字符串
+     *  示例值:a8607ef79034c49c
+     * 
+ */ + @SerializedName(value = "nonce") + private String nonce; + + + } + +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/BillRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/TradeBillRequest.java similarity index 97% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/BillRequest.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/TradeBillRequest.java index 247b2a7d01..ad623edf56 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/BillRequest.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/TradeBillRequest.java @@ -4,7 +4,7 @@ import lombok.*; /** - * 账单请求 + * 交易账单请求 * @author: f00lish * @date: 2020/09/28 */ @@ -13,7 +13,7 @@ @ToString @NoArgsConstructor(access = AccessLevel.PRIVATE) @AllArgsConstructor(access = AccessLevel.PRIVATE) -public class BillRequest { +public class TradeBillRequest { /** *
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/BillResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/TradeBillResult.java
similarity index 96%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/BillResult.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/TradeBillResult.java
index 4a5bdb9524..2fb7b60564 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/BillResult.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/TradeBillResult.java
@@ -4,7 +4,7 @@
 import lombok.*;
 
 /**
- * 账单结果
+ * 交易账单结果
  * @author: f00lish
  * @date: 2020/09/28
  */
@@ -13,7 +13,7 @@
 @ToString
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
 @AllArgsConstructor(access = AccessLevel.PRIVATE)
-public class BillResult {
+public class TradeBillResult {
 
   /**
    * 
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/enums/BillTypeEnum.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/enums/FundBillTypeEnum.java
similarity index 64%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/enums/BillTypeEnum.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/enums/FundBillTypeEnum.java
index 598ee4be4b..72aff3a02b 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/enums/BillTypeEnum.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/ecommerce/enums/FundBillTypeEnum.java
@@ -10,17 +10,16 @@
  */
 @Getter
 @AllArgsConstructor
-public enum BillTypeEnum {
+public enum FundBillTypeEnum {
 
   /**
-   * 交易账单
+   * 资金账单
    */
-  TRADE_BILL("%s/v3/bill/tradebill?%s"),
+  FUND_FLOW_BILL("%s/v3/bill/fundflowbill?%s"),
   /**
-   * 资金账单
+   * 二级商户资金账单
    */
-  FUND_FLOW_BILL("%s/v3/bill/fundflowbill?%s");
-
+  SUB_FUND_FLOW_BILL("%s/v3/ecommerce/bill/fundflowbill?%s");
 
   /**
    * url
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entwxpay/EntWxEmpPayRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entwxpay/EntWxEmpPayRequest.java
new file mode 100644
index 0000000000..37c0d038dd
--- /dev/null
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/entwxpay/EntWxEmpPayRequest.java
@@ -0,0 +1,229 @@
+package com.github.binarywang.wxpay.bean.entwxpay;
+
+import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import lombok.*;
+import me.chanjar.weixin.common.annotation.Required;
+
+import java.util.Map;
+
+/**
+ * Created on 2020/11/29.
+ * 向员工付款请求对象
+ * @author 拎小壶冲
+ */
+@Data
+@EqualsAndHashCode(callSuper = true)
+@Builder(builderMethodName = "newBuilder")
+@NoArgsConstructor
+@AllArgsConstructor
+@XStreamAlias("xml")
+public class EntWxEmpPayRequest extends BaseWxPayRequest {
+
+  /**
+   * 
+   * 字段名:商户订单号.
+   * 变量名:partner_trade_no
+   * 是否必填:是
+   * 示例值:10000098201411111234567890
+   * 类型:String
+   * 描述:商户订单号
+   * 
+ */ + @Required + @XStreamAlias("partner_trade_no") + private String partnerTradeNo; + + /** + *
+   * 字段名:需保持唯一性 用户openid.
+   * 变量名:openid
+   * 是否必填:是
+   * 示例值:oxTWIuGaIt6gTKsQRLau2M0yL16E
+   * 类型:String
+   * 描述:商户appid下,某用户的openid
+   * 
+ */ + @Required + @XStreamAlias("openid") + private String openid; + + /** + *
+   * 字段名:设备号.
+   * 变量名:device_info
+   * 是否必填:否
+   * 示例值:13467007045764
+   * 类型:String(32)
+   * 描述:微信支付分配的终端设备号
+   * 
+ */ + @XStreamAlias("device_info") + private String deviceInfo; + + /** + *
+   * 字段名:校验用户姓名选项.
+   * 变量名:check_name
+   * 是否必填:是
+   * 示例值:OPTION_CHECK
+   * 类型:String
+   * 描述:NO_CHECK:不校验真实姓名 
+   * FORCE_CHECK:强校验真实姓名(未实名认证的用户会校验失败,无法转账) 
+   * OPTION_CHECK:针对已实名认证的用户才校验真实姓名(未实名认证用户不校验,可以转账成功)
+   * 
+ */ + @Required + @XStreamAlias("check_name") + private String checkName; + + /** + *
+   * 字段名:收款用户姓名.
+   * 变量名:re_user_name
+   * 是否必填:可选
+   * 示例值:马花花
+   * 类型:String
+   * 描述:收款用户真实姓名。
+   * 如果check_name设置为FORCE_CHECK或OPTION_CHECK,  则必填用户真实姓名
+   * 
+ */ + @XStreamAlias("re_user_name") + private String reUserName; + + /** + *
+   * 字段名:金额.
+   * 变量名:amount
+   * 是否必填:是
+   * 示例值:10099
+   * 类型:int
+   * 描述:企业付款金额, 单位为分
+   * 
+ */ + @Required + @XStreamAlias("amount") + private Integer amount; + + /** + *
+   * 字段名:企业付款描述信息.
+   * 变量名:desc
+   * 是否必填:是
+   * 示例值:理赔
+   * 类型:String
+   * 描述:企业付款操作说明信息。必填。
+   * 
+ */ + @Required + @XStreamAlias("desc") + private String description; + + /** + *
+   * 字段名:Ip地址.
+   * 变量名:spbill_create_ip
+   * 是否必填:是
+   * 示例值:192.168.0.1
+   * 类型:String(32)
+   * 描述:调用接口的机器Ip地址
+   * 
+ */ + @Required + @XStreamAlias("spbill_create_ip") + private String spbillCreateIp; + + /** + *
+   *   字段名: 付款消息类型
+   *   变量名: ww_msg_type
+   *   是否必填: 是
+   *   示例值:NORMAL_MSG
+   *   描述:NORMAL_MSG:普通付款消息 APPROVAL _MSG:审批付款消息
+   * 
+ */ + @Required + @XStreamAlias("ww_msg_type") + private String wwMsgType; + + /** + *
+   *   字段名: 审批单号
+   *   变量名: approval_number
+   *   是否必填: 否
+   *   示例值: 201705160008
+   *   描述:ww_msg_type为APPROVAL _MSG时,需要填写approval_number
+   * 
+ */ + @XStreamAlias("approval_number") + private String approvalNumber; + + /** + *
+   *   字段名: 审批类型
+   *   变量名: approval_type
+   *   是否必填: 否
+   *   示例值: 1
+   *   描述:ww_msg_type为APPROVAL _MSG时,需要填写1
+   * 
+ */ + @XStreamAlias("approval_type") + private Integer approvalType; + + + /** + *
+   *   字段名: 项目名称
+   *   变量名: act_name
+   *   是否必填: 是
+   *   示例值: 产品部门报销
+   *   描述:项目名称,最长50个utf8字符
+   * 
+ */ + @Required + @XStreamAlias("act_name") + private String actName; + + /** + *
+   *   字段名: 付款的应用id
+   *   变量名: agentid
+   *   是否必填: 否
+   *   示例值: 1
+   *   描述:以企业应用的名义付款,企业应用id,整型,可在企业微信管理端应用的设置页面查看。
+   * 
+ */ + @XStreamAlias("agentid") + private Integer agentId; + + + @Override + protected void checkConstraints() throws WxPayException { + + } + + @Override + protected boolean isWxWorkSign() { + return true; + } + + @Override + protected void storeMap(Map map) { + map.put("appid", appid); + map.put("mch_id", mchId); + map.put("device_info", deviceInfo); + map.put("partner_trade_no", partnerTradeNo); + map.put("openid", openid); + map.put("check_name", checkName); + map.put("re_user_name", reUserName); + map.put("amount", amount.toString()); + map.put("desc", description); + map.put("spbill_create_ip", spbillCreateIp); + map.put("act_name", actName); + map.put("ww_msg_type", wwMsgType); + map.put("approval_number", approvalNumber); + map.put("approval_type", approvalType.toString()); + map.put("agentid", agentId.toString()); + } +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EcommerceService.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EcommerceService.java index 367f2e8e1e..91c58e7ac3 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EcommerceService.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EcommerceService.java @@ -1,7 +1,7 @@ package com.github.binarywang.wxpay.service; import com.github.binarywang.wxpay.bean.ecommerce.*; -import com.github.binarywang.wxpay.bean.ecommerce.enums.BillTypeEnum; +import com.github.binarywang.wxpay.bean.ecommerce.enums.FundBillTypeEnum; import com.github.binarywang.wxpay.bean.ecommerce.enums.SpAccountTypeEnum; import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum; import com.github.binarywang.wxpay.exception.WxPayException; @@ -394,12 +394,24 @@ public interface EcommerceService { * 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pages/bill.shtml *
* + * @param request 请求信息。 + * @return 返回数据 return trade bill result + * @throws WxPayException the wx pay exception + */ + TradeBillResult applyBill(TradeBillRequest request) throws WxPayException; + + /** + *
+   * 申请资金账单API
+   * 文档地址: https://pay.weixin.qq.com/wiki/doc/apiv3/wxpay/pay/bill/chapter3_2.shtml
+   * 
+ * * @param billType 账单类型。 - * @param request 二级商户号。 - * @return 返回数据 return bill result + * @param request 请求信息。 + * @return 返回数据 return fund bill result * @throws WxPayException the wx pay exception */ - BillResult applyBill(BillTypeEnum billType, BillRequest request) throws WxPayException; + FundBillResult applyFundBill(FundBillTypeEnum billType, FundBillRequest request) throws WxPayException; /** *
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java
index 1b1b76b154..ed159275bf 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/EntPayService.java
@@ -1,6 +1,7 @@
 package com.github.binarywang.wxpay.service;
 
 import com.github.binarywang.wxpay.bean.entpay.*;
+import com.github.binarywang.wxpay.bean.entwxpay.EntWxEmpPayRequest;
 import com.github.binarywang.wxpay.exception.WxPayException;
 
 /**
@@ -143,4 +144,15 @@ public interface EntPayService {
    * @throws WxPayException the wx pay exception
    */
   EntPayRedpackQueryResult queryEnterpriseRedpack(EntPayRedpackQueryRequest request) throws WxPayException;
+
+  /**
+   * 向员工付款
+   * 文档详见 https://work.weixin.qq.com/api/doc/90000/90135/90278
+   * 接口链接 https://api.mch.weixin.qq.com/mmpaymkttransfers/promotion/paywwsptrans2pocket
+   *
+   * @param request 请求对象
+   * @return EntPayResult the ent pay result
+   * @throws WxPayException the wx pay exception
+   */
+  EntPayResult toEmpPay(EntWxEmpPayRequest request) throws WxPayException;
 }
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EcommerceServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EcommerceServiceImpl.java
index 67976caf31..58a02d8ff8 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EcommerceServiceImpl.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EcommerceServiceImpl.java
@@ -1,7 +1,7 @@
 package com.github.binarywang.wxpay.service.impl;
 
 import com.github.binarywang.wxpay.bean.ecommerce.*;
-import com.github.binarywang.wxpay.bean.ecommerce.enums.BillTypeEnum;
+import com.github.binarywang.wxpay.bean.ecommerce.enums.FundBillTypeEnum;
 import com.github.binarywang.wxpay.bean.ecommerce.enums.SpAccountTypeEnum;
 import com.github.binarywang.wxpay.bean.ecommerce.enums.TradeTypeEnum;
 import com.github.binarywang.wxpay.exception.WxPayException;
@@ -295,10 +295,17 @@ public SettlementResult querySettlement(String subMchid) throws WxPayException {
   }
 
   @Override
-  public BillResult applyBill(BillTypeEnum billType, BillRequest request) throws WxPayException {
+  public TradeBillResult applyBill(TradeBillRequest request) throws WxPayException {
+    String url = String.format("%s/v3/bill/tradebill?%s", this.payService.getPayBaseUrl(), this.parseURLPair(request));
+    String response = this.payService.getV3(URI.create(url));
+    return GSON.fromJson(response, TradeBillResult.class);
+  }
+
+  @Override
+  public FundBillResult applyFundBill(FundBillTypeEnum billType, FundBillRequest request) throws WxPayException {
     String url = String.format(billType.getUrl(), this.payService.getPayBaseUrl(), this.parseURLPair(request));
     String response = this.payService.getV3(URI.create(url));
-    return GSON.fromJson(response, BillResult.class);
+    return GSON.fromJson(response, FundBillResult.class);
   }
 
   @Override
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java
index 00e2ede652..db464936c7 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/EntPayServiceImpl.java
@@ -1,6 +1,7 @@
 package com.github.binarywang.wxpay.service.impl;
 
 import com.github.binarywang.wxpay.bean.entpay.*;
+import com.github.binarywang.wxpay.bean.entwxpay.EntWxEmpPayRequest;
 import com.github.binarywang.wxpay.bean.request.WxPayDefaultRequest;
 import com.github.binarywang.wxpay.bean.result.BaseWxPayResult;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
@@ -8,6 +9,7 @@
 import com.github.binarywang.wxpay.service.EntPayService;
 import com.github.binarywang.wxpay.service.WxPayService;
 import com.github.binarywang.wxpay.util.SignUtils;
+import lombok.RequiredArgsConstructor;
 import org.bouncycastle.asn1.x509.SubjectPublicKeyInfo;
 import org.bouncycastle.jce.provider.BouncyCastleProvider;
 import org.bouncycastle.openssl.PEMParser;
@@ -30,17 +32,9 @@
  *
  * @author Binary Wang
  */
+@RequiredArgsConstructor
 public class EntPayServiceImpl implements EntPayService {
-  private WxPayService payService;
-
-  /**
-   * Instantiates a new Ent pay service.
-   *
-   * @param payService the pay service
-   */
-  public EntPayServiceImpl(WxPayService payService) {
-    this.payService = payService;
-  }
+  private final WxPayService payService;
 
   @Override
   public EntPayResult entPay(EntPayRequest request) throws WxPayException {
@@ -158,6 +152,24 @@ public EntPayRedpackQueryResult queryEnterpriseRedpack(EntPayRedpackQueryRequest
     return result;
   }
 
+  @Override
+  public EntPayResult toEmpPay(EntWxEmpPayRequest request) throws WxPayException {
+    //企业微信签名,需要在请求签名之前
+    request.setNonceStr(String.valueOf(System.currentTimeMillis()));
+    request.setWorkWxSign(SignUtils.createEntSign(request.getAmount(), request.getAppid(), request.getDescription(),
+      request.getMchId(), request.getNonceStr(), request.getOpenid(), request.getPartnerTradeNo(),
+      request.getWwMsgType(), payService.getConfig().getEntPayKey(), WxPayConstants.SignType.MD5));
+
+    request.checkAndSign(this.payService.getConfig());
+
+    String url = this.payService.getPayBaseUrl() + "/mmpaymkttransfers/promotion/paywwsptrans2pocket";
+    String responseContent = this.payService.post(url, request.toXML(), true);
+    final EntPayResult result = BaseWxPayResult.fromXML(responseContent, EntPayResult.class);
+
+    result.checkResult(this.payService, request.getSignType(), true);
+    return result;
+  }
+
   private String encryptRSA(File publicKeyFile, String srcString) throws WxPayException {
     try {
       Security.addProvider(new BouncyCastleProvider());
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java
index 0ce39a7312..9e005a813e 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/util/SignUtils.java
@@ -127,6 +127,30 @@ public static String createEntSign(String actName, String mchBillNo, String mchI
     sortedMap.put("total_amount", totalAmount + "");
     sortedMap.put("wxappid", wxAppId);
 
+    return toSignBuilder(sortedMap, signKey, signType);
+  }
+
+  /**
+   * 企业微信签名
+   * @param signType md5 目前接口要求使用的加密类型
+   */
+  public static String createEntSign(Integer totalAmount, String appId, String description, String mchId,
+                                     String nonceStr, String openid, String partnerTradeNo, String wwMsgType,
+                                     String signKey, String signType) {
+    Map sortedMap = new HashMap<>(8);
+    sortedMap.put("amount", String.valueOf(totalAmount));
+    sortedMap.put("appid", appId);
+    sortedMap.put("desc", description);
+    sortedMap.put("mch_id", mchId);
+    sortedMap.put("nonce_str", nonceStr);
+    sortedMap.put("openid", openid);
+    sortedMap.put("partner_trade_no", partnerTradeNo);
+    sortedMap.put("ww_msg_type", wwMsgType);
+
+    return toSignBuilder(sortedMap, signKey, signType);
+  }
+
+  private static String toSignBuilder(Map sortedMap, String signKey, String signType) {
     Iterator> iterator = new TreeMap<>(sortedMap).entrySet().iterator();
     StringBuilder toSign = new StringBuilder();
     while (iterator.hasNext()) {
@@ -148,7 +172,6 @@ public static String createEntSign(String actName, String mchBillNo, String mchI
     } else {
       return DigestUtils.md5Hex(toSign.toString()).toUpperCase();
     }
-
   }
 
   /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/util/AesUtils.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/util/AesUtils.java
index 4030965ebe..2c8c40252f 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/util/AesUtils.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/v3/util/AesUtils.java
@@ -4,6 +4,11 @@
 import com.google.common.io.BaseEncoding;
 import org.apache.commons.lang3.StringUtils;
 
+import javax.crypto.Cipher;
+import javax.crypto.Mac;
+import javax.crypto.NoSuchPaddingException;
+import javax.crypto.spec.GCMParameterSpec;
+import javax.crypto.spec.SecretKeySpec;
 import java.io.IOException;
 import java.security.GeneralSecurityException;
 import java.security.InvalidAlgorithmParameterException;
@@ -13,11 +18,6 @@
 import java.util.Map;
 import java.util.SortedMap;
 import java.util.TreeMap;
-import javax.crypto.Cipher;
-import javax.crypto.Mac;
-import javax.crypto.NoSuchPaddingException;
-import javax.crypto.spec.GCMParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
 
 public class AesUtils {
 
@@ -32,6 +32,31 @@ public AesUtils(byte[] key) {
     this.aesKey = key;
   }
 
+  public static byte[] decryptToByte(byte[] nonce, byte[] cipherData, byte[] key)
+    throws GeneralSecurityException {
+    return decryptToByte(null, nonce, cipherData, key);
+  }
+
+  public static byte[] decryptToByte(byte[] associatedData, byte[] nonce, byte[] cipherData, byte[] key)
+    throws GeneralSecurityException {
+    try {
+      Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
+
+      SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
+      GCMParameterSpec spec = new GCMParameterSpec(TAG_LENGTH_BIT, nonce);
+
+      cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, spec);
+      if (associatedData != null) {
+        cipher.updateAAD(associatedData);
+      }
+      return cipher.doFinal(cipherData);
+    } catch (NoSuchAlgorithmException | NoSuchPaddingException e) {
+      throw new IllegalStateException(e);
+    } catch (InvalidKeyException | InvalidAlgorithmParameterException e) {
+      throw new IllegalArgumentException(e);
+    }
+  }
+
   public String decryptToString(byte[] associatedData, byte[] nonce, String ciphertext)
       throws GeneralSecurityException, IOException {
     try {