refactor(sdk): 重构 SDK 参数和响应模型

- 更新了多个 SDK 参数和响应模型类的结构
- 优化了字段注解和数据校验
-统一了代码风格,提高了可读性和可维护性
This commit is contained in:
DaxPay
2024-12-03 17:45:44 +08:00
parent 0cc8ac4007
commit 77379828f6
40 changed files with 669 additions and 144 deletions

View File

@@ -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;
}

View File

@@ -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("不支持的收银台类型"));
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<T> {
/** 应用号 */

View File

@@ -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;
/**
* 分账接收者添加参数

View File

@@ -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<AllocReceiverModel> {
/** 分账通道 */

View File

@@ -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<Void> {
@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<Void> toModel(String json) {
return JsonUtil.toBean(json, new TypeReference<DaxPayResult<Void>>() {});
}
}

View File

@@ -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<AuthModel> {
@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<AuthModel> toModel(String json) {
return JsonUtil.toBean(json, new TypeReference<DaxPayResult<AuthModel>>() {});
}
}

View File

@@ -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<AuthUrlModel> {
/**
* 支付通道
*/
@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<AuthUrlModel> toModel(String json) {
return JsonUtil.toBean(json, new TypeReference<DaxPayResult<AuthUrlModel>>() {});
}
}

View File

@@ -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 {
/**

View File

@@ -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 {
/** 授权码(主动扫描用户的付款码) */

View File

@@ -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 */

View File

@@ -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<ReconcileDownModel> {
@Schema(description = "通道")
private String channel;

View File

@@ -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<ReconcileDownModel> {
@Schema(description = "通道")
private String channel;

View File

@@ -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<CheckoutUrlModel> {
/**
* 收银台类型
* @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<CheckoutUrlModel> toModel(String json) {
return JsonUtil.toBean(json, new TypeReference<DaxPayResult<CheckoutUrlModel>>() {});
}
}

View File

@@ -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<Void> {
/**

View File

@@ -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<PayResultModel> {
/** 商户订单号 */

View File

@@ -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<PayOrderModel> {
/** 订单号 */

View File

@@ -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<PaySyncModel> {
/** 订单号 */

View File

@@ -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<RefundModel> {

View File

@@ -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<RefundOrderModel> {

View File

@@ -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<RefundSyncModel> {
/** 退款号 */

View File

@@ -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<TransferModel> {
/** 商户转账号 */

View File

@@ -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<TransferOrderModel> {
/** 商户转账号 */

View File

@@ -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<RefundSyncModel> {
/** 商户转账号 */

View File

@@ -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<T> {
/** 状态码 */

View File

@@ -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<AuthUrlModel> 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<AuthModel> 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<Void> execute = DaxPayKit.execute(param,false);
System.out.println(JsonUtil.toJsonStr(execute));
}
}

View File

@@ -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<CheckoutUrlModel> execute = DaxPayKit.execute(param);
System.out.println(JsonUtil.toJsonStr(execute));
System.out.println(PaySignUtil.hmacSha256Sign(execute, "123456"));
}
}