diff --git a/docs/quick_start.md b/docs/quick_start.md index f44643c..c61df5f 100644 --- a/docs/quick_start.md +++ b/docs/quick_start.md @@ -92,7 +92,7 @@ wechat: ### 支付宝 -在Spring Boot项目中的`application.yaml`中配置`ali.pay.v1`相关参数。 +在Spring Boot项目中的`application.yaml`中配置`ali.pay.v1`相关参数。证书细节参见【日常踩坑】 ```yaml ali: pay: diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java index b21734d..654ef68 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/enumeration/WechatPayV3Type.java @@ -605,6 +605,12 @@ public enum WechatPayV3Type { * @since 1.0.11.RELEASE */ PROFITSHARING_AMOUNTS(HttpMethod.GET, "%s/v3/profitsharing/transactions/{transaction_id}/amounts"), + /** + * 服务商专用-查询最大分账比例API. + * + * @since 1.0.11.RELEASE + */ + PROFITSHARING_MCH_CONFIG(HttpMethod.GET, "%s/v3/profitsharing/merchant-configs/{sub_mchid}"), /** * 添加分账接收方API. * diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatApiProvider.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatApiProvider.java index b7c9778..cb9e442 100644 --- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatApiProvider.java +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatApiProvider.java @@ -123,7 +123,7 @@ public class WechatApiProvider { } /** - * 批量转账到零钱. + * 批量转账到零钱. *
* 批量转账到零钱提供商户同时向多个用户微信零钱转账的能力。商户可以使用批量转账到零钱用于费用报销、员工福利发放、合作伙伴货款或服务款项支付等场景,提高转账效率。
*
@@ -193,4 +193,23 @@ public class WechatApiProvider {
return new WechatAllocationApi(wechatV2Client);
}
+ /**
+ * 直连商户微信支付分账,基于V3
+ *
+ * @param tenantId the tenant id
+ * @return the wechat profitsharing api
+ */
+ public WechatProfitsharingApi profitsharingApi(String tenantId) {
+ return new WechatProfitsharingApi(wechatPayClient, tenantId);
+ }
+
+ /**
+ * 服务商微信支付分账,基于V3
+ *
+ * @param tenantId the tenant id
+ * @return the wechat partner profitsharing api
+ */
+ public WechatPartnerProfitsharingApi partnerProfitsharingApi(String tenantId) {
+ return new WechatPartnerProfitsharingApi(wechatPayClient, tenantId);
+ }
}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatBatchTransferApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatBatchTransferApi.java
index 01f6189..5f4ef78 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatBatchTransferApi.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatBatchTransferApi.java
@@ -140,7 +140,7 @@ public class WechatBatchTransferApi extends AbstractApi {
WechatResponseEntity
+ * 微信订单支付成功后,商户发起分账请求,将结算后的资金分到分账接收方
+ *
+ * 注意:
+ *
+ * 发起分账请求后,可调用此接口查询分账结果
+ *
+ * 注意:
+ *
+ * 如果订单已经分账,在退款时,可以先调此接口,将已分账的资金从分账接收方的账户回退给分账方,再发起退款
+ *
+ * 注意:
+ *
+ * 商户需要核实回退结果,可调用此接口查询回退结果
+ *
+ * 注意:
+ *
+ * 不需要进行分账的订单,可直接调用本接口将订单的金额全部解冻给特约商户
+ *
+ * 注意:
+ *
+ * 可调用此接口查询订单剩余待分金额
+ *
+ * @param transactionId the transaction id
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity
+ * 可调用此接口查询订单剩余待分金额
+ *
+ * @param subMchid the sub mchid
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity
+ * 商户发起添加分账接收方请求,建立分账接收方列表。后续可通过发起分账请求,将分账方商户结算后的资金,分到该分账接收方
+ *
+ * @param addReceiversParams the add receivers params
+ * @return wechat response entity
+ */
+ public WechatResponseEntity
+ * 商户发起删除分账接收方请求。删除后,不支持将分账方商户结算后的资金,分到该分账接收方
+ *
+ * @param delReceiversParams the del receivers params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity
+ * 分账接收方类型包含{@code PERSONAL_SUB_OPENID}时必填
+ */
+ private String subAppid;
+ /**
+ * 分账接收方类型,必填
+ */
+ private ReceiverType type;
+ /**
+ * 分账接收方帐号,必填
+ */
+ private String account;
+ /**
+ * 分账个人接收方姓名,选填
+ *
+ * 分账接收方类型是{@code MERCHANT_ID}时,是商户全称(必传),当商户是小微商户或个体户时,是开户人姓名 分账接收方类型是{@code PERSONAL_OPENID}时,是个人姓名(选传,传则校验)
+ *
+ * 分账接收方类型包含{@code PERSONAL_SUB_OPENID}时必填
+ */
+ private String subAppid;
+ /**
+ * 分账接收方类型,必填
+ */
+ private ReceiverType type;
+ /**
+ * 分账接收方帐号,必填
+ */
+ private String account;
+}
\ No newline at end of file
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerProfitSharingOrder.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerProfitSharingOrder.java
new file mode 100644
index 0000000..7407529
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerProfitSharingOrder.java
@@ -0,0 +1,55 @@
+package cn.felord.payment.wechat.v3.model.profitsharing;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 服务商请求分账API-请求参数
+ *
+ * @author felord.cn
+ * @since 1.0.11.RELEASE
+ */
+@Data
+public class PartnerProfitSharingOrder {
+ /**
+ * 子商户号,选填
+ */
+ private String subMchid;
+ /**
+ * 服务商应用ID,自动注入
+ */
+ private String appid;
+ /**
+ * 子商户应用ID,选填
+ *
+ * 分账接收方类型包含{@code PERSONAL_SUB_OPENID}时必填
+ */
+ private String subAppid;
+ /**
+ * 微信订单号,必填
+ */
+ private String transactionId;
+ /**
+ * 商户分账单号,必填
+ *
+ * 商户系统内部的分账单号,在商户系统内部唯一,同一分账单号多次请求等同一次。
+ * 只能是数字、大小写字母_-|*@
+ */
+ private String outOrderNo;
+ /**
+ * 分账接收方列表,选填
+ *
+ * 可以设置出资商户作为分账接受方,最多可有50个分账接收方
+ */
+ private List
+ *
+ * 服务商模式分账发起商户
+ */
+ private String mchid;
+ /**
+ * 子商户号
+ *
+ * 服务商模式分账出资商户
+ */
+ private String subMchid;
+
+ /**
+ * 微信订单号.
+ *
+ * 微信支付订单号
+ */
+ private String transactionId;
+
+ /**
+ * 微信分账/回退单号.
+ */
+ private String orderId;
+
+ /**
+ * 商户分账/回退单号.
+ *
+ * 分账方系统内部的分账/回退单号
+ */
+ private String outOrderNo;
+
+ /**
+ * 分账接收方.
+ *
+ * 分账接收方对象
+ */
+ private List
+ * Rfc3339标准
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssXXX", timezone = "GMT+8")
+ private LocalDateTime successTime;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerQueryOrderParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerQueryOrderParams.java
new file mode 100644
index 0000000..fa12dc9
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerQueryOrderParams.java
@@ -0,0 +1,25 @@
+package cn.felord.payment.wechat.v3.model.profitsharing;
+
+import lombok.Data;
+
+/**
+ * 服务商-查询分账结果API-请求参数
+ *
+ * @author felord.cn
+ * @since 1.0.11.RELEASE
+ */
+@Data
+public class PartnerQueryOrderParams {
+ /**
+ * 子商户号,选填
+ */
+ private String subMchid;
+ /**
+ * 商户分账单号,必填
+ */
+ private String outOrderNo;
+ /**
+ * 微信订单号,必填
+ */
+ private String transactionId;
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerQueryReturnOrderParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerQueryReturnOrderParams.java
new file mode 100644
index 0000000..3f6ce01
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerQueryReturnOrderParams.java
@@ -0,0 +1,25 @@
+package cn.felord.payment.wechat.v3.model.profitsharing;
+
+import lombok.Data;
+
+/**
+ * 服务商-查询分账回退结果API-请求参数
+ *
+ * @author felord.cn
+ * @since 1.0.11.RELEASE
+ */
+@Data
+public class PartnerQueryReturnOrderParams {
+ /**
+ * 子商户号,选填
+ */
+ private String subMchid;
+ /**
+ * 商户回退单号,必填
+ */
+ private String outReturnNo;
+ /**
+ * 商户分账单号,必填
+ */
+ private String outOrderNo;
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerReturnOrdersParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerReturnOrdersParams.java
new file mode 100644
index 0000000..65cf588
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerReturnOrdersParams.java
@@ -0,0 +1,45 @@
+package cn.felord.payment.wechat.v3.model.profitsharing;
+
+import lombok.Data;
+
+/**
+ * 服务商-请求分账回退API-请求参数
+ *
+ * @author felord.cn
+ * @since 1.0.11.RELEASE
+ */
+@Data
+public class PartnerReturnOrdersParams {
+ /**
+ * 子商户号,选填
+ */
+ private String subMchid;
+ /**
+ * 微信分账单号,同{@link #outOrderNo} 二选一
+ */
+ private String orderId;
+ /**
+ * 商户分账单号,同{@link #orderId} 二选一
+ */
+ private String outOrderNo;
+ /**
+ * 商户回退单号,必填
+ */
+ private String outReturnNo;
+ /**
+ * 回退商户号,必填
+ *
+ * 分账回退的出资商户,只能对原分账请求中成功分给商户接收方进行回退
+ */
+ private String returnMchid;
+ /**
+ * 回退金额,必填
+ *
+ * 需要从分账接收方回退的金额,单位为分,只能为整数,不能超过原始分账单分出给该接收方的金额
+ */
+ private Integer amount;
+ /**
+ * 回退描述,必填
+ */
+ private String description;
+}
\ No newline at end of file
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerUnfreezeParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerUnfreezeParams.java
new file mode 100644
index 0000000..0b3f192
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerUnfreezeParams.java
@@ -0,0 +1,29 @@
+package cn.felord.payment.wechat.v3.model.profitsharing;
+
+import lombok.Data;
+
+/**
+ * 服务商-解冻剩余资金API-请求参数
+ *
+ * @author felord.cn
+ * @since 1.0.11.RELEASE
+ */
+@Data
+public class PartnerUnfreezeParams {
+ /**
+ * 子商户号,选填
+ */
+ private String subMchid;
+ /**
+ * 微信订单号,必填
+ */
+ private String transactionId;
+ /**
+ * 商户分账单号,必填
+ */
+ private String outOrderNo;
+ /**
+ * 分账描述,必填
+ */
+ private String description;
+}
\ No newline at end of file
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitSharingOrder.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitSharingOrder.java
index 4dd55fe..b58174a 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitSharingOrder.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitSharingOrder.java
@@ -5,7 +5,7 @@ import lombok.Data;
import java.util.List;
/**
- * 直连商户请求分账API-请求参数
+ * 直连商户-请求分账API-请求参数
*
* @author felord.cn
* @since 1.0.11.RELEASE
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitsharingConsumeData.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitsharingConsumeData.java
index 3b65f51..f02951c 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitsharingConsumeData.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ProfitsharingConsumeData.java
@@ -26,7 +26,7 @@ import java.time.LocalDateTime;
import java.util.List;
/**
- * 微信支付分账通知参数
+ * 直连商户-微信支付分账动账通知参数
*
* @author felord.cn
* @since 1.0.11.RELEASE
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/QueryOrderParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/QueryOrderParams.java
index 8a25740..9778454 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/QueryOrderParams.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/QueryOrderParams.java
@@ -3,7 +3,7 @@ package cn.felord.payment.wechat.v3.model.profitsharing;
import lombok.Data;
/**
- * 查询分账结果API-请求参数
+ * 直连商户-查询分账结果API-请求参数
*
* @author felord.cn
* @since 1.0.11.RELEASE
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/QueryReturnOrderParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/QueryReturnOrderParams.java
index 182e72e..fd5420c 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/QueryReturnOrderParams.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/QueryReturnOrderParams.java
@@ -3,7 +3,7 @@ package cn.felord.payment.wechat.v3.model.profitsharing;
import lombok.Data;
/**
- * 查询分账回退结果API-请求参数
+ * 直连商户-查询分账回退结果API-请求参数
*
* @author felord.cn
* @since 1.0.11.RELEASE
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ReturnOrdersParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ReturnOrdersParams.java
index 981c3f2..23e375b 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ReturnOrdersParams.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/ReturnOrdersParams.java
@@ -3,7 +3,7 @@ package cn.felord.payment.wechat.v3.model.profitsharing;
import lombok.Data;
/**
- * 请求分账回退API-请求参数
+ * 直连商户-请求分账回退API-请求参数
*
* @author felord.cn
* @since 1.0.11.RELEASE
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/UnfreezeParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/UnfreezeParams.java
index a53f789..a2d3ed2 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/UnfreezeParams.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/UnfreezeParams.java
@@ -3,7 +3,7 @@ package cn.felord.payment.wechat.v3.model.profitsharing;
import lombok.Data;
/**
- * 解冻剩余资金API-请求参数
+ * 直连商户-解冻剩余资金API-请求参数
*
* @author felord.cn
* @since 1.0.11.RELEASE
+ *
+ *
+ * @param profitSharingOrder the profit sharing order
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity
+ *
+ *
+ * @param queryOrderParams the query order params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity
+ *
+ *
+ * @param returnOrdersParams the return orders params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity
+ *
+ *
+ * @param queryReturnOrderParams the query return order params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity
+ *
+ *
+ * @param unfreezeParams the unfreeze params
+ * @return the wechat response entity
+ */
+ public WechatResponseEntity
+ *
+ */
+ private String name;
+ /**
+ * 与分账方的关系类型,必填
+ */
+ private RelationType relationType;
+ /**
+ * 自定义的分账关系,选填
+ */
+ private String customRelation;
+
+ /**
+ * 子商户与接收方的关系
+ */
+ public enum RelationType {
+ /**
+ * 门店.
+ */
+ STORE,
+ /**
+ * 员工.
+ */
+ STAFF,
+ /**
+ * 店主.
+ */
+ STORE_OWNER,
+ /**
+ * 合作伙伴.
+ */
+ PARTNER,
+ /**
+ * 总部.
+ */
+ HEADQUARTER,
+ /**
+ * 品牌方.
+ */
+ BRAND,
+ /**
+ * 分销商.
+ */
+ DISTRIBUTOR,
+ /**
+ * 用户.
+ */
+ USER,
+ /**
+ * 供应商.
+ */
+ SUPPLIER,
+ /**
+ * 自定义.
+ */
+ CUSTOM
+ }
+}
\ No newline at end of file
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerDelReceiversParams.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerDelReceiversParams.java
new file mode 100644
index 0000000..cd66d4b
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerDelReceiversParams.java
@@ -0,0 +1,36 @@
+package cn.felord.payment.wechat.v3.model.profitsharing;
+
+import cn.felord.payment.wechat.enumeration.ReceiverType;
+import lombok.Data;
+
+/**
+ * 服务商-删除分账接收方API-请求参数
+ *
+ * @author felord.cn
+ * @since 1.0.11.RELEASE
+ */
+@Data
+public class PartnerDelReceiversParams {
+ /**
+ * 子商户号,选填
+ */
+ private String subMchid;
+ /**
+ * 应用ID,自动注入
+ */
+ private String appid;
+ /**
+ * 子商户应用ID,选填
+ *
+ *
+ */
+ private Boolean unfreezeUnsplit;
+}
\ No newline at end of file
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerProfitsharingConsumeData.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerProfitsharingConsumeData.java
new file mode 100644
index 0000000..6c4b67d
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/model/profitsharing/PartnerProfitsharingConsumeData.java
@@ -0,0 +1,84 @@
+/*
+ *
+ * Copyright 2019-2020 felord.cn
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * https://www.apache.org/licenses/LICENSE-2.0
+ * Website:
+ * https://felord.cn
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+package cn.felord.payment.wechat.v3.model.profitsharing;
+
+import cn.felord.payment.wechat.v2.model.allocation.Receiver;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.util.List;
+
+/**
+ * 服务商-微信支付分账动账通知参数
+ *
+ * @author felord.cn
+ * @since 1.0.11.RELEASE
+ */
+@Data
+public class PartnerProfitsharingConsumeData {
+
+ /**
+ * 服务商商户号.
+ *