diff --git a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/extra/AliPayAuthService.java b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/extra/AliPayAuthService.java index 7da5b8d0..e35de6bc 100644 --- a/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/extra/AliPayAuthService.java +++ b/daxpay-single-channel/daxpay-single-alipay/src/main/java/org/dromara/daxpay/channel/alipay/service/extra/AliPayAuthService.java @@ -48,7 +48,7 @@ public class AliPayAuthService { // 授权地址 String serverUrl = platformConfig.getGatewayMobileUrl(); - String authUrl = StrUtil.format("{}/alipay/auth/{}/{}/{}/{}", + String authUrl = StrUtil.format("{}/auth/alipay/{}/{}/{}/{}", serverUrl, param.getAppId(),param.getChannel(),queryCode,aliPayConfig.getAliAppId()); return new AuthUrlResult().setAuthUrl(authUrl).setQueryCode(queryCode); diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java index e2f03e69..f6631190 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/service/assist/WechatAuthService.java @@ -55,7 +55,7 @@ public class WechatAuthService { } // 生产链接, 授权成功后重定向h5段用于获取授权码的页面, 获取成功后页面自动关闭 String queryCode = RandomUtil.randomString(10); - String redirectUrl = StrUtil.format("{}/wechat/auth/{}/{}/{}", serverUrl, param.getAppId(), param.getChannel(), queryCode); + String redirectUrl = StrUtil.format("{}/auth/wechat/{}/{}/{}", serverUrl, param.getAppId(), param.getChannel(), queryCode); String authUrl = wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); return new AuthUrlResult().setAuthUrl(authUrl).setQueryCode(queryCode); } diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/code/ChannelAuthStatusEnum.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/code/ChannelAuthStatusEnum.java new file mode 100644 index 00000000..68aa9eb6 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/code/ChannelAuthStatusEnum.java @@ -0,0 +1,24 @@ +package org.dromara.daxpay.single.sdk.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * 通道认证状态 + * @author xxm + * @since 2024/9/24 + */ +@Getter +@AllArgsConstructor +public enum ChannelAuthStatusEnum { + + /** 获取中 */ + WAITING("waiting"), + /** 获取成功 */ + SUCCESS("success"), + /** 数据不存在 */ + NOT_EXIST("not_exist"); + + private final String code; + +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/code/CheckoutTypeEnum.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/code/CheckoutTypeEnum.java new file mode 100644 index 00000000..13a723e0 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/code/CheckoutTypeEnum.java @@ -0,0 +1,34 @@ +package org.dromara.daxpay.single.sdk.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Objects; + +/** + * 收银台类型 + * @author xxm + * @since 2024/11/26 + */ +@Getter +@AllArgsConstructor +public enum CheckoutTypeEnum { + + H5("h5", "H5"), + PC("pc", "PC"), + MINI_APP("mini_app", "小程序"), + AGGREGATE("aggregate", "聚合扫码"), + ; + + private final String code; + private final String name; + + public static CheckoutTypeEnum findBuyCode(String code){ + return Arrays.stream(values()) + .filter(value -> Objects.equals(value.getCode(), code)) + .findFirst() + .orElseThrow(() -> new IllegalStateException("不支持的收银台类型")); + + } +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/AuthModel.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/AuthModel.java new file mode 100644 index 00000000..134d04cc --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/AuthModel.java @@ -0,0 +1,36 @@ +package org.dromara.daxpay.single.sdk.model.assist; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import org.dromara.daxpay.single.sdk.code.ChannelAuthStatusEnum; + +/** + * 认证结果 + * @author xxm + * @since 2024/12/3 + */ +@Data +public class AuthModel { + + @Schema(description = "OpenId") + private String openId; + + /** + * 支付宝存量商户部分返回的是用户ID + */ + @Schema(description = "用户ID") + private String userId; + + /** + * 微信会返回accessToken,用于获取用户信息 + */ + @Schema(description = "AccessToken") + private String accessToken; + + /** + * 状态 + * @see ChannelAuthStatusEnum + */ + @Schema(description = "状态") + private String status; +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/AuthUrlModel.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/AuthUrlModel.java new file mode 100644 index 00000000..b2b32a1e --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/AuthUrlModel.java @@ -0,0 +1,22 @@ +package org.dromara.daxpay.single.sdk.model.assist; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 获取OpenId授权链接和查询标识返回类 + * @author xxm + * @since 2024/12/3 + */ +@Data +public class AuthUrlModel { + + + /** 授权访问链接 */ + @Schema(description = "授权访问链接") + private String authUrl; + + /** 查询标识码, 用于查询是否获取到了OpenId */ + @Schema(description = "查询标识码") + private String queryCode; +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/WxAccessTokenModel.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/WxAccessTokenModel.java deleted file mode 100644 index c6b1e4cd..00000000 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/WxAccessTokenModel.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.dromara.daxpay.single.sdk.model.assist; - -import lombok.Data; - -/** - * 微信AccessToken - * @author xxm - * @since 2024/2/10 - */ -@Data -public class WxAccessTokenModel{ - - /** 微信AccessToken, 目前无返回 */ - private String accessToken; - - /** 微信用户唯一标识 */ - private String openId; -} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/WxAuthUrlModel.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/WxAuthUrlModel.java deleted file mode 100644 index 330775c4..00000000 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/assist/WxAuthUrlModel.java +++ /dev/null @@ -1,15 +0,0 @@ -package org.dromara.daxpay.single.sdk.model.assist; - -import lombok.Data; - -/** - * 微信oauth2授权的url连接 - * @author xxm - * @since 2024/2/10 - */ -@Data -public class WxAuthUrlModel{ - - /** 微信oauth2授权的url连接 */ - private String url; -} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/trade/pay/CheckoutUrlModel.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/trade/pay/CheckoutUrlModel.java new file mode 100644 index 00000000..e1fa8274 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/model/trade/pay/CheckoutUrlModel.java @@ -0,0 +1,16 @@ +package org.dromara.daxpay.single.sdk.model.trade.pay; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +/** + * 收银台响应参数 + * @author xxm + * @since 2024/12/3 + */ +@Data +public class CheckoutUrlModel { + @Schema(description = "收银台链接") + private String url; + +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/net/DaxPayRequest.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/net/DaxPayRequest.java index ca9bce22..8f626d08 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/net/DaxPayRequest.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/net/DaxPayRequest.java @@ -1,8 +1,7 @@ package org.dromara.daxpay.single.sdk.net; +import lombok.Data; import org.dromara.daxpay.single.sdk.response.DaxPayResult; -import lombok.Getter; -import lombok.Setter; import java.time.LocalDateTime; @@ -11,8 +10,7 @@ import java.time.LocalDateTime; * @author xxm * @since 2024/2/2 */ -@Getter -@Setter +@Data public abstract class DaxPayRequest { /** 应用号 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/allocation/AllocReceiverAddParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/allocation/AllocReceiverAddParam.java index 014e7176..b4aeb048 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/allocation/AllocReceiverAddParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/allocation/AllocReceiverAddParam.java @@ -1,16 +1,16 @@ package org.dromara.daxpay.single.sdk.param.allocation; -import org.dromara.daxpay.single.sdk.code.AllocReceiverTypeEnum; -import org.dromara.daxpay.single.sdk.code.AllocRelationTypeEnum; -import org.dromara.daxpay.single.sdk.code.ChannelEnum; -import org.dromara.daxpay.single.sdk.net.DaxPayRequest; -import org.dromara.daxpay.single.sdk.response.DaxPayResult; -import org.dromara.daxpay.single.sdk.model.allocation.AllocReceiverAddModel; -import org.dromara.daxpay.single.sdk.util.JsonUtil; import cn.hutool.core.lang.TypeReference; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.code.AllocReceiverTypeEnum; +import org.dromara.daxpay.single.sdk.code.AllocRelationTypeEnum; +import org.dromara.daxpay.single.sdk.code.ChannelEnum; +import org.dromara.daxpay.single.sdk.model.allocation.AllocReceiverAddModel; +import org.dromara.daxpay.single.sdk.net.DaxPayRequest; +import org.dromara.daxpay.single.sdk.response.DaxPayResult; +import org.dromara.daxpay.single.sdk.util.JsonUtil; /** * 分账接收者添加参数 diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/allocation/QueryAllocReceiverParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/allocation/QueryAllocReceiverParam.java index c6467b62..03351b92 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/allocation/QueryAllocReceiverParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/allocation/QueryAllocReceiverParam.java @@ -1,20 +1,22 @@ package org.dromara.daxpay.single.sdk.param.allocation; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.model.allocation.AllocReceiverModel; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; /** * 分账接收方列表参数 * @author xxm * @since 2024/5/21 */ -@Getter -@Setter +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class QueryAllocReceiverParam extends DaxPayRequest { /** 分账通道 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/AuthAndSetParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/AuthAndSetParam.java new file mode 100644 index 00000000..2b9205ec --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/AuthAndSetParam.java @@ -0,0 +1,52 @@ +package org.dromara.daxpay.single.sdk.param.assist; + +import cn.hutool.core.lang.TypeReference; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.net.DaxPayRequest; +import org.dromara.daxpay.single.sdk.response.DaxPayResult; +import org.dromara.daxpay.single.sdk.util.JsonUtil; + +/** + * 设置认证信息请求参数, 次参数不需要进行签名验证, 通过查询码进行认证信息的查询, 主要拥有内部系统使用的场景 + * @author xxm + * @since 2024/12/3 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class AuthAndSetParam extends DaxPayRequest { + + @Schema(description = "支付通道") + private String channel; + + @Schema(description = "认证标识码") + private String authCode; + + /** 用于查询Code值, 不可为空 */ + @Schema(description = "查询码") + private String queryCode; + + /** + * 方法请求路径 + * + * @return 请求路径 + */ + @Override + public String path() { + return "/assist/channel/auth/authAndSet"; + } + + /** + * 将请求返回结果反序列化为实体类 + * + * @param json json字符串 + * @return 反序列后的对象 + */ + @Override + public DaxPayResult toModel(String json) { + return JsonUtil.toBean(json, new TypeReference>() {}); + } +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/AuthCodeParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/AuthCodeParam.java new file mode 100644 index 00000000..fcdcdbaf --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/AuthCodeParam.java @@ -0,0 +1,54 @@ +package org.dromara.daxpay.single.sdk.param.assist; + +import cn.hutool.core.lang.TypeReference; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.model.assist.AuthModel; +import org.dromara.daxpay.single.sdk.net.DaxPayRequest; +import org.dromara.daxpay.single.sdk.response.DaxPayResult; +import org.dromara.daxpay.single.sdk.util.JsonUtil; + +/** + * 获取认证信息请求参数 + * @author xxm + * @since 2024/12/3 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class AuthCodeParam extends DaxPayRequest { + + + @Schema(description = "支付通道") + private String channel; + + @Schema(description = "认证标识码") + private String authCode; + + /** 用于查询Code值, 可以为空 */ + @Schema(description = "查询码") + private String queryCode; + + /** + * 方法请求路径 + * + * @return 请求路径 + */ + @Override + public String path() { + return "/assist/channel/auth/auth"; + } + + /** + * 将请求返回结果反序列化为实体类 + * + * @param json json字符串 + * @return 反序列后的对象 + */ + @Override + public DaxPayResult toModel(String json) { + return JsonUtil.toBean(json, new TypeReference>() {}); + } +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/GenerateAuthUrlParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/GenerateAuthUrlParam.java new file mode 100644 index 00000000..e6cb1fbf --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/assist/GenerateAuthUrlParam.java @@ -0,0 +1,55 @@ +package org.dromara.daxpay.single.sdk.param.assist; + +import cn.hutool.core.lang.TypeReference; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.model.assist.AuthUrlModel; +import org.dromara.daxpay.single.sdk.net.DaxPayRequest; +import org.dromara.daxpay.single.sdk.response.DaxPayResult; +import org.dromara.daxpay.single.sdk.util.JsonUtil; + +/** + * 生成授权链接参数 + * @author xxm + * @since 2024/12/3 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class GenerateAuthUrlParam extends DaxPayRequest { + + /** + * 支付通道 + */ + @Schema(description = "支付通道") + private String channel; + + /** + * 自定义授权重定向地址, 如果不传, 使用系统提供的默认地址 + */ + @Schema(description = "授权重定向地址") + private String authRedirectUrl; + + /** + * 方法请求路径 + * + * @return 请求路径 + */ + @Override + public String path() { + return "/assist/channel/auth/generateAuthUrl"; + } + + /** + * 将请求返回结果反序列化为实体类 + * + * @param json json字符串 + * @return 反序列后的对象 + */ + @Override + public DaxPayResult toModel(String json) { + return JsonUtil.toBean(json, new TypeReference>() {}); + } +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/AlipayParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/AlipayParam.java index b0ea564d..a93f76c5 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/AlipayParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/AlipayParam.java @@ -1,16 +1,16 @@ package org.dromara.daxpay.single.sdk.param.channel; +import lombok.Data; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.param.ChannelParam; -import lombok.Getter; -import lombok.Setter; /** * 支付宝支付参数 * @author xxm * @since 2021/2/27 */ -@Getter -@Setter +@Data +@Accessors(chain = true) public class AlipayParam implements ChannelParam { /** diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/UnionPayParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/UnionPayParam.java index 1712181e..063a2d93 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/UnionPayParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/UnionPayParam.java @@ -1,16 +1,16 @@ package org.dromara.daxpay.single.sdk.param.channel; +import lombok.Data; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.param.ChannelParam; -import lombok.Getter; -import lombok.Setter; /** * 云闪付参数 * @author xxm * @since 2024/3/13 */ -@Getter -@Setter +@Data +@Accessors(chain = true) public class UnionPayParam implements ChannelParam { /** 授权码(主动扫描用户的付款码) */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/WechatPayParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/WechatPayParam.java index f5355fac..f69d6b83 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/WechatPayParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/channel/WechatPayParam.java @@ -1,16 +1,16 @@ package org.dromara.daxpay.single.sdk.param.channel; +import lombok.Data; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.param.ChannelParam; -import lombok.Getter; -import lombok.Setter; /** * 微信支付参数 * @author xxm * @since 2021/6/21 */ -@Getter -@Setter +@Data +@Accessors(chain = true) public class WechatPayParam implements ChannelParam { /** 微信openId */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/reconcile/ChannelReconcileDownParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/reconcile/ChannelReconcileDownParam.java index 3e3ad8ae..6d5d5667 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/reconcile/ChannelReconcileDownParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/reconcile/ChannelReconcileDownParam.java @@ -1,5 +1,6 @@ package org.dromara.daxpay.single.sdk.param.reconcile; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; import org.dromara.daxpay.single.sdk.model.reconcile.ReconcileDownModel; @@ -18,7 +19,7 @@ import java.time.LocalDate; */ @EqualsAndHashCode(callSuper = true) @Data -@Schema(title = "对账下载参数") +@Accessors(chain = true) public class ChannelReconcileDownParam extends DaxPayRequest { @Schema(description = "通道") private String channel; diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/reconcile/PlatformReconcileDownParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/reconcile/PlatformReconcileDownParam.java index 0c13c8fb..197b89ab 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/reconcile/PlatformReconcileDownParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/reconcile/PlatformReconcileDownParam.java @@ -1,5 +1,8 @@ package org.dromara.daxpay.single.sdk.param.reconcile; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; import org.dromara.daxpay.single.sdk.model.reconcile.ReconcileDownModel; @@ -14,6 +17,9 @@ import java.time.LocalDate; * @author xxm * @since 2024/8/21 */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class PlatformReconcileDownParam extends DaxPayRequest { @Schema(description = "通道") private String channel; diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/CheckoutCreatParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/CheckoutCreatParam.java new file mode 100644 index 00000000..307434f9 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/CheckoutCreatParam.java @@ -0,0 +1,101 @@ +package org.dromara.daxpay.single.sdk.param.trade.pay; + +import cn.hutool.core.lang.TypeReference; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.Size; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.code.CheckoutTypeEnum; +import org.dromara.daxpay.single.sdk.model.trade.pay.CheckoutUrlModel; +import org.dromara.daxpay.single.sdk.net.DaxPayRequest; +import org.dromara.daxpay.single.sdk.response.DaxPayResult; +import org.dromara.daxpay.single.sdk.util.JsonUtil; + +import java.math.BigDecimal; +import java.time.LocalDateTime; + +/** + * 收银台创建参数 + * @author xxm + * @since 2024/12/3 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) +public class CheckoutCreatParam extends DaxPayRequest { + + /** + * 收银台类型 + * @see CheckoutTypeEnum + */ + @Size(max = 100, message = "收银台类型不可超过32位") + private String checkoutType; + + /** 商户订单号 */ + @Schema(description = "商户订单号") + private String bizOrderNo; + + /** 支付标题 */ + @Schema(description = "支付标题") + private String title; + + /** 支付描述 */ + @Schema(description = "支付描述") + private String description; + + /** 是否开启分账 */ + @Schema(description = "是否开启分账") + private Boolean allocation; + + /** 自动分账 */ + @Schema(description = "自动分账") + private Boolean autoAllocation; + + /** 过期时间 */ + @Schema(description = "过期时间") + private LocalDateTime expiredTime; + + /** 支付金额 */ + @Schema(description = "支付金额") + private BigDecimal amount; + + /** + * 支付扩展参数 + */ + @Schema(description = "支付扩展参数") + private String extraParam; + + /** 商户扩展参数,回调时会原样返回 */ + @Schema(description = "商户扩展参数") + private String attach; + + /** 同步跳转地址, 支付完毕后用户浏览器返回到该地址, 不传输跳转到默认地址 */ + @Schema(description = "同步通知URL") + private String returnUrl; + + /** 异步通知地址 */ + @Schema(description = "异步通知地址") + private String notifyUrl; + + /** + * 方法请求路径 + * + * @return 请求路径 + */ + @Override + public String path() { + return "/unipay/checkout/creat"; + } + + /** + * 将请求返回结果反序列化为实体类 + * + * @param json json字符串 + * @return 反序列后的对象 + */ + @Override + public DaxPayResult toModel(String json) { + return JsonUtil.toBean(json, new TypeReference>() {}); + } +} diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayCloseParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayCloseParam.java index b07f6163..581378f0 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayCloseParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayCloseParam.java @@ -1,19 +1,21 @@ package org.dromara.daxpay.single.sdk.param.trade.pay; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; /** * 支付关闭参数 * @author xxm * @since 2023/12/17 */ -@Getter -@Setter +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class PayCloseParam extends DaxPayRequest { /** diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayParam.java index d927cd28..3e57b074 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayParam.java @@ -1,16 +1,17 @@ package org.dromara.daxpay.single.sdk.param.trade.pay; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.code.ChannelEnum; import org.dromara.daxpay.single.sdk.code.PayMethodEnum; +import org.dromara.daxpay.single.sdk.model.trade.pay.PayResultModel; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.param.channel.AlipayParam; import org.dromara.daxpay.single.sdk.param.channel.WechatPayParam; import org.dromara.daxpay.single.sdk.response.DaxPayResult; -import org.dromara.daxpay.single.sdk.model.trade.pay.PayResultModel; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -20,8 +21,9 @@ import java.time.LocalDateTime; * @author xxm * @since 2024/2/2 */ -@Getter -@Setter +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class PayParam extends DaxPayRequest { /** 商户订单号 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayQueryParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayQueryParam.java index f3d82a47..defa72a5 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayQueryParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PayQueryParam.java @@ -1,5 +1,6 @@ package org.dromara.daxpay.single.sdk.param.trade.pay; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; import org.dromara.daxpay.single.sdk.model.trade.pay.PayOrderModel; @@ -15,6 +16,7 @@ import lombok.EqualsAndHashCode; */ @EqualsAndHashCode(callSuper = true) @Data +@Accessors(chain = true) public class PayQueryParam extends DaxPayRequest { /** 订单号 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PaySyncParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PaySyncParam.java index 6bdd80c7..4b738918 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PaySyncParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/pay/PaySyncParam.java @@ -1,20 +1,22 @@ package org.dromara.daxpay.single.sdk.param.trade.pay; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.model.trade.pay.PaySyncModel; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; -import org.dromara.daxpay.single.sdk.model.trade.pay.PaySyncModel; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; /** *支付同步参数 * @author xxm * @since 2024/2/5 */ -@Getter -@Setter +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class PaySyncParam extends DaxPayRequest { /** 订单号 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundParam.java index 40da8efd..5279b526 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundParam.java @@ -1,17 +1,17 @@ package org.dromara.daxpay.single.sdk.param.trade.refund; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.model.trade.refund.RefundModel; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.param.ChannelParam; import org.dromara.daxpay.single.sdk.param.channel.AlipayParam; import org.dromara.daxpay.single.sdk.param.channel.UnionPayParam; import org.dromara.daxpay.single.sdk.param.channel.WechatPayParam; import org.dromara.daxpay.single.sdk.response.DaxPayResult; -import org.dromara.daxpay.single.sdk.model.trade.refund.RefundModel; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; import java.math.BigDecimal; @@ -20,9 +20,9 @@ import java.math.BigDecimal; * @author xxm * @since 2023/12/18 */ -@Getter -@Setter -@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class RefundParam extends DaxPayRequest { diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundQueryParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundQueryParam.java index 370fd535..739a55a1 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundQueryParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundQueryParam.java @@ -1,5 +1,6 @@ package org.dromara.daxpay.single.sdk.param.trade.refund; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; import org.dromara.daxpay.single.sdk.model.trade.refund.RefundOrderModel; @@ -15,6 +16,7 @@ import lombok.EqualsAndHashCode; */ @EqualsAndHashCode(callSuper = true) @Data +@Accessors(chain = true) public class RefundQueryParam extends DaxPayRequest { diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundSyncParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundSyncParam.java index 68a8be9b..89218929 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundSyncParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/refund/RefundSyncParam.java @@ -1,20 +1,22 @@ package org.dromara.daxpay.single.sdk.param.trade.refund; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.model.trade.refund.RefundSyncModel; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; -import org.dromara.daxpay.single.sdk.model.trade.refund.RefundSyncModel; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; /** * 退款同步参数 * @author xxm * @since 2024/2/7 */ -@Getter -@Setter +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class RefundSyncParam extends DaxPayRequest { /** 退款号 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferParam.java index 92ad5618..4dc87055 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferParam.java @@ -1,15 +1,15 @@ package org.dromara.daxpay.single.sdk.param.trade.transfer; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.code.ChannelEnum; import org.dromara.daxpay.single.sdk.code.TransferPayeeTypeEnum; +import org.dromara.daxpay.single.sdk.model.trade.transfer.TransferModel; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; -import org.dromara.daxpay.single.sdk.model.trade.transfer.TransferModel; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; import java.math.BigDecimal; @@ -18,9 +18,9 @@ import java.math.BigDecimal; * @author xxm * @since 2024/6/19 */ -@Getter -@Setter -@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class TransferParam extends DaxPayRequest { /** 商户转账号 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferQueryParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferQueryParam.java index c415146a..ff6f83ed 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferQueryParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferQueryParam.java @@ -1,22 +1,22 @@ package org.dromara.daxpay.single.sdk.param.trade.transfer; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; +import org.dromara.daxpay.single.sdk.model.trade.transfer.TransferOrderModel; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; -import org.dromara.daxpay.single.sdk.model.trade.transfer.TransferOrderModel; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; /** * * @author xxm * @since 2024/6/20 */ -@Getter -@Setter -@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class TransferQueryParam extends DaxPayRequest { /** 商户转账号 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferSyncParam.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferSyncParam.java index 2be454ae..ce5c2d12 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferSyncParam.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/param/trade/transfer/TransferSyncParam.java @@ -1,20 +1,22 @@ package org.dromara.daxpay.single.sdk.param.trade.transfer; +import cn.hutool.core.lang.TypeReference; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; import org.dromara.daxpay.single.sdk.model.trade.refund.RefundSyncModel; import org.dromara.daxpay.single.sdk.net.DaxPayRequest; import org.dromara.daxpay.single.sdk.response.DaxPayResult; import org.dromara.daxpay.single.sdk.util.JsonUtil; -import cn.hutool.core.lang.TypeReference; -import lombok.Getter; -import lombok.Setter; /** * 转账订单同步参数 * @author xxm * @since 2024/2/7 */ -@Getter -@Setter +@EqualsAndHashCode(callSuper = true) +@Data +@Accessors(chain = true) public class TransferSyncParam extends DaxPayRequest { /** 商户转账号 */ diff --git a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/response/DaxPayResult.java b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/response/DaxPayResult.java index 48ebc542..511ce04b 100644 --- a/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/response/DaxPayResult.java +++ b/daxpay-single-sdk/src/main/java/org/dromara/daxpay/single/sdk/response/DaxPayResult.java @@ -1,9 +1,7 @@ package org.dromara.daxpay.single.sdk.response; import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Getter; -import lombok.Setter; -import lombok.ToString; +import lombok.Data; import java.time.LocalDateTime; @@ -12,9 +10,7 @@ import java.time.LocalDateTime; * @author xxm * @since 2024/2/2 */ -@Getter -@Setter -@ToString +@Data public class DaxPayResult { /** 状态码 */ diff --git a/daxpay-single-sdk/src/test/java/org/dromara/daxpay/single/sdk/test/assist/AuthAssistTest.java b/daxpay-single-sdk/src/test/java/org/dromara/daxpay/single/sdk/test/assist/AuthAssistTest.java new file mode 100644 index 00000000..dbde2f2c --- /dev/null +++ b/daxpay-single-sdk/src/test/java/org/dromara/daxpay/single/sdk/test/assist/AuthAssistTest.java @@ -0,0 +1,75 @@ +package org.dromara.daxpay.single.sdk.test.assist; + +import org.dromara.daxpay.single.sdk.code.ChannelEnum; +import org.dromara.daxpay.single.sdk.code.SignTypeEnum; +import org.dromara.daxpay.single.sdk.model.assist.AuthModel; +import org.dromara.daxpay.single.sdk.model.assist.AuthUrlModel; +import org.dromara.daxpay.single.sdk.net.DaxPayConfig; +import org.dromara.daxpay.single.sdk.net.DaxPayKit; +import org.dromara.daxpay.single.sdk.param.assist.AuthAndSetParam; +import org.dromara.daxpay.single.sdk.param.assist.AuthCodeParam; +import org.dromara.daxpay.single.sdk.param.assist.GenerateAuthUrlParam; +import org.dromara.daxpay.single.sdk.response.DaxPayResult; +import org.dromara.daxpay.single.sdk.util.JsonUtil; +import org.junit.Before; +import org.junit.Test; + +/** + * 认证服务测试类 + * @author xxm + * @since 2024/12/3 + */ +public class AuthAssistTest { + @Before + public void init() { + // 初始化支付配置 + DaxPayConfig config = DaxPayConfig.builder() + .serviceUrl("http://127.0.0.1:9999") + .signSecret("123456") + .appId("M7934041241299655") + .signType(SignTypeEnum.HMAC_SHA256) + .build(); + DaxPayKit.initConfig(config); + } + + /** + * 获取认证链接 + */ + @Test + public void generateAuthUrl(){ + GenerateAuthUrlParam param = new GenerateAuthUrlParam(); + param.setChannel(ChannelEnum.WECHAT.getCode()); + param.setClientIp("127.0.0.1"); + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(JsonUtil.toJsonStr(execute)); + } + + /** + * 获取认证信息 + */ + @Test + public void auth(){ + AuthCodeParam param = new AuthCodeParam(); + param.setChannel(ChannelEnum.WECHAT.getCode()); + param.setAuthCode("auth"); + param.setClientIp("127.0.0.1"); + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(JsonUtil.toJsonStr(execute)); + } + + /** + * 设置认证信息. 不需要签名 + */ + @Test + public void authAndSet(){ + AuthAndSetParam param = new AuthAndSetParam(); + param.setChannel(ChannelEnum.WECHAT.getCode()); + param.setAuthCode("auth"); + param.setQueryCode("query13585312378555"); + param.setClientIp("127.0.0.1"); + DaxPayResult execute = DaxPayKit.execute(param,false); + System.out.println(JsonUtil.toJsonStr(execute)); + } + + +} diff --git a/daxpay-single-sdk/src/test/java/org/dromara/daxpay/single/sdk/test/trade/CheckoutPayTest.java b/daxpay-single-sdk/src/test/java/org/dromara/daxpay/single/sdk/test/trade/CheckoutPayTest.java new file mode 100644 index 00000000..406bbc63 --- /dev/null +++ b/daxpay-single-sdk/src/test/java/org/dromara/daxpay/single/sdk/test/trade/CheckoutPayTest.java @@ -0,0 +1,57 @@ +package org.dromara.daxpay.single.sdk.test.trade; + +import org.dromara.daxpay.single.sdk.code.CheckoutTypeEnum; +import org.dromara.daxpay.single.sdk.code.SignTypeEnum; +import org.dromara.daxpay.single.sdk.model.trade.pay.CheckoutUrlModel; +import org.dromara.daxpay.single.sdk.net.DaxPayConfig; +import org.dromara.daxpay.single.sdk.net.DaxPayKit; +import org.dromara.daxpay.single.sdk.param.trade.pay.CheckoutCreatParam; +import org.dromara.daxpay.single.sdk.response.DaxPayResult; +import org.dromara.daxpay.single.sdk.util.JsonUtil; +import org.dromara.daxpay.single.sdk.util.PaySignUtil; +import org.junit.Before; +import org.junit.Test; + +import java.math.BigDecimal; + +/** + * 收银台测试类 + * @author xxm + * @since 2024/12/3 + */ +public class CheckoutPayTest { + + @Before + public void init() { + // 初始化支付配置 + DaxPayConfig config = DaxPayConfig.builder() + .serviceUrl("http://127.0.0.1:9999") + .signSecret("123456") + .appId("M7934041241299655") + .signType(SignTypeEnum.HMAC_SHA256) + .build(); + DaxPayKit.initConfig(config); + } + + /** + * 获取收银台链接 + */ + @Test + public void creatCheck() { + CheckoutCreatParam param = new CheckoutCreatParam(); + param.setClientIp("127.0.0.1"); + param.setBizOrderNo("SDK_"+ System.currentTimeMillis()); + param.setTitle("测试收银台支付"); + param.setDescription("这是支付备注"); + param.setCheckoutType(CheckoutTypeEnum.AGGREGATE.getCode()); + param.setAmount(BigDecimal.valueOf(1.00)); + param.setAttach("{回调参数}"); + param.setAllocation(false); + param.setReturnUrl("https://abc.com/returnurl"); + param.setNotifyUrl("http://127.0.0.1:10880/test/callback/notify"); + + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(JsonUtil.toJsonStr(execute)); + System.out.println(PaySignUtil.hmacSha256Sign(execute, "123456")); + } +} diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutAggregateEnum.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutAggregateEnum.java index 305ef678..fbf5a3f5 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutAggregateEnum.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/enums/CheckoutAggregateEnum.java @@ -17,7 +17,7 @@ import java.util.Objects; @AllArgsConstructor public enum CheckoutAggregateEnum { - WECHAT("wechat", "微信支付"), + WECHAT("wechat_pay", "微信支付"), ALIPAY("alipay", "支付宝"), ; diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAggregatePayParam.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAggregatePayParam.java index ed8883d8..df0f0341 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAggregatePayParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAggregatePayParam.java @@ -1,6 +1,8 @@ package org.dromara.daxpay.core.param.checkout; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Size; import lombok.Data; import lombok.experimental.Accessors; import org.dromara.daxpay.core.enums.CheckoutAggregateEnum; @@ -15,17 +17,23 @@ import org.dromara.daxpay.core.enums.CheckoutAggregateEnum; @Schema(title = "收银台聚合支付参数") public class CheckoutAggregatePayParam { - @Schema(description = "要支付的订单号") + /** 支付订单号 */ + @NotBlank(message = "支付订单号不可为空") + @Size(max = 32, message = "支付订单号不可超过32位") + @Schema(description = "支付订单号") private String orderNo; /** * 聚合支付类型 * @see CheckoutAggregateEnum */ + @NotBlank(message = "聚合支付类型不可为空") @Schema(description = "聚合支付类型") private String aggregateType; - @Schema(description = "唯一标识") + /** 用户唯一标识 */ + @Size(max = 1024, message = "唯一标识不可超过1024位") + @Schema(description = "用户唯一标识") private String openId; } diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthCodeParam.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthCodeParam.java index 19704c66..234e7cca 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthCodeParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutAuthCodeParam.java @@ -1,6 +1,7 @@ package org.dromara.daxpay.core.param.checkout; import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotBlank; import lombok.Data; import lombok.experimental.Accessors; import org.dromara.daxpay.core.enums.CheckoutAggregateEnum; @@ -15,8 +16,9 @@ import org.dromara.daxpay.core.enums.CheckoutAggregateEnum; @Schema(title = "获取收银台认证结果参数") public class CheckoutAuthCodeParam { - /** 要支付的订单号 */ - @Schema(description = "要支付的订单号") + /** 支付订单号 */ + @NotBlank(message = "支付订单号不可为空") + @Schema(description = "支付订单号") private String orderNo; /** diff --git a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutCreatParam.java b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutCreatParam.java index 2484ef04..40590ead 100644 --- a/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutCreatParam.java +++ b/daxpay-single/daxpay-single-core/src/main/java/org/dromara/daxpay/core/param/checkout/CheckoutCreatParam.java @@ -28,6 +28,7 @@ public class CheckoutCreatParam extends PaymentCommonParam { * 收银台类型 * @see CheckoutTypeEnum */ + @Size(max = 100, message = "收银台类型不可超过32位") @NotBlank(message = "收银台类型不可为空") private String checkoutType; diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/ChannelUniAuthController.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/ChannelUniAuthController.java index 3b90cfd4..c543f1df 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/ChannelUniAuthController.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/ChannelUniAuthController.java @@ -3,7 +3,9 @@ package org.dromara.daxpay.service.controller.unipay; import cn.bootx.platform.core.annotation.IgnoreAuth; import cn.bootx.platform.core.rest.Res; import cn.bootx.platform.core.rest.result.Result; -import cn.bootx.platform.core.util.ValidationUtil; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; import org.dromara.daxpay.core.param.assist.AuthCodeParam; import org.dromara.daxpay.core.param.assist.GenerateAuthUrlParam; import org.dromara.daxpay.core.result.DaxResult; @@ -13,9 +15,6 @@ import org.dromara.daxpay.core.util.DaxRes; import org.dromara.daxpay.service.common.anno.PaymentVerify; import org.dromara.daxpay.service.service.assist.ChannelAuthService; import org.dromara.daxpay.service.service.assist.PaymentAssistService; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.tags.Tag; -import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -37,10 +36,10 @@ public class ChannelUniAuthController { private final PaymentAssistService paymentAssistService; + @PaymentVerify @Operation(summary = "获取授权链接") @PostMapping("/generateAuthUrl") public Result generateAuthUrl(@RequestBody GenerateAuthUrlParam param){ - ValidationUtil.validateParam(param); paymentAssistService.initMchApp(param.getAppId()); return Res.ok(channelAuthService.generateAuthUrl(param)); } diff --git a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java index c73967af..f993ee1c 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java +++ b/daxpay-single/daxpay-single-service/src/main/java/org/dromara/daxpay/service/controller/unipay/CheckoutController.java @@ -7,16 +7,14 @@ import cn.bootx.platform.core.util.ValidationUtil; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import lombok.RequiredArgsConstructor; -import org.dromara.daxpay.core.param.checkout.CheckoutAuthCodeParam; -import org.dromara.daxpay.core.param.checkout.CheckoutAuthUrlParam; -import org.dromara.daxpay.core.param.checkout.CheckoutCreatParam; -import org.dromara.daxpay.core.param.checkout.CheckoutPayParam; +import org.dromara.daxpay.core.param.checkout.*; import org.dromara.daxpay.core.result.DaxResult; import org.dromara.daxpay.core.result.assist.AuthResult; import org.dromara.daxpay.core.result.checkout.CheckoutAggregateOrderAndConfigResult; import org.dromara.daxpay.core.result.checkout.CheckoutOrderAndConfigResult; import org.dromara.daxpay.core.result.checkout.CheckoutPayResult; import org.dromara.daxpay.core.result.checkout.CheckoutUrlResult; +import org.dromara.daxpay.core.result.trade.pay.PayResult; import org.dromara.daxpay.core.util.DaxRes; import org.dromara.daxpay.service.common.anno.PaymentVerify; import org.dromara.daxpay.service.service.checkout.CheckoutQueryService; @@ -28,6 +26,7 @@ import org.springframework.web.bind.annotation.*; * @author xxm * @since 2024/11/26 */ +@IgnoreAuth @Tag(name = "收银台服务") @RestController @RequestMapping("/unipay/checkout") @@ -43,21 +42,18 @@ public class CheckoutController { return DaxRes.ok(checkoutService.creat(checkoutParam)); } - @IgnoreAuth @Operation(summary = "获取收银台订单和配置信息") @GetMapping("/getOrderAndConfig") public Result getOrderAndConfig(String orderNo, String checkoutType){ return Res.ok(checkoutQueryService.getOrderAndConfig(orderNo, checkoutType)); } - @IgnoreAuth @Operation(summary = "获取聚合支付配置") @GetMapping("/getAggregateConfig") public Result getAggregateConfig(String orderNo, String aggregateType){ return Res.ok(checkoutQueryService.getAggregateConfig(orderNo, aggregateType)); } - @IgnoreAuth @Operation(summary = "获取收银台所需授权链接, 用于获取OpenId一类的信息") @PostMapping("/generateAuthUrl") public Result generateAuthUrl(@RequestBody CheckoutAuthUrlParam param){ @@ -65,7 +61,6 @@ public class CheckoutController { return Res.ok(checkoutService.generateAuthUrl(param)); } - @IgnoreAuth @Operation(summary = "获取授权结果") @PostMapping("/auth") public Result auth(@RequestBody CheckoutAuthCodeParam param){ @@ -74,11 +69,21 @@ public class CheckoutController { } - @IgnoreAuth - @Operation(summary = "发起支付") + @Operation(summary = "发起支付(普通)") @PostMapping("/pay") - public Result pay(@RequestBody CheckoutPayParam checkoutParam){ - return Res.ok(checkoutService.pay(checkoutParam)); + public Result pay(@RequestBody CheckoutPayParam param){ + ValidationUtil.validateParam(param); + return Res.ok(checkoutService.pay(param)); } + + @Operation(summary = "发起支付(聚合)") + @PostMapping("/aggregatePay") + public Result aggregatePay(@RequestBody CheckoutAggregatePayParam param){ + ValidationUtil.validateParam(param); + return Res.ok(checkoutService.aggregatePay(param)); + } + + + }