diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/Receiver.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/Receiver.java index 671e2951d..e9dfbf87c 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/Receiver.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/Receiver.java @@ -1,8 +1,10 @@ package com.github.binarywang.wxpay.bean.profitsharing; +import com.github.binarywang.wxpay.v3.SpecEncrypt; import com.google.gson.FieldNamingPolicy; import com.google.gson.Gson; import com.google.gson.GsonBuilder; +import com.google.gson.annotations.SerializedName; import java.io.Serializable; @@ -11,12 +13,90 @@ import java.io.Serializable; * @version 1.0 */ public class Receiver implements Serializable { + /** + *
+   * 字段名:分账接收方类型
+   * 是否必填:是
+   * 描述:
+   * 1、MERCHANT_ID:商户号
+   * 2、PERSONAL_OPENID:个人openid(由父商户APPID转换得到)
+   * 
+ */ + @SerializedName("type") private String type; + /** + *
+   * 字段名:分账接收方帐号
+   * 是否必填:是
+   * 描述:
+   * 1、分账接收方类型为MERCHANT_ID时,分账接收方账号为商户号
+   * 2、分账接收方类型为PERSONAL_OPENID时,分账接收方账号为个人openid
+   * 
+ */ + @SerializedName("account") private String account; + /** + *
+   * 字段名:分账金额
+   * 是否必填:是
+   * 描述: 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额
+   * 
+ */ + @SerializedName("amount") private Integer amount; + /** + *
+   * 字段名:分账描述
+   * 是否必填:是
+   * 描述: 分账的原因描述,分账账单中需要体现
+   * 
+ */ + @SerializedName("description") private String description; + /** + *
+   * 字段名:分账个人接收方姓名
+   * 是否必填:否
+   * 描述:
+   * 可选项,在接收方类型为个人的时可选填,若有值,会检查与 name 是否实名匹配,不匹配会拒绝分账请求
+   * 1、分账接收方类型是PERSONAL_OPENID,是个人姓名的密文(选传,传则校验) 此字段的加密方法详见:敏感信息加密说明
+   * 2、使用微信支付平台证书中的公钥
+   * 3、使用RSAES-OAEP算法进行加密
+   * 4、将请求中HTTP头部的Wechatpay-Serial设置为证书序列号
+   * 
+ */ + @SerializedName("name") + @SpecEncrypt private String name; + /** + *
+   * 字段名:与分账方的关系类型
+   * 是否必填:是
+   * 描述:子商户与接收方的关系。 本字段值为枚举:
+   * STORE:门店
+   * STAFF:员工
+   * STORE_OWNER:店主
+   * PARTNER:合作伙伴
+   * HEADQUARTER:总部
+   * BRAND:品牌方
+   * DISTRIBUTOR:分销商
+   * USER:用户
+   * SUPPLIER: 供应商
+   * CUSTOM:自定义
+   * 
+ */ + @SerializedName("relation_type") private String relationType; + /** + *
+   * 字段名:自定义的分账关系
+   * 是否必填:是
+   * 描述:子商户与接收方具体的关系,本字段最多10个字。
+   * 当字段relationType的值为CUSTOM时,本字段必填;
+   * 当字段relationType的值不为CUSTOM时,本字段无需填写。
+   * 
+ */ + @SerializedName("custom_relation") private String customRelation; /** diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingNotifyData.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/notify/ProfitSharingNotifyV3Response.java similarity index 95% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingNotifyData.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/notify/ProfitSharingNotifyV3Response.java index 8e3dec271..ea147eea9 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingNotifyData.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/notify/ProfitSharingNotifyV3Response.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; +package com.github.binarywang.wxpay.bean.profitsharing.notify; import com.google.gson.annotations.SerializedName; import lombok.Data; @@ -16,7 +16,7 @@ import java.io.Serializable; */ @Data @NoArgsConstructor -public class ProfitSharingNotifyData implements Serializable{ +public class ProfitSharingNotifyV3Response implements Serializable{ private static final long serialVersionUID = 4242383310854692441L; /** diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingPartnerNotifyResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/notify/ProfitSharingNotifyV3Result.java similarity index 87% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingPartnerNotifyResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/notify/ProfitSharingNotifyV3Result.java index 77f628cff..0a86269da 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingPartnerNotifyResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/notify/ProfitSharingNotifyV3Result.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; +package com.github.binarywang.wxpay.bean.profitsharing.notify; import com.google.gson.annotations.SerializedName; import lombok.Data; @@ -8,17 +8,27 @@ import java.io.Serializable; /** * - * 微信V3接口-服务商 + * 微信V3接口 * 分账动账通知解密后数据实体 * - * @author linyaqiang - * @since 2023-08-01 + * @author yuanbo + * @since 2022-04-26-21:08 PM */ @Data @NoArgsConstructor -public class ProfitSharingPartnerNotifyResult implements Serializable { +public class ProfitSharingNotifyV3Result implements Serializable { private static final long serialVersionUID = -2875006651351414624L; + /** + *
+   * 字段名:直连商户号
+   * 是否必填:是
+   * 描述:直连模式分账发起和出资商户
+   * 
+ */ + @SerializedName("mchid") + private String mchId; + /** *
    * 字段名:服务商商户号
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingBillRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingBillV3Request.java
similarity index 90%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingBillRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingBillV3Request.java
index 1eaebbacb..dcda949dc 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingBillRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingBillV3Request.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing.v3;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import java.io.Serializable;
 
@@ -19,7 +19,7 @@ import lombok.NoArgsConstructor;
 @Builder(builderMethodName = "newBuilder")
 @NoArgsConstructor
 @AllArgsConstructor
-public class ProfitSharingBillRequest implements Serializable {
+public class ProfitSharingBillV3Request implements Serializable {
   private static final long serialVersionUID = 5200819754873844593L;
 
   /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingMerchantRatioQueryRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingMerchantRatioQueryRequest.java
similarity index 94%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingMerchantRatioQueryRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingMerchantRatioQueryRequest.java
index 0381fe64a..43902c782 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingMerchantRatioQueryRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingMerchantRatioQueryRequest.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingOrderAmountQueryRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingOrderAmountQueryRequest.java
similarity index 95%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingOrderAmountQueryRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingOrderAmountQueryRequest.java
index 455f72f2b..416c35d7d 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingOrderAmountQueryRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingOrderAmountQueryRequest.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingQueryRequest.java
similarity index 96%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingQueryRequest.java
index d342153a9..56a0d5840 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingQueryRequest.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingQueryRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingQueryV3Request.java
similarity index 78%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingQueryRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingQueryV3Request.java
index ae50d5e52..981adad59 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingQueryRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingQueryV3Request.java
@@ -1,16 +1,11 @@
-package com.github.binarywang.wxpay.bean.profitsharing.v3;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
-import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
-import com.github.binarywang.wxpay.constant.WxPayConstants;
-import com.github.binarywang.wxpay.exception.WxPayException;
 import com.google.gson.annotations.SerializedName;
 import com.thoughtworks.xstream.annotations.XStreamAlias;
 import lombok.*;
-import lombok.experimental.Accessors;
 import me.chanjar.weixin.common.annotation.Required;
 
 import java.io.Serializable;
-import java.util.Map;
 
 /**
  * @author lyt 2023/08/21 15:44
@@ -20,7 +15,7 @@ import java.util.Map;
 @Builder(builderMethodName = "newBuilder")
 @NoArgsConstructor
 @AllArgsConstructor
-public class ProfitSharingQueryRequest implements Serializable {
+public class ProfitSharingQueryV3Request implements Serializable {
   private static final long serialVersionUID = 1L;
   /**
    * 
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReceiverRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReceiverRequest.java
similarity index 95%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReceiverRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReceiverRequest.java
index db6485439..5bca6b60f 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReceiverRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReceiverRequest.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReceiver.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReceiverV3Request.java
similarity index 62%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReceiver.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReceiverV3Request.java
index 10ba3821b..b8de4f5d5 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReceiver.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReceiverV3Request.java
@@ -1,29 +1,29 @@
-package com.github.binarywang.wxpay.bean.profitsharing.v3;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
+import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
+import com.github.binarywang.wxpay.constant.WxPayConstants;
+import com.github.binarywang.wxpay.exception.WxPayException;
 import com.github.binarywang.wxpay.v3.SpecEncrypt;
 import com.google.gson.annotations.SerializedName;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import com.thoughtworks.xstream.annotations.XStreamAlias;
+import lombok.*;
+import me.chanjar.weixin.common.annotation.Required;
 
 import java.io.Serializable;
+import java.util.Map;
 
 /**
+ * 添加/删除分账接受方请求对象
  *
- * 微信V3接口 分账接收方实体
- * @author pg
- * created on  2021-6-25
- *
+ * @author lyt 2023-08-23 10:09:21
+ * @version 1.0
  */
 @Data
 @Builder(builderMethodName = "newBuilder")
 @NoArgsConstructor
 @AllArgsConstructor
-public class ProfitSharingReceiver implements Serializable {
-  private static final long serialVersionUID = -4391888575149767840L;
-
-
+public class ProfitSharingReceiverV3Request implements Serializable {
+  private static final long serialVersionUID = 1L;
   /**
    * 
    * 字段名:子商户号
@@ -125,41 +125,4 @@ public class ProfitSharingReceiver implements Serializable {
    */
   @SerializedName("custom_relation")
   private String customRelation;
-
-  /**
-   * 
-   * 字段名:分账描述
-   * 是否必填:是
-   * 描述: 分账的原因描述,分账账单中需要体现
-   * 
- */ - private String description; - /** - *
-   * 字段名:分账金额
-   * 是否必填:是
-   * 描述: 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额
-   * 
- */ - private Long amount; - - /** - * 此构造函数用于分账接口 - * - * @param type MERCHANT_ID:商户ID - * PERSONAL_WECHATID:个人微信号PERSONAL_OPENID:个人openid(由父商户APPID转换得到)PERSONAL_SUB_OPENID: 个人sub_openid(由子商户APPID转换得到) - * @param account 类型是MERCHANT_ID时,是商户ID - * 类型是PERSONAL_WECHATID时,是个人微信号 - * 类型是PERSONAL_OPENID时,是个人openid - * 类型是PERSONAL_SUB_OPENID时,是个人sub_openid - * @param amount 分账金额,单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额 - * @param description 分账的原因描述,分账账单中需要体现 - */ - public ProfitSharingReceiver(String type, String account, Long amount, String description) { - this.type = type; - this.account = account; - this.amount = amount; - this.description = description; - } - } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingRequest.java similarity index 91% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingRequest.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingRequest.java index e3b1f5690..95b5e67fc 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingRequest.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingRequest.java @@ -1,12 +1,16 @@ -package com.github.binarywang.wxpay.bean.profitsharing; +package com.github.binarywang.wxpay.bean.profitsharing.request; import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest; import com.github.binarywang.wxpay.constant.WxPayConstants; import com.github.binarywang.wxpay.exception.WxPayException; +import com.github.binarywang.wxpay.v3.SpecEncrypt; +import com.google.gson.Gson; +import com.google.gson.annotations.SerializedName; import com.thoughtworks.xstream.annotations.XStreamAlias; import lombok.*; import me.chanjar.weixin.common.annotation.Required; +import java.io.Serializable; import java.util.Map; /** @@ -21,7 +25,6 @@ import java.util.Map; @XStreamAlias("xml") public class ProfitSharingRequest extends BaseWxPayRequest { private static final long serialVersionUID = 212049937430575842L; - /** *
    * 字段名:微信订单号.
@@ -35,7 +38,6 @@ public class ProfitSharingRequest extends BaseWxPayRequest {
   @XStreamAlias("transaction_id")
   @Required
   private String transactionId;
-
   /**
    * 
    * 字段名:商户分账单号.
@@ -49,7 +51,6 @@ public class ProfitSharingRequest extends BaseWxPayRequest {
   @XStreamAlias("out_order_no")
   @Required
   private String outOrderNo;
-
   /**
    * 
    * 字段名:分账接收方列表.
@@ -77,7 +78,6 @@ public class ProfitSharingRequest extends BaseWxPayRequest {
   @Required
   private String receivers;
 
-
   @Override
   protected void checkConstraints() throws WxPayException {
     // 目前仅支持HMAC-SHA256.
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnQueryRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnQueryRequest.java
similarity index 97%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnQueryRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnQueryRequest.java
index d3c781602..8e6be32a2 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnQueryRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnQueryRequest.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnRequest.java
similarity index 98%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnRequest.java
index 3e389a467..b2a1d9aae 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnRequest.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReturnRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnV3Request.java
similarity index 94%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReturnRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnV3Request.java
index 6cbeed241..6f4fd9026 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReturnRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingReturnV3Request.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing.v3;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.AllArgsConstructor;
@@ -19,7 +19,7 @@ import java.io.Serializable;
 @Builder(builderMethodName = "newBuilder")
 @NoArgsConstructor
 @AllArgsConstructor
-public class ProfitSharingReturnRequest implements Serializable {
+public class ProfitSharingReturnV3Request implements Serializable {
   private static final long serialVersionUID = -2175582517588397426L;
 
   /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingFinishRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingUnfreezeRequest.java
similarity index 92%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingFinishRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingUnfreezeRequest.java
index 3bff328b8..5644ae475 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingFinishRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingUnfreezeRequest.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.github.binarywang.wxpay.bean.request.BaseWxPayRequest;
 import com.github.binarywang.wxpay.constant.WxPayConstants;
@@ -9,6 +9,7 @@ import me.chanjar.weixin.common.annotation.Required;
 import java.util.Map;
 
 /**
+ * 解冻剩余资金API请求实体
  * @author Wang GuangXin 2019/10/23 14:02
  * @version 1.0
  */
@@ -18,7 +19,7 @@ import java.util.Map;
 @NoArgsConstructor
 @AllArgsConstructor
 @XStreamAlias("xml")
-public class ProfitSharingFinishRequest extends BaseWxPayRequest {
+public class ProfitSharingUnfreezeRequest extends BaseWxPayRequest {
 
   private static final long serialVersionUID = -4265779954583596627L;
 
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnfreezeRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingUnfreezeV3Request.java
similarity index 91%
rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnfreezeRequest.java
rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingUnfreezeV3Request.java
index 946919c22..3ecc513c1 100644
--- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnfreezeRequest.java
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingUnfreezeV3Request.java
@@ -1,4 +1,4 @@
-package com.github.binarywang.wxpay.bean.profitsharing.v3;
+package com.github.binarywang.wxpay.bean.profitsharing.request;
 
 import com.google.gson.annotations.SerializedName;
 import lombok.AllArgsConstructor;
@@ -19,7 +19,7 @@ import java.io.Serializable;
 @Builder(builderMethodName = "newBuilder")
 @NoArgsConstructor
 @AllArgsConstructor
-public class ProfitSharingUnfreezeRequest implements Serializable {
+public class ProfitSharingUnfreezeV3Request implements Serializable {
   private static final long serialVersionUID = 6835471990040104843L;
 
   /**
diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingV3Request.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingV3Request.java
new file mode 100644
index 000000000..e007ad15a
--- /dev/null
+++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/request/ProfitSharingV3Request.java
@@ -0,0 +1,186 @@
+package com.github.binarywang.wxpay.bean.profitsharing.request;
+
+import com.github.binarywang.wxpay.v3.SpecEncrypt;
+import com.google.gson.annotations.SerializedName;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * 微信V3接口
+ * 请求分账API请求实体
+ *
+ * @author pg
+ * created on  2021-6-24
+ */
+@Data
+@Builder(builderMethodName = "newBuilder")
+@NoArgsConstructor
+@AllArgsConstructor
+public class ProfitSharingV3Request implements Serializable {
+  private static final long serialVersionUID = 3644929701624280800L;
+
+  /**
+   * 
+   * 字段名:子商户号
+   * 是否必填:是
+   * 描述:微信支付分配的子商户号,即分账的出资商户号。
+   * 
+ */ + @SerializedName("sub_mchid") + private String subMchId; + + /** + *
+   * 字段名:应用ID
+   * 是否必填:是
+   * 描述:微信分配的商户appid
+   * 
+ */ + @SerializedName("appid") + private String appid; + + /** + *
+   * 字段名:子商户应用ID
+   * 是否必填:否
+   * 描述:子商户的公众账号ID,分账接收方类型包含PERSONAL_SUB_OPENID时必填
+   * 
+ */ + @SerializedName("sub_appid") + private String subAppid; + + /** + *
+   * 字段名:微信订单号
+   * 是否必填:是
+   * 描述:微信支付订单号
+   * 
+ */ + @SerializedName("transaction_id") + private String transactionId; + + /** + *
+   * 字段名:商户分账单号
+   * 是否必填:是
+   * 描述:商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@
+   * 
+ */ + @SerializedName("out_order_no") + private String outOrderNo; + + /** + *
+   * 字段名:分账接收方列表
+   * 是否必填:是
+   * 描述:分账接收方列表,可以设置出资商户作为分账接受方,最多可有50个分账接收方
+   * 
+ */ + @SpecEncrypt + @SerializedName("receivers") + private List receivers; + + /** + *
+   * 字段名:是否解冻剩余未分资金
+   * 是否必填:是
+   * 描述:
+   * 1、如果为true,该笔订单剩余未分账的金额会解冻回分账方商户;
+   * 2、如果为false,该笔订单剩余未分账的金额不会解冻回分账方商户,可以对该笔订单再次进行分账。
+   * 
+ */ + @SerializedName("unfreeze_unsplit") + private boolean unfreezeUnsplit; + /** + * 分账接收方实体 + */ + @Data + @NoArgsConstructor + public static class Receiver implements Serializable { + private static final long serialVersionUID = 1L; + /** + *
+     * 字段名:分账接收方类型
+     * 是否必填:是
+     * 描述:
+     * 1、MERCHANT_ID:商户号
+     * 2、PERSONAL_OPENID:个人openid(由父商户APPID转换得到)
+     * 
+ */ + @SerializedName("type") + private String type; + + /** + *
+     * 字段名:分账接收方帐号
+     * 是否必填:是
+     * 描述:
+     * 1、分账接收方类型为MERCHANT_ID时,分账接收方账号为商户号
+     * 2、分账接收方类型为PERSONAL_OPENID时,分账接收方账号为个人openid
+     * 
+ */ + @SerializedName("account") + private String account; + + /** + *
+     * 字段名:分账个人接收方姓名
+     * 是否必填:否
+     * 描述:
+     * 可选项,在接收方类型为个人的时可选填,若有值,会检查与 name 是否实名匹配,不匹配会拒绝分账请求
+     * 1、分账接收方类型是PERSONAL_OPENID,是个人姓名的密文(选传,传则校验) 此字段的加密方法详见:敏感信息加密说明
+     * 2、使用微信支付平台证书中的公钥
+     * 3、使用RSAES-OAEP算法进行加密
+     * 4、将请求中HTTP头部的Wechatpay-Serial设置为证书序列号
+     * 
+ */ + @SerializedName("name") + @SpecEncrypt + private String name; + + /** + *
+     * 字段名:与分账方的关系类型
+     * 是否必填:是
+     * 描述:子商户与接收方的关系。 本字段值为枚举:
+     * STORE:门店
+     * STAFF:员工
+     * STORE_OWNER:店主
+     * PARTNER:合作伙伴
+     * HEADQUARTER:总部
+     * BRAND:品牌方
+     * DISTRIBUTOR:分销商
+     * USER:用户
+     * SUPPLIER: 供应商
+     * CUSTOM:自定义
+     * 
+ */ + @SerializedName("relation_type") + private String relationType; + + /** + *
+     * 字段名:自定义的分账关系
+     * 是否必填:是
+     * 描述:子商户与接收方具体的关系,本字段最多10个字。
+     * 当字段relationType的值为CUSTOM时,本字段必填;
+     * 当字段relationType的值不为CUSTOM时,本字段无需填写。
+     * 
+ */ + @SerializedName("custom_relation") + private String customRelation; + /** + *
+     * 字段名:分账描述
+     * 是否必填:是
+     * 描述: 分账的原因描述,分账账单中需要体现
+     * 
+ */ + private String description; + } +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingBillResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingBillV3Result.java similarity index 91% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingBillResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingBillV3Result.java index d9d9ca824..cc2ddd009 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingBillResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingBillV3Result.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; +package com.github.binarywang.wxpay.bean.profitsharing.result; import java.io.Serializable; @@ -15,7 +15,7 @@ import lombok.NoArgsConstructor; */ @Data @NoArgsConstructor -public class ProfitSharingBillResult implements Serializable { +public class ProfitSharingBillV3Result implements Serializable { private static final long serialVersionUID = -704896948531566657L; /** diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingMerchantRatioQueryResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingMerchantRatioQueryResult.java similarity index 93% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingMerchantRatioQueryResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingMerchantRatioQueryResult.java index fa0c4c3fb..3630014ff 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingMerchantRatioQueryResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingMerchantRatioQueryResult.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingMerchantMaxRatioQueryResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingMerchantRatioQueryV3Result.java similarity index 80% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingMerchantMaxRatioQueryResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingMerchantRatioQueryV3Result.java index 8772d3cd1..28c078e34 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingMerchantMaxRatioQueryResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingMerchantRatioQueryV3Result.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; +package com.github.binarywang.wxpay.bean.profitsharing.result; import java.io.Serializable; @@ -13,7 +13,7 @@ import lombok.Data; * @date 2022-12-09 */ @Data -public class ProfitSharingMerchantMaxRatioQueryResult implements Serializable { +public class ProfitSharingMerchantRatioQueryV3Result implements Serializable { private static final long serialVersionUID = -6259241881199571683L; /** 子商户号 */ diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingOrderAmountQueryResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingOrderAmountQueryResult.java similarity index 93% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingOrderAmountQueryResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingOrderAmountQueryResult.java index b877cce97..4b79064b6 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingOrderAmountQueryResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingOrderAmountQueryResult.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnsplitResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingOrderAmountQueryV3Result.java similarity index 83% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnsplitResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingOrderAmountQueryV3Result.java index 49474bd14..58e11b1bf 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnsplitResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingOrderAmountQueryV3Result.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.google.gson.annotations.SerializedName; import lombok.Data; @@ -13,7 +13,7 @@ import java.io.Serializable; * created on 2021-6-25 */ @Data -public class ProfitSharingUnsplitResult implements Serializable { +public class ProfitSharingOrderAmountQueryV3Result implements Serializable { private static final long serialVersionUID = -7025255772409082288L; /** diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingQueryResult.java similarity index 98% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingQueryResult.java index 09e83d9d9..437a82e18 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingQueryResult.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.google.gson.FieldNamingPolicy; diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReceiverResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReceiverResult.java similarity index 92% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReceiverResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReceiverResult.java index bcd7ac1e0..6047d4246 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReceiverResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReceiverResult.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReceiverV3Result.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReceiverV3Result.java new file mode 100644 index 000000000..996bb5e78 --- /dev/null +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReceiverV3Result.java @@ -0,0 +1,102 @@ +package com.github.binarywang.wxpay.bean.profitsharing.result; + +import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; +import com.github.binarywang.wxpay.v3.SpecEncrypt; +import com.google.gson.annotations.SerializedName; +import com.thoughtworks.xstream.annotations.XStreamAlias; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import org.w3c.dom.Document; + +import java.io.Serializable; + +/** + * @author 添加/删除分账接收方结果 + * @version 1.0 + */ +@Data +public class ProfitSharingReceiverV3Result implements Serializable { + private static final long serialVersionUID = 876204163877798066L; + /** + *
+   * 字段名:子商户号
+   * 是否必填:是
+   * 描述:微信支付分配的子商户号,即分账的出资商户号。
+   * 
+ */ + @SerializedName("sub_mchid") + private String subMchId; + + /** + *
+   * 字段名:分账接收方类型
+   * 是否必填:是
+   * 描述:
+   * 1、MERCHANT_ID:商户号
+   * 2、PERSONAL_OPENID:个人openid(由父商户APPID转换得到)
+   * 
+ */ + @SerializedName("type") + private String type; + + /** + *
+   * 字段名:分账接收方帐号
+   * 是否必填:是
+   * 描述:
+   * 1、分账接收方类型为MERCHANT_ID时,分账接收方账号为商户号
+   * 2、分账接收方类型为PERSONAL_OPENID时,分账接收方账号为个人openid
+   * 
+ */ + @SerializedName("account") + private String account; + + /** + *
+   * 字段名:分账个人接收方姓名
+   * 是否必填:否
+   * 描述:
+   * 可选项,在接收方类型为个人的时可选填,若有值,会检查与 name 是否实名匹配,不匹配会拒绝分账请求
+   * 1、分账接收方类型是PERSONAL_OPENID,是个人姓名的密文(选传,传则校验) 此字段的加密方法详见:敏感信息加密说明
+   * 2、使用微信支付平台证书中的公钥
+   * 3、使用RSAES-OAEP算法进行加密
+   * 4、将请求中HTTP头部的Wechatpay-Serial设置为证书序列号
+   * 
+ */ + @SerializedName("name") + @SpecEncrypt + private String name; + + /** + *
+   * 字段名:与分账方的关系类型
+   * 是否必填:是
+   * 描述:子商户与接收方的关系。 本字段值为枚举:
+   * STORE:门店
+   * STAFF:员工
+   * STORE_OWNER:店主
+   * PARTNER:合作伙伴
+   * HEADQUARTER:总部
+   * BRAND:品牌方
+   * DISTRIBUTOR:分销商
+   * USER:用户
+   * SUPPLIER: 供应商
+   * CUSTOM:自定义
+   * 
+ */ + @SerializedName("relation_type") + private String relationType; + + /** + *
+   * 字段名:自定义的分账关系
+   * 是否必填:是
+   * 描述:子商户与接收方具体的关系,本字段最多10个字。
+   * 当字段relationType的值为CUSTOM时,本字段必填;
+   * 当字段relationType的值不为CUSTOM时,本字段无需填写。
+   * 
+ */ + @SerializedName("custom_relation") + private String customRelation; +} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingResult.java similarity index 98% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingResult.java index 3b5107276..e9ace7092 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingResult.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.google.gson.Gson; diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReturnResult.java similarity index 97% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReturnResult.java index 7af95570c..c366c3ca5 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingReturnResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReturnResult.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.thoughtworks.xstream.annotations.XStreamAlias; diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReturnResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReturnV3Result.java similarity index 97% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReturnResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReturnV3Result.java index d862454ab..de6b633b5 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingReturnResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingReturnV3Result.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.google.gson.annotations.SerializedName; import lombok.Data; @@ -13,7 +13,7 @@ import java.io.Serializable; * created on 2021-6-25 */ @Data -public class ProfitSharingReturnResult implements Serializable { +public class ProfitSharingReturnV3Result implements Serializable { private static final long serialVersionUID = -2175582517588397426L; /** diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnfreezeResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingUnfreezeV3Result.java similarity index 97% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnfreezeResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingUnfreezeV3Result.java index 2e3fdc761..a30017ade 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingUnfreezeResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingUnfreezeV3Result.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.google.gson.annotations.SerializedName; import lombok.Data; @@ -14,7 +14,7 @@ import java.util.List; * created on 2021-6-25 */ @Data -public class ProfitSharingUnfreezeResult implements Serializable { +public class ProfitSharingUnfreezeV3Result implements Serializable { private static final long serialVersionUID = 5053171678880645337L; /** diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingV3Result.java similarity index 97% rename from weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingResult.java rename to weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingV3Result.java index 6fd84afdd..1038f4d64 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingResult.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/result/ProfitSharingV3Result.java @@ -1,4 +1,4 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; +package com.github.binarywang.wxpay.bean.profitsharing.result; import com.google.gson.annotations.SerializedName; @@ -15,7 +15,7 @@ import java.util.List; * created on 2021-6-24 */ @Data -public class ProfitSharingResult implements Serializable { +public class ProfitSharingV3Result implements Serializable { private static final long serialVersionUID = -6201692412535987502L; /** diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingNotifyResult.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingNotifyResult.java deleted file mode 100644 index 238561a7a..000000000 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingNotifyResult.java +++ /dev/null @@ -1,128 +0,0 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; - -import com.google.gson.annotations.SerializedName; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * - * 微信V3接口 - * 分账动账通知解密后数据实体 - * - * @author yuanbo - * @since 2022-04-26-21:08 PM - */ -@Data -@NoArgsConstructor -public class ProfitSharingNotifyResult implements Serializable { - private static final long serialVersionUID = -2875006651351414624L; - - /** - *
-   * 字段名:直连商户号
-   * 是否必填:是
-   * 描述:直连模式分账发起和出资商户
-   * 
- */ - @SerializedName("mchid") - private String mchId; - - /** - *
-   * 字段名:微信订单号
-   * 是否必填:是
-   * 描述:微信支付订单号
-   * 
- */ - @SerializedName("transaction_id") - private String transactionId; - - /** - *
-   * 字段名:微信分账/回退单号
-   * 是否必填:是
-   * 描述:微信分账/回退单号
-   * 
- */ - @SerializedName("order_id") - private String orderId; - - /** - *
-   * 字段名:商户分账/回退单号
-   * 是否必填:是
-   * 描述:分账方系统内部的分账/回退单号
-   * 
- */ - @SerializedName("out_order_no") - private String outOrderNo; - - /** - *
-   * 字段名:分账接收方
-   * 是否必填:是
-   * 描述:分账接收方对象
-   * 
- */ - @SerializedName("receiver") - private Receiver receiver; - - /** - *
-   * 字段名:成功时间
-   * 是否必填:是
-   * 描述:成功时间,Rfc3339标准
-   * 
- */ - @SerializedName("success_time") - private String successTime; - - @Data - @NoArgsConstructor - public static class Receiver implements Serializable { - - private static final long serialVersionUID = -931070141604645363L; - - /** - *
-     * 字段名:分账接收方类型
-     * 是否必填:是
-     * 描述:MERCHANT_ID:商户号(mch_id或者sub_mch_id)
-     * 
- */ - @SerializedName("type") - private String type; - - /** - *
-     * 字段名:分账接收方账号
-     * 是否必填:是
-     * 描述:申请本功能商户号
-     * 
- */ - @SerializedName("account") - private String account; - - /** - *
-     * 字段名:分账动账金额
-     * 是否必填:是
-     * 描述:分账动账金额,单位为分,只能为整数
-     * 
- */ - @SerializedName("amount") - private Integer amount; - - /** - *
-     * 字段名:分账/回退描述
-     * 是否必填:是
-     * 描述:分账/回退描述
-     * 
- */ - @SerializedName("description") - private String description; - } -} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingRequest.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingRequest.java deleted file mode 100644 index 44e72dec2..000000000 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/bean/profitsharing/v3/ProfitSharingRequest.java +++ /dev/null @@ -1,99 +0,0 @@ -package com.github.binarywang.wxpay.bean.profitsharing.v3; - -import com.github.binarywang.wxpay.v3.SpecEncrypt; -import com.google.gson.annotations.SerializedName; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; -import java.util.List; - -/** - * 微信V3接口 - * 请求分账API请求实体 - * - * @author pg - * created on 2021-6-24 - */ -@Data -@Builder(builderMethodName = "newBuilder") -@NoArgsConstructor -@AllArgsConstructor -public class ProfitSharingRequest implements Serializable { - private static final long serialVersionUID = 3644929701624280800L; - - /** - *
-   * 字段名:子商户号
-   * 是否必填:是
-   * 描述:微信支付分配的子商户号,即分账的出资商户号。
-   * 
- */ - @SerializedName("sub_mchid") - private String subMchId; - - /** - *
-   * 字段名:应用ID
-   * 是否必填:是
-   * 描述:微信分配的商户appid
-   * 
- */ - @SerializedName("appid") - private String appid; - - /** - *
-   * 字段名:子商户应用ID
-   * 是否必填:否
-   * 描述:子商户的公众账号ID,分账接收方类型包含PERSONAL_SUB_OPENID时必填
-   * 
- */ - @SerializedName("sub_appid") - private String subAppid; - - /** - *
-   * 字段名:微信订单号
-   * 是否必填:是
-   * 描述:微信支付订单号
-   * 
- */ - @SerializedName("transaction_id") - private String transactionId; - - /** - *
-   * 字段名:商户分账单号
-   * 是否必填:是
-   * 描述:商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@
-   * 
- */ - @SerializedName("out_order_no") - private String outOrderNo; - - /** - *
-   * 字段名:分账接收方列表
-   * 是否必填:是
-   * 描述:分账接收方列表,可以设置出资商户作为分账接受方,最多可有50个分账接收方
-   * 
- */ - @SpecEncrypt - @SerializedName("receivers") - private List receivers; - - /** - *
-   * 字段名:是否解冻剩余未分资金
-   * 是否必填:是
-   * 描述:
-   * 1、如果为true,该笔订单剩余未分账的金额会解冻回分账方商户;
-   * 2、如果为false,该笔订单剩余未分账的金额不会解冻回分账方商户,可以对该笔订单再次进行分账。
-   * 
- */ - @SerializedName("unfreeze_unsplit") - private boolean unfreezeUnsplit; -} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/ProfitSharingService.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/ProfitSharingService.java index df21cfdab..64e887282 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/ProfitSharingService.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/ProfitSharingService.java @@ -1,6 +1,10 @@ package com.github.binarywang.wxpay.service; -import com.github.binarywang.wxpay.bean.profitsharing.*; +import com.github.binarywang.wxpay.bean.notify.SignatureHeader; +import com.github.binarywang.wxpay.bean.profitsharing.notify.ProfitSharingNotifyV3Response; +import com.github.binarywang.wxpay.bean.profitsharing.notify.ProfitSharingNotifyV3Result; +import com.github.binarywang.wxpay.bean.profitsharing.request.*; +import com.github.binarywang.wxpay.bean.profitsharing.result.*; import com.github.binarywang.wxpay.exception.WxPayException; /** @@ -41,6 +45,26 @@ public interface ProfitSharingService { */ ProfitSharingResult multiProfitSharing(ProfitSharingRequest request) throws WxPayException; + /** + *
+   * 请求分账API
+   *
+   * 微信订单支付成功后,商户发起分账请求,将结算后的资金分到分账接收方
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_1.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/orders
+   *
+   * 注意:
+   * 对同一笔订单最多能发起20次分账请求,每次请求最多分给50个接收方
+   * 此接口采用异步处理模式,即在接收到商户请求后,优先受理请求再异步处理,最终的分账结果可以通过查询分账接口获取
+   * 
+ * + * @param request {@link ProfitSharingV3Request} 针对某一笔支付订单的分账方法 + * @return {@link ProfitSharingV3Result} 微信返回的分账结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingV3Result profitSharingV3(ProfitSharingV3Request request) throws WxPayException; + /** *
    * 1、不需要进行分账的订单,可直接调用本接口将订单的金额全部解冻给特约商户
@@ -55,7 +79,7 @@ public interface ProfitSharingService {
    * @return .
    * @throws WxPayException the wx pay exception
    */
-  ProfitSharingResult profitSharingFinish(ProfitSharingFinishRequest request) throws WxPayException;
+  ProfitSharingResult profitSharingFinish(ProfitSharingUnfreezeRequest request) throws WxPayException;
 
   /**
    * 
@@ -83,6 +107,38 @@ public interface ProfitSharingService {
    */
   ProfitSharingReceiverResult removeReceiver(ProfitSharingReceiverRequest request) throws WxPayException;
 
+  /**
+   * 
+   * 添加分账接收方API
+   *
+   * 商户发起添加分账接收方请求,建立分账接收方列表。后续可通过发起分账请求,将分账方商户结算后的资金,分到该分账接收方
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_8.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/receivers/add
+   * 
+ * + * @param request 分账接收方实体 {@link ProfitSharingReceiverV3Request} + * @return {@link ProfitSharingReceiverV3Result} 微信返回的分账接收方结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingReceiverV3Result addReceiverV3(ProfitSharingReceiverV3Request request) throws WxPayException; + + /** + *
+   * 删除分账接收方API
+   *
+   * 商户发起删除分账接收方请求。删除后,不支持将分账方商户结算后的资金,分到该分账接收方
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_9.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/receivers/delete
+   * 
+ * + * @param request 分账接收方实体 {@link ProfitSharingReceiverV3Request} + * @return {@link ProfitSharingReceiverV3Result} 微信返回的删除的分账接收方结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingReceiverV3Result removeReceiverV3(ProfitSharingReceiverV3Request request) throws WxPayException; + /** * TODO:微信返回签名失败 *
@@ -96,6 +152,66 @@ public interface ProfitSharingService {
    */
   ProfitSharingQueryResult profitSharingQuery(ProfitSharingQueryRequest request) throws WxPayException;
 
+  /**
+   * 
+   * 查询分账结果API(商户平台)
+   *
+   * 发起分账请求后,可调用此接口查询分账结果
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_2.shtml
+   * 接口链接:https://api.mch.weixin.qq.com/v3/profitsharing/orders/{out_order_no}
+   *
+   * 注意:
+   * • 发起解冻剩余资金请求后,可调用此接口查询解冻剩余资金的结果
+   * 
+ * + * @param outOrderNo 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ 。 + * @param transactionId 微信支付订单号 + * @return {@link ProfitSharingV3Result} 微信返回的分账结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingV3Result profitSharingQueryV3(String outOrderNo, String transactionId) throws WxPayException; + + /** + *
+   * 查询分账结果API(服务商平台)
+   *
+   * 发起分账请求后,可调用此接口查询分账结果
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_2.shtml
+   * 接口链接:https://api.mch.weixin.qq.com/v3/profitsharing/orders/{out_order_no}
+   *
+   * 注意:
+   * • 发起解冻剩余资金请求后,可调用此接口查询解冻剩余资金的结果
+   * 
+ * + * @param outOrderNo 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ 。 + * @param transactionId 微信支付订单号 + * @param subMchId 微信支付分配的子商户号,即分账的出资商户号。 + * @return {@link ProfitSharingV3Result} 微信返回的分账结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingV3Result profitSharingQueryV3(String outOrderNo, String transactionId, String subMchId) throws WxPayException; + + /** + *
+   * 请求分账查询API
+   *
+   * 发起分账请求后,可调用此接口查询分账结果
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_2.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/orders/{out_order_no}
+   *
+   * 注意:
+   * 发起解冻剩余资金请求后,可调用此接口查询解冻剩余资金的结果
+   * 
+ * + * @param request {@link ProfitSharingQueryV3Request} 针对某一笔分账订单的分账方法 + * @return {@link ProfitSharingV3Result} 微信返回的分账查询结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingV3Result profitSharingQueryV3(ProfitSharingQueryV3Request request) throws WxPayException; + /** *
    * 服务商可通过调用此接口查询订单剩余待分金额。
@@ -110,6 +226,22 @@ public interface ProfitSharingService {
    */
   ProfitSharingOrderAmountQueryResult profitSharingOrderAmountQuery(ProfitSharingOrderAmountQueryRequest request) throws WxPayException;
 
+  /**
+   * 
+   * 查询剩余待分金额API
+   *
+   * 可调用此接口查询订单剩余待分金额
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_6.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/transactions/{transaction_id}/amounts
+   * 
+ * + * @param transactionId 微信订单号,微信支付订单号 + * @return {@link ProfitSharingOrderAmountQueryV3Result} 微信返回的订单剩余待分金额结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingOrderAmountQueryV3Result profitSharingUnsplitAmountQueryV3(String transactionId) throws WxPayException; + /** *
    * 服务商可以查询子商户设置的允许服务商分账的最大比例。
@@ -124,6 +256,24 @@ public interface ProfitSharingService {
    */
   ProfitSharingMerchantRatioQueryResult profitSharingMerchantRatioQuery(ProfitSharingMerchantRatioQueryRequest request) throws WxPayException;
 
+  /**
+   * 
+   * 查询最大分账比例
+   *
+   * 可调用此接口查询特约商户设置的允许服务商分账的最大比例
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_7.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/merchant-configs/{sub_mchid}
+   * 
+ * + * @param subMchId 子商户号(微信支付分配的子商户号,即分账的出资商户号) + * @return {@link ProfitSharingMerchantRatioQueryV3Result} 特约商户设置的允许服务商分账的最大比例结果 + * @throws WxPayException the wx pay exception + * @see 服务商平台>>API字典>>资金应用>>分账>>查询最大分账比例 + * @since 4.4.0 + * @date 2022-12-09 + */ + ProfitSharingMerchantRatioQueryV3Result profitSharingMerchantRatioQueryV3(String subMchId) throws WxPayException; + /** * TODO:这个接口用真实的数据返回【参数不正确】,我对比官方文档除了缺少sub_mch_id,和sub_appid之外其他相同,当我随便填了一个商户id的时候,提示【回退方没有开通分账回退功能】 *
@@ -142,6 +292,29 @@ public interface ProfitSharingService {
    */
   ProfitSharingReturnResult profitSharingReturn(ProfitSharingReturnRequest returnRequest) throws WxPayException;
 
+  /**
+   * 
+   * 请求分账回退API
+   *
+   * 如果订单已经分账,在退款时,可以先调此接口,将已分账的资金从分账接收方的账户回退给分账方,再发起退款
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_3.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/return-orders
+   *
+   * 注意:
+   * • 分账回退以原分账单为依据,支持多次回退,申请回退总金额不能超过原分账单分给该接收方的金额
+   * • 此接口采用同步处理模式,即在接收到商户请求后,会实时返回处理结果
+   * • 对同一笔分账单最多能发起20次分账回退请求
+   * • 退款和分账回退没有耦合,分账回退可以先于退款请求,也可以后于退款请求
+   * • 此功能需要接收方在商户平台-交易中心-分账-分账接收设置下,开启同意分账回退后,才能使用
+   * 
+ * + * @param request {@link ProfitSharingReturnV3Request} 针对某一笔支付订单的分账方法 + * @return {@link ProfitSharingReturnV3Result} 微信返回的分账回退结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingReturnV3Result profitSharingReturnV3(ProfitSharingReturnV3Request request) throws WxPayException; + /** * TODO:因profitsharingReturn接口无法使用,没有办法对这里进行真实的测试,模拟数据这里返回【记录不存在】 *
@@ -156,7 +329,101 @@ public interface ProfitSharingService {
    * @return .
    * @throws WxPayException .
    */
-  ProfitSharingReturnResult profitSharingReturnQuery(ProfitSharingReturnQueryRequest queryRequest)
-    throws WxPayException;
+  ProfitSharingReturnResult profitSharingReturnQuery(ProfitSharingReturnQueryRequest queryRequest) throws WxPayException;
 
+  /**
+   * 
+   * 查询分账回退结果API(商户平台)
+   *
+   * 商户需要核实回退结果,可调用此接口查询回退结果
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_4.shtml
+   * 接口链接:https://api.mch.weixin.qq.com/v3/profitsharing/return-orders/{out_return_no}
+   *
+   * 注意:
+   * • 如果分账回退接口返回状态为处理中,可调用此接口查询回退结果
+   * 
+ * + * @param outOrderNo 原发起分账请求时使用的商户系统内部的分账单号 + * @param outReturnNo 调用回退接口提供的商户系统内部的回退单号 + * @return {@link ProfitSharingReturnV3Result} 微信返回的分账回退结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingReturnV3Result profitSharingReturnQueryV3(String outOrderNo, String outReturnNo) throws WxPayException; + + /** + *
+   * 查询分账回退结果API(服务商平台)
+   *
+   * 商户需要核实回退结果,可调用此接口查询回退结果
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_3.shtml
+   * 接口链接:https://api.mch.weixin.qq.com/v3/profitsharing/return-orders/{out_return_no}
+   *
+   * 注意:
+   * • 如果分账回退接口返回状态为处理中,可调用此接口查询回退结果
+   * 
+ * + * @param outOrderNo 原发起分账请求时使用的商户系统内部的分账单号 + * @param outReturnNo 调用回退接口提供的商户系统内部的回退单号 + * @param subMchId 微信支付分配的子商户号,即分账的回退方商户号。 + * @return {@link ProfitSharingReturnV3Result} 微信返回的分账回退结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingReturnV3Result profitSharingReturnQueryV3(String outOrderNo, String outReturnNo, String subMchId) throws WxPayException; + + /** + *
+   * 解冻剩余资金API
+   *
+   * 不需要进行分账的订单,可直接调用本接口将订单的金额全部解冻给特约商户
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_5.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/orders/unfreeze
+   *
+   * 注意:
+   * • 调用分账接口后,需要解冻剩余资金时,调用本接口将剩余的分账金额全部解冻给特约商户
+   * • 此接口采用异步处理模式,即在接收到商户请求后,优先受理请求再异步处理,最终的分账结果可以通过查询分账接口获取
+   * 
+ * + * @param request 解冻剩余资金请求实体 {@link ProfitSharingUnfreezeV3Request} + * @return {@link ProfitSharingReturnV3Result} 微信返回的解冻剩余资金结果 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingUnfreezeV3Result profitSharingUnfreeze(ProfitSharingUnfreezeV3Request request) throws WxPayException; + + /** + *
+   * 分账动账通知
+   *
+   * 分账或分账回退成功后,微信会把相关变动结果发送给分账接收方(只支持商户)。
+   * 对后台通知交互时,如果微信收到应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_10.shtml
+   * 
+ * + * @param notifyData 分账通知实体 + * @param header 分账通知头 {@link SignatureHeader} + * @return {@link ProfitSharingNotifyV3Response} 资源对象 + * @throws WxPayException the wx pay exception + * @see 微信文档 + */ + ProfitSharingNotifyV3Result parseProfitSharingNotifyResult(String notifyData, SignatureHeader header) throws WxPayException; + + /** + *
+   * 申请分账账单
+   *
+   * 微信支付按天提供分账账单文件,商户可以通过该接口获取账单文件的下载地址
+   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_11.shtml
+   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/bills
+   * 
+ * + * @param request 申请分账账单请求实体({@link ProfitSharingBillV3Request}) + * @return {@link ProfitSharingBillV3Result} 申请分账账单结果类 + * @throws WxPayException the wx pay exception + * @see 服务商平台>>API字典>>资金应用>>分账>>申请分账账单API + * @since 4.4.0 + * @date 2022-12-09 + */ + ProfitSharingBillV3Result profitSharingBill(ProfitSharingBillV3Request request) throws WxPayException; } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/ProfitSharingV3Service.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/ProfitSharingV3Service.java deleted file mode 100644 index 27d66e4e7..000000000 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/ProfitSharingV3Service.java +++ /dev/null @@ -1,295 +0,0 @@ -package com.github.binarywang.wxpay.service; - -import com.github.binarywang.wxpay.bean.notify.SignatureHeader; -import com.github.binarywang.wxpay.bean.profitsharing.v3.*; -import com.github.binarywang.wxpay.exception.WxPayException; - -/** - * 微信支付V3-资金应用-分账 - * - * @author pg 2021-6-23 - * @date 2021-6-23 - */ -public interface ProfitSharingV3Service { - /** - *
-   * 查询最大分账比例
-   *
-   * 可调用此接口查询特约商户设置的允许服务商分账的最大比例
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_7.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/merchant-configs/{sub_mchid}
-   * 
- * - * @param subMchId 子商户号(微信支付分配的子商户号,即分账的出资商户号) - * @return {@link ProfitSharingMerchantMaxRatioQueryResult} 特约商户设置的允许服务商分账的最大比例结果 - * @throws WxPayException the wx pay exception - * @see 服务商平台>>API字典>>资金应用>>分账>>查询最大分账比例 - * @since 4.4.0 - * @date 2022-12-09 - */ - ProfitSharingMerchantMaxRatioQueryResult getProfitSharingMerchantMaxRatio(String subMchId) throws WxPayException; - - /** - *
-   * 请求分账API
-   *
-   * 微信订单支付成功后,商户发起分账请求,将结算后的资金分到分账接收方
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_1.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/orders
-   *
-   * 注意:
-   * 对同一笔订单最多能发起20次分账请求,每次请求最多分给50个接收方
-   * 此接口采用异步处理模式,即在接收到商户请求后,优先受理请求再异步处理,最终的分账结果可以通过查询分账接口获取
-   * 
- * - * @param request {@link ProfitSharingRequest} 针对某一笔支付订单的分账方法 - * @return {@link ProfitSharingResult} 微信返回的分账结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingResult profitSharing(ProfitSharingRequest request) throws WxPayException; - - /** - *
-   * 查询分账结果API(商户平台)
-   *
-   * 发起分账请求后,可调用此接口查询分账结果
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_2.shtml
-   * 接口链接:https://api.mch.weixin.qq.com/v3/profitsharing/orders/{out_order_no}
-   *
-   * 注意:
-   * • 发起解冻剩余资金请求后,可调用此接口查询解冻剩余资金的结果
-   * 
- * - * @param outOrderNo 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ 。 - * @param transactionId 微信支付订单号 - * @return {@link ProfitSharingResult} 微信返回的分账结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingResult getProfitSharingResult(String outOrderNo, String transactionId) throws WxPayException; - - /** - *
-   * 查询分账结果API(服务商平台)
-   *
-   * 发起分账请求后,可调用此接口查询分账结果
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_2.shtml
-   * 接口链接:https://api.mch.weixin.qq.com/v3/profitsharing/orders/{out_order_no}
-   *
-   * 注意:
-   * • 发起解冻剩余资金请求后,可调用此接口查询解冻剩余资金的结果
-   * 
- * - * @param outOrderNo 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。只能是数字、大小写字母_-|*@ 。 - * @param transactionId 微信支付订单号 - * @param subMchId 微信支付分配的子商户号,即分账的出资商户号。 - * @return {@link ProfitSharingResult} 微信返回的分账结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingResult getProfitSharingResult(String outOrderNo, String transactionId, String subMchId) throws WxPayException; - - /** - *
-   * 请求分账回退API
-   *
-   * 如果订单已经分账,在退款时,可以先调此接口,将已分账的资金从分账接收方的账户回退给分账方,再发起退款
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_3.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/return-orders
-   *
-   * 注意:
-   * • 分账回退以原分账单为依据,支持多次回退,申请回退总金额不能超过原分账单分给该接收方的金额
-   * • 此接口采用同步处理模式,即在接收到商户请求后,会实时返回处理结果
-   * • 对同一笔分账单最多能发起20次分账回退请求
-   * • 退款和分账回退没有耦合,分账回退可以先于退款请求,也可以后于退款请求
-   * • 此功能需要接收方在商户平台-交易中心-分账-分账接收设置下,开启同意分账回退后,才能使用
-   * 
- * - * @param request {@link ProfitSharingReturnRequest} 针对某一笔支付订单的分账方法 - * @return {@link ProfitSharingReturnResult} 微信返回的分账回退结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingReturnResult profitSharingReturn(ProfitSharingReturnRequest request) throws WxPayException; - - /** - *
-   * 查询分账回退结果API(商户平台)
-   *
-   * 商户需要核实回退结果,可调用此接口查询回退结果
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_4.shtml
-   * 接口链接:https://api.mch.weixin.qq.com/v3/profitsharing/return-orders/{out_return_no}
-   *
-   * 注意:
-   * • 如果分账回退接口返回状态为处理中,可调用此接口查询回退结果
-   * 
- * - * @param outOrderNo 原发起分账请求时使用的商户系统内部的分账单号 - * @param outReturnNo 调用回退接口提供的商户系统内部的回退单号 - * @return {@link ProfitSharingReturnResult} 微信返回的分账回退结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingReturnResult getProfitSharingReturnResult(String outOrderNo, String outReturnNo) throws WxPayException; - - /** - *
-   * 查询分账回退结果API(服务商平台)
-   *
-   * 商户需要核实回退结果,可调用此接口查询回退结果
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_3.shtml
-   * 接口链接:https://api.mch.weixin.qq.com/v3/profitsharing/return-orders/{out_return_no}
-   *
-   * 注意:
-   * • 如果分账回退接口返回状态为处理中,可调用此接口查询回退结果
-   * 
- * - * @param outOrderNo 原发起分账请求时使用的商户系统内部的分账单号 - * @param outReturnNo 调用回退接口提供的商户系统内部的回退单号 - * @param subMchId 微信支付分配的子商户号,即分账的回退方商户号。 - * @return {@link ProfitSharingReturnResult} 微信返回的分账回退结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingReturnResult getProfitSharingReturnResult(String outOrderNo, String outReturnNo, String subMchId) throws WxPayException; - - /** - *
-   * 解冻剩余资金API
-   *
-   * 不需要进行分账的订单,可直接调用本接口将订单的金额全部解冻给特约商户
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_5.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/orders/unfreeze
-   *
-   * 注意:
-   * • 调用分账接口后,需要解冻剩余资金时,调用本接口将剩余的分账金额全部解冻给特约商户
-   * • 此接口采用异步处理模式,即在接收到商户请求后,优先受理请求再异步处理,最终的分账结果可以通过查询分账接口获取
-   * 
- * - * @param request 解冻剩余资金请求实体 {@link ProfitSharingUnfreezeRequest} - * @return {@link ProfitSharingReturnResult} 微信返回的解冻剩余资金结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingUnfreezeResult profitSharingUnfreeze(ProfitSharingUnfreezeRequest request) throws WxPayException; - - /** - *
-   * 查询剩余待分金额API
-   *
-   * 可调用此接口查询订单剩余待分金额
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_6.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/transactions/{transaction_id}/amounts
-   * 
- * - * @param transactionId 微信订单号,微信支付订单号 - * @return {@link ProfitSharingUnsplitResult} 微信返回的订单剩余待分金额结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingUnsplitResult getProfitSharingUnsplitAmount(String transactionId) throws WxPayException; - - /** - *
-   * 添加分账接收方API
-   *
-   * 商户发起添加分账接收方请求,建立分账接收方列表。后续可通过发起分账请求,将分账方商户结算后的资金,分到该分账接收方
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_8.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/receivers/add
-   * 
- * - * @param receiver 分账接收方实体 {@link ProfitSharingReceiver} - * @return {@link ProfitSharingReceiver} 微信返回的分账接收方结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingReceiver addProfitSharingReceiver(ProfitSharingReceiver receiver) throws WxPayException; - - /** - *
-   * 删除分账接收方API
-   *
-   * 商户发起删除分账接收方请求。删除后,不支持将分账方商户结算后的资金,分到该分账接收方
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_9.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/receivers/delete
-   * 
- * - * @param receiver 分账接收方实体 {@link ProfitSharingReceiver} - * @return {@link ProfitSharingReceiver} 微信返回的删除的分账接收方结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingReceiver deleteProfitSharingReceiver(ProfitSharingReceiver receiver) throws WxPayException; - - - /** - *
-   * 分账动账通知
-   *
-   * 分账或分账回退成功后,微信会把相关变动结果发送给分账接收方(只支持商户)。
-   * 对后台通知交互时,如果微信收到应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_10.shtml
-   * 
- * - * @param notifyData 分账通知实体 - * @param header 分账通知头 {@link SignatureHeader} - * @return {@link ProfitSharingNotifyData} 资源对象 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingNotifyResult getProfitSharingNotifyResult(String notifyData, SignatureHeader header) throws WxPayException; - - /** - *
-   * 分账动账通知-服务商
-   *
-   * 分账或分账回退成功后,微信会把相关变动结果发送给分账接收方(只支持商户)。
-   * 对后台通知交互时,如果微信收到应答不是成功或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_10.shtml
-   * 
- * - * @param notifyData 分账通知实体 - * @param header 分账通知头 {@link SignatureHeader} - * @return {@link ProfitSharingNotifyData} 资源对象 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingPartnerNotifyResult getProfitSharingPartnerNotifyResult(String notifyData, SignatureHeader header) throws WxPayException; - - /** - *
-   * 申请分账账单
-   *
-   * 微信支付按天提供分账账单文件,商户可以通过该接口获取账单文件的下载地址
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3_partner/apis/chapter8_1_11.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/bills
-   * 
- * - * @param request 申请分账账单请求实体({@link ProfitSharingBillRequest}) - * @return {@link ProfitSharingBillResult} 申请分账账单结果类 - * @throws WxPayException the wx pay exception - * @see 服务商平台>>API字典>>资金应用>>分账>>申请分账账单API - * @since 4.4.0 - * @date 2022-12-09 - */ - ProfitSharingBillResult getProfitSharingBill(ProfitSharingBillRequest request) throws WxPayException; - /** - *
-   * 请求分账查询API
-   *
-   * 发起分账请求后,可调用此接口查询分账结果
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_2.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/orders/{out_order_no}
-   *
-   * 注意:
-   * 发起解冻剩余资金请求后,可调用此接口查询解冻剩余资金的结果
-   * 
- * - * @param request {@link ProfitSharingQueryRequest} 针对某一笔分账订单的分账方法 - * @return {@link ProfitSharingResult} 微信返回的分账查询结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - ProfitSharingResult profitSharingQuery(ProfitSharingQueryRequest request) throws WxPayException; -} diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java index 2bddaa975..75a992adb 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/WxPayService.java @@ -240,20 +240,13 @@ public interface WxPayService { /** * 获取分账服务类. *

- * V3接口 {@link WxPayService#getProfitSharingV3Service()} + * V3接口 {@link WxPayService#getProfitSharingService()} *

* * @return the ent pay service */ ProfitSharingService getProfitSharingService(); - /** - * 获取V3分账服务类. - * - * @return the ent pay service - */ - ProfitSharingV3Service getProfitSharingV3Service(); - /** * 获取支付分服务类. * diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java index 00046c871..b92f032aa 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/BaseWxPayServiceImpl.java @@ -74,9 +74,6 @@ public abstract class BaseWxPayServiceImpl implements WxPayService { @Getter private final ProfitSharingService profitSharingService = new ProfitSharingServiceImpl(this); - @Getter - private final ProfitSharingV3Service profitSharingV3Service = new ProfitSharingV3ServiceImpl(this); - @Getter private final RedpackService redpackService = new RedpackServiceImpl(this); diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImpl.java index 8d25a63d1..7f46a3f30 100644 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImpl.java +++ b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImpl.java @@ -1,10 +1,25 @@ package com.github.binarywang.wxpay.service.impl; -import com.github.binarywang.wxpay.bean.profitsharing.*; +import com.github.binarywang.wxpay.bean.notify.SignatureHeader; +import com.github.binarywang.wxpay.bean.profitsharing.notify.ProfitSharingNotifyV3Response; +import com.github.binarywang.wxpay.bean.profitsharing.notify.ProfitSharingNotifyV3Result; +import com.github.binarywang.wxpay.bean.profitsharing.request.*; +import com.github.binarywang.wxpay.bean.profitsharing.result.*; import com.github.binarywang.wxpay.bean.result.BaseWxPayResult; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.ProfitSharingService; import com.github.binarywang.wxpay.service.WxPayService; +import com.github.binarywang.wxpay.v3.auth.Verifier; +import com.github.binarywang.wxpay.v3.util.AesUtils; +import com.github.binarywang.wxpay.v3.util.RsaCryptoUtil; +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; +import org.apache.commons.lang3.StringUtils; + +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.security.GeneralSecurityException; +import java.util.Objects; /** * @author Wang GuangXin 2019/10/22 10:13 @@ -12,6 +27,7 @@ import com.github.binarywang.wxpay.service.WxPayService; */ public class ProfitSharingServiceImpl implements ProfitSharingService { private WxPayService payService; + private static final Gson GSON = new GsonBuilder().create(); public ProfitSharingServiceImpl(WxPayService payService) { this.payService = payService; @@ -40,7 +56,15 @@ public class ProfitSharingServiceImpl implements ProfitSharingService { } @Override - public ProfitSharingResult profitSharingFinish(ProfitSharingFinishRequest request) throws WxPayException { + public ProfitSharingV3Result profitSharingV3(ProfitSharingV3Request request) throws WxPayException { + String url = String.format("%s/v3/profitsharing/orders", this.payService.getPayBaseUrl()); + RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); + String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); + return GSON.fromJson(result, ProfitSharingV3Result.class); + } + + @Override + public ProfitSharingResult profitSharingFinish(ProfitSharingUnfreezeRequest request) throws WxPayException { request.checkAndSign(this.payService.getConfig()); String url = this.payService.getPayBaseUrl() + "/secapi/pay/profitsharingfinish"; @@ -72,6 +96,22 @@ public class ProfitSharingServiceImpl implements ProfitSharingService { return result; } + @Override + public ProfitSharingReceiverV3Result addReceiverV3(ProfitSharingReceiverV3Request request) throws WxPayException { + String url = String.format("%s/v3/profitsharing/receivers/add", this.payService.getPayBaseUrl()); + RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); + String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); + return GSON.fromJson(result, ProfitSharingReceiverV3Result.class); + } + + @Override + public ProfitSharingReceiverV3Result removeReceiverV3(ProfitSharingReceiverV3Request request) throws WxPayException { + String url = String.format("%s/v3/profitsharing/receivers/delete", this.payService.getPayBaseUrl()); + RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); + String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); + return GSON.fromJson(result, ProfitSharingReceiverV3Result.class); + } + @Override public ProfitSharingQueryResult profitSharingQuery(ProfitSharingQueryRequest request) throws WxPayException { request.setAppid(null); @@ -86,6 +126,34 @@ public class ProfitSharingServiceImpl implements ProfitSharingService { return result; } + @Override + public ProfitSharingV3Result profitSharingQueryV3(String outOrderNo, String transactionId) throws WxPayException { + String url = String.format("%s/v3/profitsharing/orders/%s?transaction_id=%s", this.payService.getPayBaseUrl(), + outOrderNo, transactionId); + String result = this.payService.getV3(url); + return GSON.fromJson(result, ProfitSharingV3Result.class); + } + + @Override + public ProfitSharingV3Result profitSharingQueryV3(String outOrderNo, String transactionId, String subMchId) + throws WxPayException { + String url = String.format("%s/v3/profitsharing/orders/%s?sub_mchid=%s&transaction_id=%s", + this.payService.getPayBaseUrl(), outOrderNo, subMchId, transactionId); + String result = this.payService.getV3(url); + return GSON.fromJson(result, ProfitSharingV3Result.class); + } + + @Override + public ProfitSharingV3Result profitSharingQueryV3(ProfitSharingQueryV3Request request) throws WxPayException { + String url = String.format("%s/v3/profitsharing/orders/%s?transaction_id=%s", this.payService.getPayBaseUrl(), + request.getOutOrderNo(), request.getOutOrderNo()); + if(StringUtils.isNotEmpty(request.getSubMchId())){ + url += "&sub_mchid=" + request.getSubMchId(); + } + String result = this.payService.getV3(url); + return GSON.fromJson(result, ProfitSharingV3Result.class); + } + @Override public ProfitSharingOrderAmountQueryResult profitSharingOrderAmountQuery(ProfitSharingOrderAmountQueryRequest request) throws WxPayException { request.checkAndSign(this.payService.getConfig()); @@ -97,6 +165,13 @@ public class ProfitSharingServiceImpl implements ProfitSharingService { return result; } + @Override + public ProfitSharingOrderAmountQueryV3Result profitSharingUnsplitAmountQueryV3(String transactionId) throws WxPayException { + String url = String.format("%s/v3/profitsharing/transactions/%s/amounts", this.payService.getPayBaseUrl(), transactionId); + String result = this.payService.getV3(url); + return GSON.fromJson(result, ProfitSharingOrderAmountQueryV3Result.class); + } + @Override public ProfitSharingMerchantRatioQueryResult profitSharingMerchantRatioQuery(ProfitSharingMerchantRatioQueryRequest request) throws WxPayException { request.checkAndSign(this.payService.getConfig()); @@ -108,6 +183,13 @@ public class ProfitSharingServiceImpl implements ProfitSharingService { return result; } + @Override + public ProfitSharingMerchantRatioQueryV3Result profitSharingMerchantRatioQueryV3(String subMchId) throws WxPayException { + String url = String.format("%s/v3/profitsharing/merchant-configs/%s", this.payService.getPayBaseUrl(), subMchId); + String result = this.payService.getV3(url); + return GSON.fromJson(result, ProfitSharingMerchantRatioQueryV3Result.class); + } + @Override public ProfitSharingReturnResult profitSharingReturn(ProfitSharingReturnRequest returnRequest) throws WxPayException { returnRequest.checkAndSign(this.payService.getConfig()); @@ -119,6 +201,14 @@ public class ProfitSharingServiceImpl implements ProfitSharingService { return result; } + @Override + public ProfitSharingReturnV3Result profitSharingReturnV3(ProfitSharingReturnV3Request request) throws WxPayException { + String url = String.format("%s/v3/profitsharing/return-orders", this.payService.getPayBaseUrl()); + RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); + String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); + return GSON.fromJson(result, ProfitSharingReturnV3Result.class); + } + @Override public ProfitSharingReturnResult profitSharingReturnQuery(ProfitSharingReturnQueryRequest queryRequest) throws WxPayException { queryRequest.checkAndSign(this.payService.getConfig()); @@ -129,4 +219,86 @@ public class ProfitSharingServiceImpl implements ProfitSharingService { result.checkResult(this.payService, queryRequest.getSignType(), true); return result; } + + @Override + public ProfitSharingReturnV3Result profitSharingReturnQueryV3(String outOrderNo, String outReturnNo) throws WxPayException { + String url = String.format("%s/v3/profitsharing/return-orders/%s?out_order_no=%s", this.payService.getPayBaseUrl(), + outReturnNo, outOrderNo); + String result = this.payService.getV3(url); + return GSON.fromJson(result, ProfitSharingReturnV3Result.class); + } + + @Override + public ProfitSharingReturnV3Result profitSharingReturnQueryV3(String outOrderNo, String outReturnNo, String subMchId) + throws WxPayException { + String url = String.format("%s/v3/profitsharing/return-orders/%s?sub_mchid=%s&out_order_no=%s", + this.payService.getPayBaseUrl(), outReturnNo, subMchId, outOrderNo); + String result = this.payService.getV3(url); + return GSON.fromJson(result, ProfitSharingReturnV3Result.class); + } + + @Override + public ProfitSharingUnfreezeV3Result profitSharingUnfreeze(ProfitSharingUnfreezeV3Request request) throws WxPayException { + String url = String.format("%s/v3/profitsharing/orders/unfreeze", this.payService.getPayBaseUrl()); + RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); + String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); + return GSON.fromJson(result, ProfitSharingUnfreezeV3Result.class); + } + + @Override + public ProfitSharingNotifyV3Result parseProfitSharingNotifyResult(String notifyData, SignatureHeader header) throws WxPayException { + ProfitSharingNotifyV3Response response = parseNotifyData(notifyData, header); + ProfitSharingNotifyV3Response.Resource resource = response.getResource(); + String cipherText = resource.getCipherText(); + String associatedData = resource.getAssociatedData(); + String nonce = resource.getNonce(); + String apiV3Key = this.payService.getConfig().getApiV3Key(); + try { + String result = AesUtils.decryptToString(associatedData, nonce, cipherText, apiV3Key); + return GSON.fromJson(result, ProfitSharingNotifyV3Result.class); + } catch (GeneralSecurityException | IOException e) { + throw new WxPayException("解析报文异常!", e); + } + } + + @Override + public ProfitSharingBillV3Result profitSharingBill(ProfitSharingBillV3Request request) throws WxPayException { + String url = String.format("%s/v3/profitsharing/bills?bill_date=%s", this.payService.getPayBaseUrl(), + request.getBillDate()); + + if (StringUtils.isNotBlank(request.getSubMchId())) { + url = String.format("%s&sub_mchid=%s", url, request.getSubMchId()); + } + if (StringUtils.isNotBlank(request.getTarType())) { + url = String.format("%s&tar_type=%s", url, request.getTarType()); + } + String result = this.payService.getV3(url); + return GSON.fromJson(result, ProfitSharingBillV3Result.class); + } + + + + private ProfitSharingNotifyV3Response parseNotifyData(String data, SignatureHeader header) throws WxPayException { + if (Objects.nonNull(header) && !this.verifyNotifySign(header, data)) { + throw new WxPayException("非法请求,头部信息验证失败"); + } + return GSON.fromJson(data, ProfitSharingNotifyV3Response.class); + } + + /** + * 校验通知签名 + * + * @param header 通知头信息 + * @param data 通知数据 + * @return true:校验通过 false:校验不通过 + */ + private boolean verifyNotifySign(SignatureHeader header, String data) throws WxPayException { + String beforeSign = String.format("%s%n%s%n%s%n", header.getTimeStamp(), header.getNonce(), data); + Verifier verifier = this.payService.getConfig().getVerifier(); + if (verifier == null) { + throw new WxPayException("证书检验对象为空"); + } + return verifier.verify(header.getSerial(), + beforeSign.getBytes(StandardCharsets.UTF_8), header.getSignature()); + } } diff --git a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingV3ServiceImpl.java b/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingV3ServiceImpl.java deleted file mode 100644 index f2a1cf597..000000000 --- a/weixin-java-pay/src/main/java/com/github/binarywang/wxpay/service/impl/ProfitSharingV3ServiceImpl.java +++ /dev/null @@ -1,220 +0,0 @@ -package com.github.binarywang.wxpay.service.impl; - -import com.github.binarywang.wxpay.bean.notify.SignatureHeader; -import com.github.binarywang.wxpay.bean.profitsharing.v3.*; -import com.github.binarywang.wxpay.exception.WxPayException; -import com.github.binarywang.wxpay.service.ProfitSharingV3Service; -import com.github.binarywang.wxpay.service.WxPayService; -import com.github.binarywang.wxpay.v3.auth.Verifier; -import com.github.binarywang.wxpay.v3.util.AesUtils; -import com.github.binarywang.wxpay.v3.util.RsaCryptoUtil; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; - -import java.io.IOException; -import java.nio.charset.StandardCharsets; -import java.security.GeneralSecurityException; -import java.util.Objects; - -/** - * 微信支付V3-资金应用-分账Service - * - * @author pg 2021-6-23 - * @version 1.0 - */ -@Slf4j -@RequiredArgsConstructor -public class ProfitSharingV3ServiceImpl implements ProfitSharingV3Service { - private static final Gson GSON = new GsonBuilder().create(); - private final WxPayService payService; - - @Override - public ProfitSharingMerchantMaxRatioQueryResult getProfitSharingMerchantMaxRatio(String subMchId) throws WxPayException { - String url = String.format("%s/v3/profitsharing/merchant-configs/%s", this.payService.getPayBaseUrl(), subMchId); - String result = this.payService.getV3(url); - return GSON.fromJson(result, ProfitSharingMerchantMaxRatioQueryResult.class); - } - - @Override - public ProfitSharingResult profitSharing(ProfitSharingRequest request) throws WxPayException { - String url = String.format("%s/v3/profitsharing/orders", this.payService.getPayBaseUrl()); - RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); - String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); - return GSON.fromJson(result, ProfitSharingResult.class); - } - - @Override - public ProfitSharingResult getProfitSharingResult(String outOrderNo, String transactionId) throws WxPayException { - String url = String.format("%s/v3/profitsharing/orders/%s?transaction_id=%s", this.payService.getPayBaseUrl(), - outOrderNo, transactionId); - String result = this.payService.getV3(url); - return GSON.fromJson(result, ProfitSharingResult.class); - } - - @Override - public ProfitSharingResult getProfitSharingResult(String outOrderNo, String transactionId, String subMchId) - throws WxPayException { - String url = String.format("%s/v3/profitsharing/orders/%s?sub_mchid=%s&transaction_id=%s", - this.payService.getPayBaseUrl(), outOrderNo, subMchId, transactionId); - String result = this.payService.getV3(url); - return GSON.fromJson(result, ProfitSharingResult.class); - } - - @Override - public ProfitSharingReturnResult profitSharingReturn(ProfitSharingReturnRequest request) throws WxPayException { - String url = String.format("%s/v3/profitsharing/return-orders", this.payService.getPayBaseUrl()); - RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); - String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); - return GSON.fromJson(result, ProfitSharingReturnResult.class); - } - - @Override - public ProfitSharingReturnResult getProfitSharingReturnResult(String outOrderNo, String outReturnNo) throws WxPayException { - String url = String.format("%s/v3/profitsharing/return-orders/%s?out_order_no=%s", this.payService.getPayBaseUrl(), - outReturnNo, outOrderNo); - String result = this.payService.getV3(url); - return GSON.fromJson(result, ProfitSharingReturnResult.class); - } - - @Override - public ProfitSharingReturnResult getProfitSharingReturnResult(String outOrderNo, String outReturnNo, String subMchId) - throws WxPayException { - String url = String.format("%s/v3/profitsharing/return-orders/%s?sub_mchid=%s&out_order_no=%s", - this.payService.getPayBaseUrl(), outReturnNo, subMchId, outOrderNo); - String result = this.payService.getV3(url); - return GSON.fromJson(result, ProfitSharingReturnResult.class); - } - - @Override - public ProfitSharingUnfreezeResult profitSharingUnfreeze(ProfitSharingUnfreezeRequest request) throws WxPayException { - String url = String.format("%s/v3/profitsharing/orders/unfreeze", this.payService.getPayBaseUrl()); - RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); - String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); - return GSON.fromJson(result, ProfitSharingUnfreezeResult.class); - } - - @Override - public ProfitSharingUnsplitResult getProfitSharingUnsplitAmount(String transactionId) throws WxPayException { - String url = String.format("%s/v3/profitsharing/transactions/%s/amounts", this.payService.getPayBaseUrl(), transactionId); - String result = this.payService.getV3(url); - return GSON.fromJson(result, ProfitSharingUnsplitResult.class); - } - - @Override - public ProfitSharingReceiver addProfitSharingReceiver(ProfitSharingReceiver request) throws WxPayException { - String url = String.format("%s/v3/profitsharing/receivers/add", this.payService.getPayBaseUrl()); - RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); - String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); - return GSON.fromJson(result, ProfitSharingReceiver.class); - } - - @Override - public ProfitSharingReceiver deleteProfitSharingReceiver(ProfitSharingReceiver request) throws WxPayException { - String url = String.format("%s/v3/profitsharing/receivers/delete", this.payService.getPayBaseUrl()); - RsaCryptoUtil.encryptFields(request, this.payService.getConfig().getVerifier().getValidCertificate()); - String result = this.payService.postV3WithWechatpaySerial(url, GSON.toJson(request)); - return GSON.fromJson(result, ProfitSharingReceiver.class); - } - - @Override - public ProfitSharingNotifyResult getProfitSharingNotifyResult(String notifyData, SignatureHeader header) throws WxPayException { - ProfitSharingNotifyData response = parseNotifyData(notifyData, header); - ProfitSharingNotifyData.Resource resource = response.getResource(); - String cipherText = resource.getCipherText(); - String associatedData = resource.getAssociatedData(); - String nonce = resource.getNonce(); - String apiV3Key = this.payService.getConfig().getApiV3Key(); - try { - String result = AesUtils.decryptToString(associatedData, nonce, cipherText, apiV3Key); - return GSON.fromJson(result, ProfitSharingNotifyResult.class); - } catch (GeneralSecurityException | IOException e) { - throw new WxPayException("解析报文异常!", e); - } - } - - @Override - public ProfitSharingPartnerNotifyResult getProfitSharingPartnerNotifyResult(String notifyData, SignatureHeader header) throws WxPayException { - ProfitSharingNotifyData response = parseNotifyData(notifyData, header); - ProfitSharingNotifyData.Resource resource = response.getResource(); - String cipherText = resource.getCipherText(); - String associatedData = resource.getAssociatedData(); - String nonce = resource.getNonce(); - String apiV3Key = this.payService.getConfig().getApiV3Key(); - try { - String result = AesUtils.decryptToString(associatedData, nonce, cipherText, apiV3Key); - return GSON.fromJson(result, ProfitSharingPartnerNotifyResult.class); - } catch (GeneralSecurityException | IOException e) { - throw new WxPayException("解析报文异常!", e); - } - } - - @Override - public ProfitSharingBillResult getProfitSharingBill(ProfitSharingBillRequest request) throws WxPayException { - String url = String.format("%s/v3/profitsharing/bills?bill_date=%s", this.payService.getPayBaseUrl(), - request.getBillDate()); - - if (StringUtils.isNotBlank(request.getSubMchId())) { - url = String.format("%s&sub_mchid=%s", url, request.getSubMchId()); - } - if (StringUtils.isNotBlank(request.getTarType())) { - url = String.format("%s&tar_type=%s", url, request.getTarType()); - } - String result = this.payService.getV3(url); - return GSON.fromJson(result, ProfitSharingBillResult.class); - } - - /** - *
-   * 请求分账查询API
-   *
-   * 发起分账请求后,可调用此接口查询分账结果
-   * 文档详见: https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter8_1_2.shtml
-   * 接口链接: https://api.mch.weixin.qq.com/v3/profitsharing/orders/{out_order_no}
-   *
-   * 注意:
-   * 发起解冻剩余资金请求后,可调用此接口查询解冻剩余资金的结果
-   * 
- * - * @param request {@link ProfitSharingQueryRequest} 针对某一笔分账订单的分账方法 - * @return {@link ProfitSharingResult} 微信返回的分账查询结果 - * @throws WxPayException the wx pay exception - * @see 微信文档 - */ - @Override - public ProfitSharingResult profitSharingQuery(ProfitSharingQueryRequest request) throws WxPayException { - String url = String.format("%s/v3/profitsharing/orders/%s?transaction_id=%s", this.payService.getPayBaseUrl(), - request.getOutOrderNo(), request.getOutOrderNo()); - if(StringUtils.isNotEmpty(request.getSubMchId())){ - url += "&sub_mchid=" + request.getSubMchId(); - } - String result = this.payService.getV3(url); - return GSON.fromJson(result, ProfitSharingResult.class); - } - - private ProfitSharingNotifyData parseNotifyData(String data, SignatureHeader header) throws WxPayException { - if (Objects.nonNull(header) && !this.verifyNotifySign(header, data)) { - throw new WxPayException("非法请求,头部信息验证失败"); - } - return GSON.fromJson(data, ProfitSharingNotifyData.class); - } - - /** - * 校验通知签名 - * - * @param header 通知头信息 - * @param data 通知数据 - * @return true:校验通过 false:校验不通过 - */ - private boolean verifyNotifySign(SignatureHeader header, String data) throws WxPayException { - String beforeSign = String.format("%s%n%s%n%s%n", header.getTimeStamp(), header.getNonce(), data); - Verifier verifier = this.payService.getConfig().getVerifier(); - if (verifier == null) { - throw new WxPayException("证书检验对象为空"); - } - return verifier.verify(header.getSerial(), - beforeSign.getBytes(StandardCharsets.UTF_8), header.getSignature()); - } -} diff --git a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryResultTest.java b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryResultTest.java index 321131368..516b8e1b5 100644 --- a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryResultTest.java +++ b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingQueryResultTest.java @@ -1,5 +1,6 @@ package com.github.binarywang.wxpay.bean.profitsharing; +import com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingQueryResult; import org.testng.annotations.Test; import java.util.List; diff --git a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingResultTest.java b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingV3ResultTest.java similarity index 94% rename from weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingResultTest.java rename to weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingV3ResultTest.java index f9bf0e838..2d558b9b5 100644 --- a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingResultTest.java +++ b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/bean/profitsharing/ProfitSharingV3ResultTest.java @@ -1,12 +1,13 @@ package com.github.binarywang.wxpay.bean.profitsharing; +import com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingResult; import org.testng.annotations.Test; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; -public class ProfitSharingResultTest { +public class ProfitSharingV3ResultTest { @Test public void testGetReceiverList() { diff --git a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImplTest.java b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImplTest.java index 2dab5b1ab..c0cc83bf7 100644 --- a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImplTest.java +++ b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/ProfitSharingServiceImplTest.java @@ -1,6 +1,11 @@ package com.github.binarywang.wxpay.service.impl; +import com.github.binarywang.wxpay.bean.notify.SignatureHeader; import com.github.binarywang.wxpay.bean.profitsharing.*; +import com.github.binarywang.wxpay.bean.profitsharing.request.*; +import com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingMerchantRatioQueryResult; +import com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingOrderAmountQueryResult; +import com.github.binarywang.wxpay.bean.profitsharing.result.ProfitSharingQueryResult; import com.github.binarywang.wxpay.constant.WxPayConstants; import com.github.binarywang.wxpay.exception.WxPayException; import com.github.binarywang.wxpay.service.WxPayService; @@ -52,7 +57,7 @@ public class ProfitSharingServiceImplTest { @Test public void testProfitSharingFinish() throws WxPayException { - ProfitSharingFinishRequest request = ProfitSharingFinishRequest + ProfitSharingUnfreezeRequest request = ProfitSharingUnfreezeRequest .newBuilder() .outOrderNo("20191023103251431856285") .transactionId("4200000441201910238267278073") @@ -140,4 +145,15 @@ public class ProfitSharingServiceImplTest { log.info(this.payService.getProfitSharingService().profitSharingReturnQuery(request).toString()); } + @Test + public void testProfitSharingNotifyData() throws WxPayException { + SignatureHeader header = new SignatureHeader(); + header.setSerial("Wechatpay-Serial"); + header.setTimeStamp("Wechatpay-Timestamp"); + header.setNonce("Wechatpay-Nonce"); + header.setSignature("Wechatpay-Signature"); + String data = "body"; + log.info(this.payService.getProfitSharingService().parseProfitSharingNotifyResult(data,header).toString()); + } + } diff --git a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/ProfitSharingV3ServiceImplTest.java b/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/ProfitSharingV3ServiceImplTest.java deleted file mode 100644 index 72314dad7..000000000 --- a/weixin-java-pay/src/test/java/com/github/binarywang/wxpay/service/impl/ProfitSharingV3ServiceImplTest.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.github.binarywang.wxpay.service.impl; - -import com.github.binarywang.wxpay.bean.notify.SignatureHeader; -import com.github.binarywang.wxpay.exception.WxPayException; -import com.github.binarywang.wxpay.service.WxPayService; -import com.github.binarywang.wxpay.testbase.ApiTestModule; -import com.google.inject.Inject; -import lombok.extern.slf4j.Slf4j; -import org.testng.annotations.Guice; -import org.testng.annotations.Test; - -/** - * 测试类 - * - * @author yuanbo - * @since 2022-04-26-22:33 PM - */ -@Test -@Slf4j -@Guice(modules = ApiTestModule.class) -public class ProfitSharingV3ServiceImplTest { - @Inject - private WxPayService payService; - - @Test - public void testProfitSharingNotifyData() throws WxPayException { - SignatureHeader header = new SignatureHeader(); - header.setSerial("Wechatpay-Serial"); - header.setTimeStamp("Wechatpay-Timestamp"); - header.setNonce("Wechatpay-Nonce"); - header.setSignature("Wechatpay-Signature"); - String data = "body"; - log.info(this.payService.getProfitSharingV3Service().getProfitSharingNotifyResult(data,header).toString()); - } -}