From f56e088bfe713047db9f03c952ee98cab251cd3a Mon Sep 17 00:00:00 2001 From: DaxPay Date: Thu, 20 Jun 2024 11:28:38 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=BD=AC=E8=B4=A6SDK=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bootx-platform/bootx-common-core/pom.xml | 1 + bootx-platform/bootx-commons/pom.xml | 1 + bootx-platform/bootx-services/pom.xml | 1 + bootx-platform/pom.xml | 1 + daxpay-single-sdk/pom.xml | 3 +- .../sdk/code/TransferPayeeTypeEnum.java | 49 +++++++++ .../single/sdk/code/TransferStatusEnum.java | 23 ++++ .../single/sdk/code/TransferTypeEnum.java | 26 +++++ .../sdk/model/transfer/TransferModel.java | 30 ++++++ .../model/transfer/TransferOrderModel.java | 100 ++++++++++++++++++ .../param/transfer/QueryTransferParam.java | 43 ++++++++ .../sdk/param/transfer/TransferParam.java | 83 +++++++++++++++ .../core/result/transfer/TransferResult.java | 2 - 13 files changed, 360 insertions(+), 3 deletions(-) create mode 100644 daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferPayeeTypeEnum.java create mode 100644 daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferStatusEnum.java create mode 100644 daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferTypeEnum.java create mode 100644 daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferModel.java create mode 100644 daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferOrderModel.java create mode 100644 daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/QueryTransferParam.java create mode 100644 daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/TransferParam.java diff --git a/bootx-platform/bootx-common-core/pom.xml b/bootx-platform/bootx-common-core/pom.xml index f6a2d2795..7734b821f 100644 --- a/bootx-platform/bootx-common-core/pom.xml +++ b/bootx-platform/bootx-common-core/pom.xml @@ -89,6 +89,7 @@ + org.apache.maven.plugins maven-compiler-plugin ${java.version} diff --git a/bootx-platform/bootx-commons/pom.xml b/bootx-platform/bootx-commons/pom.xml index 9ae7f1fc5..c5aa9e15a 100644 --- a/bootx-platform/bootx-commons/pom.xml +++ b/bootx-platform/bootx-commons/pom.xml @@ -63,6 +63,7 @@ ${java.version} ${java.version} + -parameters diff --git a/bootx-platform/bootx-services/pom.xml b/bootx-platform/bootx-services/pom.xml index a20e23f79..2cfb42337 100644 --- a/bootx-platform/bootx-services/pom.xml +++ b/bootx-platform/bootx-services/pom.xml @@ -231,6 +231,7 @@ ${java.version} ${java.version} + -parameters diff --git a/bootx-platform/pom.xml b/bootx-platform/pom.xml index cb4c6e1fe..43fb53fb1 100644 --- a/bootx-platform/pom.xml +++ b/bootx-platform/pom.xml @@ -360,6 +360,7 @@ ${java.version} ${java.version} + -parameters diff --git a/daxpay-single-sdk/pom.xml b/daxpay-single-sdk/pom.xml index 1a3151403..73ea41ff5 100644 --- a/daxpay-single-sdk/pom.xml +++ b/daxpay-single-sdk/pom.xml @@ -93,10 +93,11 @@ org.apache.maven.plugins maven-compiler-plugin - 3.1 + 3.10.1 ${java.version} ${java.version} + -parameters diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferPayeeTypeEnum.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferPayeeTypeEnum.java new file mode 100644 index 000000000..a350e1e1c --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferPayeeTypeEnum.java @@ -0,0 +1,49 @@ +package cn.daxpay.single.sdk.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + +/** + * 转账接收方类型 + * @author xxm + * @since 2024/4/1 + */ +@Getter +@AllArgsConstructor +public enum TransferPayeeTypeEnum { + /** 微信 个人 */ + WX_PERSONAL("wx_personal","openid", "个人"), + /** 支付宝 userId 以2088开头的纯16位数字 */ + ALI_USER_ID("ali_user_id","ALIPAY_USERID", "用户ID"), + /** 支付宝 openId */ + ALI_OPEN_ID("ali_open_id","ALIPAY_OPENID", "openId"), + /** 支付宝 账号 支持邮箱和手机号格式 */ + ALI_LOGIN_NAME("ali_login_name","ALIPAY_LOGONID", "账号"); + + /** 编码 */ + private final String code; + /** 外部编码, 三方支付系统使用的编码 */ + private final String outCode; + /** 名称 */ + private final String name; + + /** + * 根据编码查找 + */ + public static TransferPayeeTypeEnum findByCode(String code) { + return Arrays.stream(TransferPayeeTypeEnum.values()) + .filter(e -> e.getCode().equals(code)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("未找到对应的分账接收方类型")); + } + + /** 微信支持类型 */ + public static final List WECHAT_LIST = Collections.singletonList(WX_PERSONAL); + /** 支付宝支持类型 */ + public static final List ALI_LIST = Collections.unmodifiableList(Arrays.asList(ALI_OPEN_ID, ALI_USER_ID, ALI_LOGIN_NAME)); + +} diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferStatusEnum.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferStatusEnum.java new file mode 100644 index 000000000..ccc771c97 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferStatusEnum.java @@ -0,0 +1,23 @@ +package cn.daxpay.single.sdk.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 转账状态 + * @author xxm + * @since 2024/6/11 + */ +@Getter +@AllArgsConstructor +public enum TransferStatusEnum { + + TRANSFERRING("transferring", "转账中"), + SUCCESS("success", "转账成功"), + FAIL("fail", "转账失败"), + ; + + private final String code; + private final String name; + +} diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferTypeEnum.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferTypeEnum.java new file mode 100644 index 000000000..dca00ab30 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/code/TransferTypeEnum.java @@ -0,0 +1,26 @@ +package cn.daxpay.single.sdk.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 转账类型注解 + * @author xxm + * @since 2024/6/6 + */ +@Getter +@AllArgsConstructor +public enum TransferTypeEnum { + /** 转账给用户 */ + USER("user", "转账给用户"), + /** 转账给员工 */ + EMPLOYEE("employee", "转账给员工"), + /** 转账给合作伙 */ + PARTNER("partner", "转账给合作伙"), + /** 转账给其他对象 */ + OTHER("other", "转账给其他对象"),; + + private final String code; + private final String name; + +} diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferModel.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferModel.java new file mode 100644 index 000000000..72753a9cd --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferModel.java @@ -0,0 +1,30 @@ +package cn.daxpay.single.sdk.model.transfer; + +import cn.daxpay.single.sdk.code.TransferStatusEnum; +import cn.daxpay.single.sdk.net.DaxPayResponseModel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * 转账结果 + * @author xxm + * @since 2024/6/19 + */ +@Getter +@Setter +@ToString(callSuper = true) +public class TransferModel extends DaxPayResponseModel { + + /** 商户转账号 */ + private String bizTransferNo; + + /** 转账号 */ + private String transferNo; + + /** + * 状态 + * @see TransferStatusEnum + */ + private String status; +} diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferOrderModel.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferOrderModel.java new file mode 100644 index 000000000..687beed2b --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/model/transfer/TransferOrderModel.java @@ -0,0 +1,100 @@ +package cn.daxpay.single.sdk.model.transfer; + +import cn.daxpay.single.sdk.code.PayChannelEnum; +import cn.daxpay.single.sdk.code.TransferPayeeTypeEnum; +import cn.daxpay.single.sdk.code.TransferStatusEnum; +import cn.daxpay.single.sdk.code.TransferTypeEnum; +import cn.daxpay.single.sdk.net.DaxPayResponseModel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +import java.time.LocalDateTime; + +/** + * 转账订单 + * @author xxm + * @since 2024/6/20 + */ +@Getter +@Setter +@ToString(callSuper = true) +public class TransferOrderModel extends DaxPayResponseModel { + + /** 商户转账号 */ + private String bizTransferNo; + + /** 转账号 */ + private String transferNo; + + /** 通道转账号 */ + private String outTransferNo; + + /** + * 支付通道 + * @see PayChannelEnum + */ + private String channel; + + /** 转账金额 */ + private Integer amount; + + /** 标题 */ + private String title; + + /** 转账原因/备注 */ + private String reason; + + /** + * 转账类型, 微信使用 + * @see TransferTypeEnum + */ + private String transferType; + + /** 付款方 */ + private String payer; + + /** + * 收款人类型 + * @see TransferPayeeTypeEnum + */ + private String payeeType; + + /** 收款人账号 */ + private String payeeAccount; + + /** 收款人姓名 */ + private String payeeName; + + /** + * 状态 + * @see TransferStatusEnum + */ + private String status; + + /** 成功时间 */ + private LocalDateTime successTime; + + + /** 异步通知地址 */ + private String notifyUrl; + + /** 商户扩展参数,回调时会原样返回, 以最后一次为准 */ + private String attach; + + /** 请求时间,时间戳转时间 */ + private LocalDateTime reqTime; + + /** 终端ip */ + private String clientIp; + + /** + * 错误码 + */ + private String errorCode; + + /** + * 错误原因 + */ + private String errorMsg; +} diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/QueryTransferParam.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/QueryTransferParam.java new file mode 100644 index 000000000..483554da0 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/QueryTransferParam.java @@ -0,0 +1,43 @@ +package cn.daxpay.single.sdk.param.transfer; + +import cn.daxpay.single.sdk.model.transfer.TransferOrderModel; +import cn.daxpay.single.sdk.net.DaxPayRequest; +import cn.daxpay.single.sdk.response.DaxPayResult; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.json.JSONUtil; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * + * @author xxm + * @since 2024/6/20 + */ +@Getter +@Setter +@ToString(callSuper = true) +public class QueryTransferParam extends DaxPayRequest { + + /** 商户转账号 */ + private String bizTransferNo; + + /** 转账号 */ + private String transferNo; + + /** + * 方法请求路径 + */ + @Override + public String path() { + return "/unipay/query/transfer"; + } + + /** + * 将请求返回结果反序列化为实体类 + */ + @Override + public DaxPayResult toModel(String json) { + return JSONUtil.toBean(json, new TypeReference>() {}, false); + } +} diff --git a/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/TransferParam.java b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/TransferParam.java new file mode 100644 index 000000000..55539eaa0 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/daxpay/single/sdk/param/transfer/TransferParam.java @@ -0,0 +1,83 @@ +package cn.daxpay.single.sdk.param.transfer; + +import cn.daxpay.single.sdk.code.PayChannelEnum; +import cn.daxpay.single.sdk.code.TransferPayeeTypeEnum; +import cn.daxpay.single.sdk.code.TransferTypeEnum; +import cn.daxpay.single.sdk.model.transfer.TransferModel; +import cn.daxpay.single.sdk.net.DaxPayRequest; +import cn.daxpay.single.sdk.response.DaxPayResult; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.json.JSONUtil; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * 转账参数 + * @author xxm + * @since 2024/6/19 + */ +@Getter +@Setter +@ToString(callSuper = true) +public class TransferParam extends DaxPayRequest { + + /** 商户转账号 */ + private String bizTransferNo; + + /** + * 支付通道 + * @see PayChannelEnum + */ + private String channel; + + /** 转账金额 */ + private Integer amount; + + /** 标题 */ + private String title; + + /** 转账原因/备注 */ + private String reason; + + /** + * 转账类型, 微信使用 + * @see TransferTypeEnum + */ + private String transferType; + + + /** + * 收款人账号类型 + * @see TransferPayeeTypeEnum + */ + private String payeeType; + + /** 收款人账号 */ + private String payeeAccount; + + /** 收款人姓名 */ + private String payeeName; + + /** 回调通知地址 */ + private String notifyUrl; + + /** 商户扩展参数,回调时会原样返回 */ + private String attach; + + /** + * 方法请求路径 + */ + @Override + public String path() { + return "/unipay/transfer"; + } + + /** + * 将请求返回结果反序列化为实体类 + */ + @Override + public DaxPayResult toModel(String json) { + return JSONUtil.toBean(json, new TypeReference>() {}, false); + } +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/result/transfer/TransferResult.java b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/result/transfer/TransferResult.java index 4b8c9d129..9d3791068 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/result/transfer/TransferResult.java +++ b/daxpay-single/daxpay-single-core/src/main/java/cn/daxpay/single/core/result/transfer/TransferResult.java @@ -32,6 +32,4 @@ public class TransferResult extends PaymentCommonResult { */ @Schema(description = "状态") private String status; - - }