diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/WechatAllocationApi.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/WechatAllocationApi.java new file mode 100644 index 0000000..48b7814 --- /dev/null +++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/WechatAllocationApi.java @@ -0,0 +1,247 @@ +/* + * Copyright 2019-2021 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.v2; + +import cn.felord.payment.wechat.WechatPayProperties; +import cn.felord.payment.wechat.v2.model.allocation.*; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.PropertyNamingStrategy; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; +import lombok.SneakyThrows; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpMethod; + +import java.util.List; + +/** + * 微信支付分账 + *
+ *
+ * @since 1.0.10.RELEASE
+ */
+@Slf4j
+public class WechatAllocationApi {
+ /**
+ * The constant MAPPER.
+ */
+ private static final ObjectMapper MAPPER = new ObjectMapper();
+
+ static {
+ MAPPER.setPropertyNamingStrategy(PropertyNamingStrategy.SNAKE_CASE)
+ .setSerializationInclusion(JsonInclude.Include.NON_NULL)
+ .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
+ .configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true)
+ .registerModule(new JavaTimeModule());
+ }
+
+ private final WechatV2Client wechatV2Client;
+
+ /**
+ * Instantiates a new Wechat allocation api.
+ *
+ * @param wechatV2Client the wechat v 2 client
+ */
+ public WechatAllocationApi(WechatV2Client wechatV2Client) {
+ this.wechatV2Client = wechatV2Client;
+ }
+
+ /**
+ * 请求单次分账
+ *
+ * @param profitSharingModel the profit sharing model
+ * @return json node
+ */
+ @SneakyThrows
+ public JsonNode profitSharing(ProfitSharingModel profitSharingModel) {
+ ProfitSharingSModel profitSharingSModel = new ProfitSharingSModel();
+ List
+ * 微信支付分配的商户号
+ */
+ private String mchId;
+ private String appid;
+ private String transactionId;
+ private String outOrderNo;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/BaseProfitSharingReceiverModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/BaseProfitSharingReceiverModel.java
new file mode 100644
index 0000000..cad5cb3
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/BaseProfitSharingReceiverModel.java
@@ -0,0 +1,27 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import cn.felord.payment.wechat.v2.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class BaseProfitSharingReceiverModel extends BaseModel {
+ /**
+ * 商户号.
+ *
+ * 微信支付分配的商户号
+ */
+ private String mchId;
+
+ /**
+ * 公众账号ID.
+ *
+ * 微信分配的公众账号ID
+ */
+ private String appid;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/MultiProfitSharingModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/MultiProfitSharingModel.java
new file mode 100644
index 0000000..9bf11c9
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/MultiProfitSharingModel.java
@@ -0,0 +1,8 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+public class MultiProfitSharingModel extends ProfitSharingModel {
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/MultiProfitSharingSModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/MultiProfitSharingSModel.java
new file mode 100644
index 0000000..50adf70
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/MultiProfitSharingSModel.java
@@ -0,0 +1,8 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+public class MultiProfitSharingSModel extends ProfitSharingSModel {
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingAddReceiverModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingAddReceiverModel.java
new file mode 100644
index 0000000..3c7c5e5
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingAddReceiverModel.java
@@ -0,0 +1,72 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingAddReceiverModel extends BaseProfitSharingReceiverModel {
+
+ private Receiver receiver;
+
+ @Data
+ public static class Receiver {
+
+ /**
+ * 分账接收方类型.
+ *
+ * MERCHANT_ID:商户号(mch_id或者sub_mch_id)
+ * PERSONAL_OPENID:个人openid
+ */
+ private Type type;
+
+ /**
+ * 分账接收方帐号.
+ *
+ * 类型是MERCHANT_ID时,是商户号(mch_id或者sub_mch_id)
+ * 类型是PERSONAL_OPENID时,是个人openid
+ */
+ private String account;
+
+ /**
+ * 分账接收方全称.
+ *
+ * 分账接收方类型是MERCHANT_ID时,是商户全称(必传),当商户是小微商户或个体户时,是开户人姓名
+ * 分账接收方类型是PERSONAL_OPENID时,是个人姓名(选传,传则校验)
+ */
+ private String name;
+
+ /**
+ * 与分账方的关系类型.
+ *
+ * 子商户与接收方的关系。
+ * 本字段值为枚举:
+ * SERVICE_PROVIDER:服务商
+ * STORE:门店
+ * STAFF:员工
+ * STORE_OWNER:店主
+ * PARTNER:合作伙伴
+ * HEADQUARTER:总部
+ * BRAND:品牌方
+ * DISTRIBUTOR:分销商
+ * USER:用户
+ * SUPPLIER:供应商
+ * CUSTOM:自定义
+ */
+ private RelationType relationType;
+
+ /**
+ * 自定义的分账关系.
+ *
+ * 子商户与接收方具体的关系,本字段最多10个字。
+ * 当字段relation_type的值为CUSTOM时,本字段必填
+ * 当字段relation_type的值不为CUSTOM时,本字段无需填写
+ */
+ private String customRelation;
+
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingAddReceiverSModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingAddReceiverSModel.java
new file mode 100644
index 0000000..66ac762
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingAddReceiverSModel.java
@@ -0,0 +1,15 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingAddReceiverSModel extends BaseProfitSharingReceiverModel {
+
+ private String receiver;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingFinishModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingFinishModel.java
new file mode 100644
index 0000000..c5014fd
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingFinishModel.java
@@ -0,0 +1,49 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import cn.felord.payment.wechat.v2.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingFinishModel extends BaseModel {
+
+ /**
+ * 商户号.
+ *
+ * 微信支付分配的商户号
+ */
+ private String mchId;
+
+ /**
+ * 公众账号ID.
+ *
+ * 微信分配的公众账号ID
+ */
+ private String appid;
+
+ /**
+ * 微信订单号.
+ *
+ * 微信支付订单号
+ */
+ private String transactionId;
+
+ /**
+ * 商户分账单号.
+ *
+ * 查询分账结果,输入申请分账时的商户分账单号; 查询分账完结执行的结果,输入发起分账完结时的商户分账单号
+ */
+ private String outOrderNo;
+
+ /**
+ * 分账完结描述.
+ *
+ * 分账完结的原因描述
+ */
+ private String description;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingModel.java
new file mode 100644
index 0000000..08269e8
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingModel.java
@@ -0,0 +1,23 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.List;
+
+/**
+ * 单次分账请求按照传入的分账接收方账号和资金进行分账,同时会将订单剩余的待分账金额解冻给本商户。
+ * 故操作成功后,订单不能再进行分账,也不能进行分账完结。
+ *
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingModel extends BaseProfitSharingModel {
+
+ /**
+ * 分账接收方列表,不超过50个json对象,不能设置分账方作为分账接受方
+ */
+ private List
+ * 微信支付分配的商户号
+ */
+ private String mchId;
+
+ /**
+ * 微信订单号.
+ *
+ * 微信支付订单号
+ */
+ private String transactionId;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingQueryModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingQueryModel.java
new file mode 100644
index 0000000..7777b6a
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingQueryModel.java
@@ -0,0 +1,35 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import cn.felord.payment.wechat.v2.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingQueryModel extends BaseModel {
+
+ /**
+ * 商户号.
+ *
+ * 微信支付分配的商户号
+ */
+ private String mchId;
+
+ /**
+ * 微信订单号.
+ *
+ * 微信支付订单号
+ */
+ private String transactionId;
+
+ /**
+ * 商户分账单号.
+ *
+ * 查询分账结果,输入申请分账时的商户分账单号; 查询分账完结执行的结果,输入发起分账完结时的商户分账单号
+ */
+ private String outOrderNo;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingRemoveReceiverModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingRemoveReceiverModel.java
new file mode 100644
index 0000000..b1dc962
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingRemoveReceiverModel.java
@@ -0,0 +1,23 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingRemoveReceiverModel extends BaseProfitSharingReceiverModel {
+
+ private Receiver receiver;
+
+ @Data
+ public static class Receiver {
+
+ private Type type;
+ private String account;
+
+ }
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingRemoveReceiverSModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingRemoveReceiverSModel.java
new file mode 100644
index 0000000..8327eeb
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingRemoveReceiverSModel.java
@@ -0,0 +1,15 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingRemoveReceiverSModel extends BaseProfitSharingReceiverModel {
+
+ private String receiver;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingReturnModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingReturnModel.java
new file mode 100644
index 0000000..7b0381e
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingReturnModel.java
@@ -0,0 +1,35 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import cn.felord.payment.wechat.v2.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingReturnModel extends BaseModel {
+
+ /**
+ * 商户号.
+ *
+ * 微信支付分配的商户号
+ */
+ private String mchId;
+
+ /**
+ * 公众账号ID.
+ *
+ * 微信分配的公众账号ID
+ */
+ private String appid;
+ private String orderId;
+ private String outOrderNo;
+ private String outReturnNo;
+ private String returnAccountType;
+ private String returnAccount;
+ private String returnAmount;
+ private String description;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingReturnQueryModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingReturnQueryModel.java
new file mode 100644
index 0000000..3ce2299
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingReturnQueryModel.java
@@ -0,0 +1,51 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import cn.felord.payment.wechat.v2.model.BaseModel;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingReturnQueryModel extends BaseModel {
+
+ /**
+ * 商户号.
+ *
+ * 微信支付分配的商户号
+ */
+ private String mchId;
+
+ /**
+ * 公众账号ID.
+ *
+ * 微信分配的公众账号ID
+ */
+ private String appid;
+
+ /**
+ * 微信分账订单号.
+ *
+ * 原发起分账请求时,微信返回的微信分账单号,与商户分账单号一一对应。
+ * 微信分账单号与商户分账单号二选一填写
+ */
+ private String orderId;
+
+ /**
+ * 商户分账单号.
+ *
+ * 原发起分账请求时使用的商户系统内部的分账单号。
+ * 微信分账单号与商户分账单号二选一填写
+ */
+ private String outOrderNo;
+
+ /**
+ * 商户回退单号.
+ *
+ * 调用回退接口提供的商户系统内部的回退单号
+ */
+ private String outReturnNo;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingSModel.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingSModel.java
new file mode 100644
index 0000000..8ec518d
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/ProfitSharingSModel.java
@@ -0,0 +1,18 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+/**
+ * @since 1.0.10.RELEASE
+ */
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class ProfitSharingSModel extends BaseProfitSharingModel {
+
+ /**
+ * 分账接收方列表,不超过50个json对象,不能设置分账方作为分账接受方。
+ */
+ private String receivers;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/Receiver.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/Receiver.java
new file mode 100644
index 0000000..322c4cc
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/Receiver.java
@@ -0,0 +1,46 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+import lombok.Data;
+
+@Data
+public class Receiver {
+
+ /**
+ * 分账接收方类型.
+ *
+ * MERCHANT_ID:商户号(mch_id或者sub_mch_id)
+ * PERSONAL_OPENID:个人openid
+ */
+ private Type type;
+
+ /**
+ * 分账接收方帐号.
+ *
+ * 类型是MERCHANT_ID时,是商户号(mch_id或者sub_mch_id)
+ * 类型是PERSONAL_OPENID时,是个人openid
+ */
+ private String account;
+
+ /**
+ * 分账金额.
+ *
+ * 单位为分,只能为整数,不能超过原订单支付金额及最大分账比例金额
+ */
+ private Integer amount;
+
+ /**
+ * 分账描述.
+ *
+ * 分账的原因描述,分账账单中需要体现
+ */
+ private String description;
+
+ /**
+ * 分账个人接收方姓名.
+ *
+ * 可选项,在接收方类型为个人的时可选填,若有值,会检查与 name 是否实名匹配,不匹配会拒绝分账请求.
+ * 1、分账接收方类型是PERSONAL_OPENID时,是个人姓名(选传,传则校验)
+ */
+ private String name;
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/RelationType.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/RelationType.java
new file mode 100644
index 0000000..0c0cbcc
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/RelationType.java
@@ -0,0 +1,17 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+public enum RelationType {
+
+ SERVICE_PROVIDER,
+ STORE,
+ STAFF,
+ STORE_OWNER,
+ PARTNER,
+ HEADQUARTER,
+ BRAND,
+ DISTRIBUTOR,
+ USER,
+ SUPPLIER,
+ CUSTOM
+
+}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/Type.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/Type.java
new file mode 100644
index 0000000..9fc1be9
--- /dev/null
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v2/model/allocation/Type.java
@@ -0,0 +1,14 @@
+package cn.felord.payment.wechat.v2.model.allocation;
+
+public enum Type {
+
+ /**
+ * 商户号(mch_id或者sub_mch_id)
+ */
+ MERCHANT_ID,
+
+ /**
+ * 个人openid
+ */
+ PERSONAL_OPENID;
+}
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 bab8d0e..b7c9778 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
@@ -18,6 +18,7 @@
*/
package cn.felord.payment.wechat.v3;
+import cn.felord.payment.wechat.v2.WechatAllocationApi;
import cn.felord.payment.wechat.v2.WechatPayRedpackApi;
import cn.felord.payment.wechat.v2.WechatPayTransfersApi;
import cn.felord.payment.wechat.v2.WechatV2Client;
@@ -177,4 +178,19 @@ public class WechatApiProvider {
return new WechatPayTransfersApi(wechatV2Client);
}
+ /**
+ * 微信支付分账,基于V2
+ *
+ * @param tenantId the tenant id
+ * @return wechat allocation api
+ * @since 1.0.10.RELEASE
+ */
+ public WechatAllocationApi allocationApi(String tenantId) {
+ WechatMetaBean wechatMeta = wechatPayClient.signatureProvider()
+ .wechatMetaContainer()
+ .getWechatMeta(tenantId);
+ WechatV2Client wechatV2Client = new WechatV2Client(wechatMeta);
+ return new WechatAllocationApi(wechatV2Client);
+ }
+
}
diff --git a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayCallback.java b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayCallback.java
index 77d41df..35b2c59 100644
--- a/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayCallback.java
+++ b/payment-spring-boot-autoconfigure/src/main/java/cn/felord/payment/wechat/v3/WechatPayCallback.java
@@ -91,6 +91,27 @@ public class WechatPayCallback {
}
+ /**
+ * 微信支付分账回调.
+ *
+ * @param params the params
+ * @param consumeDataConsumer the consume data consumer
+ * @return the map
+ * @since 1.0.10.RELEASE
+ */
+ @SneakyThrows
+ public Map
+ * 直连模式分账发起和出资商户
+ */
+ private String mchid;
+
+ /**
+ * 微信订单号.
+ *
+ * 微信支付订单号
+ */
+ private String transactionId;
+
+ /**
+ * 微信分账/回退单号.
+ */
+ private String orderId;
+
+ /**
+ * 商户分账/回退单号.
+ *
+ * 分账方系统内部的分账/回退单号
+ */
+ private String outOrderNo;
+
+ /**
+ * 分账接收方.
+ *
+ * 分账接收方对象
+ */
+ private Receiver receiver;
+
+ /**
+ * 成功时间.
+ *
+ * Rfc3339标准
+ */
+ @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssXXX", timezone = "GMT+8")
+ private OffsetDateTime successTime;
+
+}