diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/code/PaySyncStatusEnum.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/code/PaySyncStatusEnum.java new file mode 100644 index 000000000..63182a185 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/code/PaySyncStatusEnum.java @@ -0,0 +1,44 @@ +package cn.bootx.platform.daxpay.sdk.code; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Arrays; +import java.util.Objects; + +/** + * 支付同步结果 + * + * @author xxm + * @since 2021/4/21 + */ +@Getter +@AllArgsConstructor +public enum PaySyncStatusEnum { + FAIL("pay_fail", "支付查询失败"), + SUCCESS("pay_success", "支付成功"), + PROGRESS("pay_progress", "支付中"), + CLOSED("pay_closed", "支付已关闭"), + REFUND("pay_refund", "支付退款"), + NOT_FOUND("pay_not_found", "交易不存在"), + /** + * 未查询到订单(具体类型未知) + * 区别于上面的未查询到订单,有些支付方式如支付宝,发起支付后并不能查询到订单,需要用户进行操作后才能查询到订单, + * 所以查询为了区分,增加一个未知的状态, 用于处理这种特殊情况, 然后根据业务需要,关闭订单或者进行其他操作 + */ + NOT_FOUND_UNKNOWN("pay_not_found_unknown","交易不存在(特殊)"), + /** 不属于网关同步过来的状态, 需要手动设置, 处理本地订单到了超时时间, 但是网关和本地都未关闭, 需要触发关闭相关处理 */ + TIMEOUT("pay_timeout", "支付超时"); + + /** 编码 */ + private final String code; + /** 名称 */ + private final String name; + + public static PaySyncStatusEnum getByCode(String code) { + return Arrays.stream(values()) + .filter(item -> Objects.equals(item.getCode(), code)) + .findFirst() + .orElseThrow(() -> new IllegalArgumentException("该枚举不存在")); + } +} diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/PayCloseModel.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/pay/PayCloseModel.java similarity index 85% rename from daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/PayCloseModel.java rename to daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/pay/PayCloseModel.java index 2ea4dbc36..2d203e3c9 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/PayCloseModel.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/pay/PayCloseModel.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.sdk.model; +package cn.bootx.platform.daxpay.sdk.model.pay; import cn.bootx.platform.daxpay.sdk.net.DaxPayResponseModel; import lombok.Getter; diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/PayOrderModel.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/pay/PayOrderModel.java similarity index 94% rename from daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/PayOrderModel.java rename to daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/pay/PayOrderModel.java index 291a703e0..800782b6c 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/PayOrderModel.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/pay/PayOrderModel.java @@ -1,4 +1,4 @@ -package cn.bootx.platform.daxpay.sdk.model; +package cn.bootx.platform.daxpay.sdk.model.pay; import cn.bootx.platform.daxpay.sdk.code.PayChannelEnum; import cn.bootx.platform.daxpay.sdk.code.PayStatusEnum; diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundChannelOrderModel.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundChannelOrderModel.java similarity index 77% rename from daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundChannelOrderModel.java rename to daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundChannelOrderModel.java index f1166f1aa..c3faebaf8 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundChannelOrderModel.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundChannelOrderModel.java @@ -1,12 +1,18 @@ -package cn.bootx.platform.daxpay.sdk.model; +package cn.bootx.platform.daxpay.sdk.model.refund; import cn.bootx.platform.daxpay.sdk.net.DaxPayResponseModel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; /** * 支付退款通道明细数据 * @author xxm * @since 2024/1/17 */ +@Getter +@Setter +@ToString public class RefundChannelOrderModel extends DaxPayResponseModel { /** 通道 */ diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundModel.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundModel.java similarity index 66% rename from daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundModel.java rename to daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundModel.java index eb9312caf..9cb0f6add 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundModel.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundModel.java @@ -1,19 +1,25 @@ -package cn.bootx.platform.daxpay.sdk.model; +package cn.bootx.platform.daxpay.sdk.model.refund; import cn.bootx.platform.daxpay.sdk.code.RefundStatusEnum; import cn.bootx.platform.daxpay.sdk.net.DaxPayResponseModel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; /** * 退款响应参数 * @author xxm * @since 2023/12/18 */ +@Getter +@Setter +@ToString public class RefundModel extends DaxPayResponseModel { /** 退款ID */ private Long refundId; - /** 退款订单号, 如果请求时未传, 默认为退款ID */ + /** 退款号, 如果请求时未传, 默认为退款ID */ private String refundNo; /** diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundOrderResult.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundOrderResult.java similarity index 88% rename from daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundOrderResult.java rename to daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundOrderResult.java index 50e988a39..a17559a71 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/RefundOrderResult.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/refund/RefundOrderResult.java @@ -1,7 +1,10 @@ -package cn.bootx.platform.daxpay.sdk.model; +package cn.bootx.platform.daxpay.sdk.model.refund; import cn.bootx.platform.daxpay.sdk.code.RefundStatusEnum; import cn.bootx.platform.daxpay.sdk.net.DaxPayResponseModel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; import java.math.BigDecimal; import java.time.LocalDateTime; @@ -12,6 +15,9 @@ import java.util.List; * @author xxm * @since 2024/1/16 */ +@Getter +@Setter +@ToString public class RefundOrderResult extends DaxPayResponseModel { /** 支付号 */ diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/sync/PaySyncModel.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/sync/PaySyncModel.java new file mode 100644 index 000000000..31e4dde3c --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/model/sync/PaySyncModel.java @@ -0,0 +1,36 @@ +package cn.bootx.platform.daxpay.sdk.model.sync; + +import cn.bootx.platform.daxpay.sdk.net.DaxPayResponseModel; +import lombok.Getter; +import lombok.Setter; +import lombok.ToString; + +/** + * 支付单同步结果 + * @author xxm + * @since 2023/12/27 + */ +@Getter +@Setter +@ToString +public class PaySyncModel extends DaxPayResponseModel { + + /** + * 支付网关同步状态 + * @see PaySyncStatusEnum + */ + private String gatewayStatus; + + /** 是否同步成功 */ + private boolean success; + + /** 是否进行了修复 */ + private boolean repair; + + /** 修复号 */ + private String repairOrderNo; + + /** 失败原因 */ + private String errorMsg; + +} diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayKit.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayKit.java index 6bd530b31..b8b38483f 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayKit.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayKit.java @@ -25,9 +25,20 @@ public class DaxPayKit { DaxPayKit.config = config; } + /** + * 支付请求执行类, 默认对请求参数进行签名 + * @param request 请求参数 + * @return DaxPayResult 响应类 + * @param 业务对象 + */ + public DaxPayResult execute(DaxPayRequest request){ + return execute(request, true); + } + /** * 支付请求执行类 * @param request 请求参数 + * @param sign 是否进行签名 * @return DaxPayResult 响应类 * @param 业务对象 */ diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayRequest.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayRequest.java index ef5f4ac36..762f2bf05 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayRequest.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/net/DaxPayRequest.java @@ -31,7 +31,7 @@ public abstract class DaxPayRequest { /** 是否不进行同步通知的跳转 */ private boolean notReturn; - /** 同步通知URL */ + /** 同步跳转URL, 部分接口不支持该配置,传输了也不会生效 */ private String returnUrl; /** 是否不启用异步通知 */ diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayCloseParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayCloseParam.java index c5ad1c87a..590934689 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayCloseParam.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayCloseParam.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.sdk.param.pay; -import cn.bootx.platform.daxpay.sdk.model.PayCloseModel; +import cn.bootx.platform.daxpay.sdk.model.pay.PayCloseModel; import cn.bootx.platform.daxpay.sdk.net.DaxPayRequest; import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; import cn.hutool.core.lang.TypeReference; @@ -17,7 +17,7 @@ import lombok.EqualsAndHashCode; @Data public class PayCloseParam extends DaxPayRequest { - /** 支付单ID */ + /** 支付ID */ private Long paymentId; /** 业务号 */ diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java index 505be42c7..25fd4f115 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/PayParam.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.sdk.param.pay; -import cn.bootx.platform.daxpay.sdk.model.PayOrderModel; +import cn.bootx.platform.daxpay.sdk.model.pay.PayOrderModel; import cn.bootx.platform.daxpay.sdk.net.DaxPayRequest; import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; import cn.hutool.core.lang.TypeReference; diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/SimplePayParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/SimplePayParam.java index f29887e4b..9c357185d 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/SimplePayParam.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/pay/SimplePayParam.java @@ -2,7 +2,7 @@ package cn.bootx.platform.daxpay.sdk.param.pay; import cn.bootx.platform.daxpay.sdk.code.PayChannelEnum; import cn.bootx.platform.daxpay.sdk.code.PayWayEnum; -import cn.bootx.platform.daxpay.sdk.model.PayOrderModel; +import cn.bootx.platform.daxpay.sdk.model.pay.PayOrderModel; import cn.bootx.platform.daxpay.sdk.net.DaxPayRequest; import cn.bootx.platform.daxpay.sdk.param.ChannelParam; import cn.bootx.platform.daxpay.sdk.param.channel.AliPayParam; diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/refund/RefundParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/refund/RefundParam.java index 73afa793d..e5ebab464 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/refund/RefundParam.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/refund/RefundParam.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.sdk.param.refund; -import cn.bootx.platform.daxpay.sdk.model.RefundModel; +import cn.bootx.platform.daxpay.sdk.model.refund.RefundModel; import cn.bootx.platform.daxpay.sdk.net.DaxPayRequest; import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; import cn.hutool.core.lang.TypeReference; @@ -26,7 +26,7 @@ public class RefundParam extends DaxPayRequest { private String businessNo; /** - * 部分退款需要传输支付通道参数参数 + * 是否全部退款, 传false时为部分退款, 通道退款参数不可为空 */ private boolean refundAll; @@ -36,6 +36,7 @@ public class RefundParam extends DaxPayRequest { private String refundNo; /** + * 通道退款参数 * 部分退款时必传 */ private List refundChannels; diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/refund/SimpleRefundParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/refund/SimpleRefundParam.java index 8e7bf3d81..e4cf96028 100644 --- a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/refund/SimpleRefundParam.java +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/refund/SimpleRefundParam.java @@ -1,6 +1,6 @@ package cn.bootx.platform.daxpay.sdk.param.refund; -import cn.bootx.platform.daxpay.sdk.model.RefundModel; +import cn.bootx.platform.daxpay.sdk.model.refund.RefundModel; import cn.bootx.platform.daxpay.sdk.net.DaxPayRequest; import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; import cn.hutool.core.lang.TypeReference; diff --git a/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/sync/PaySyncParam.java b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/sync/PaySyncParam.java new file mode 100644 index 000000000..c53285e99 --- /dev/null +++ b/daxpay-single-sdk/src/main/java/cn/bootx/platform/daxpay/sdk/param/sync/PaySyncParam.java @@ -0,0 +1,41 @@ +package cn.bootx.platform.daxpay.sdk.param.sync; + +import cn.bootx.platform.daxpay.sdk.model.sync.PaySyncModel; +import cn.bootx.platform.daxpay.sdk.net.DaxPayRequest; +import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; +import cn.hutool.core.lang.TypeReference; +import cn.hutool.json.JSONUtil; +import lombok.Getter; +import lombok.Setter; + +/** + *支付同步参数 + * @author xxm + * @since 2024/2/5 + */ +@Getter +@Setter +public class PaySyncParam extends DaxPayRequest { + + /** 支付ID */ + private Long paymentId; + + /** 业务号 */ + private String businessNo; + + /** + * 方法请求路径 + */ + @Override + public String path() { + return "/unipay/syncPay"; + } + + /** + * 将请求返回结果反序列化为实体类 + */ + @Override + public DaxPayResult toModel(String json) { + return JSONUtil.toBean(json, new TypeReference>() {}, false); + } +} diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayCloseOrderTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayCloseOrderTest.java new file mode 100644 index 000000000..a1c1408c4 --- /dev/null +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayCloseOrderTest.java @@ -0,0 +1,36 @@ +package cn.bootx.platform.daxpay.sdk; + +import cn.bootx.platform.daxpay.sdk.model.pay.PayCloseModel; +import cn.bootx.platform.daxpay.sdk.net.DaxPayConfig; +import cn.bootx.platform.daxpay.sdk.net.DaxPayKit; +import cn.bootx.platform.daxpay.sdk.param.pay.PayCloseParam; +import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; +import org.junit.Before; +import org.junit.Test; + +/** + * 支付关闭接口测试类 + * @author xxm + * @since 2024/2/5 + */ +public class PayCloseOrderTest { + + + @Before + public void init() { + // 初始化支付配置 + DaxPayConfig config = DaxPayConfig.builder() + .serviceUrl("http://127.0.0.1:9000") + .signSecret("123456") + .build(); + DaxPayKit.initConfig(config); + } + + @Test + public void close(){ + PayCloseParam param = new PayCloseParam(); + param.setBusinessNo("P0001"); + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(execute); + } +} diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayOrderSyncTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayOrderSyncTest.java new file mode 100644 index 000000000..1dfb7cc03 --- /dev/null +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayOrderSyncTest.java @@ -0,0 +1,40 @@ +package cn.bootx.platform.daxpay.sdk; + +import cn.bootx.platform.daxpay.sdk.model.sync.PaySyncModel; +import cn.bootx.platform.daxpay.sdk.net.DaxPayConfig; +import cn.bootx.platform.daxpay.sdk.net.DaxPayKit; +import cn.bootx.platform.daxpay.sdk.param.sync.PaySyncParam; +import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; +import org.junit.Before; +import org.junit.Test; + +/** + * 支付同步接口 + * @author xxm + * @since 2024/2/5 + */ +public class PayOrderSyncTest { + + + @Before + public void init() { + // 初始化支付配置 + DaxPayConfig config = DaxPayConfig.builder() + .serviceUrl("http://127.0.0.1:9000") + .signSecret("123456") + .build(); + DaxPayKit.initConfig(config); + } + + @Test + public void testPay() { + PaySyncParam param = new PaySyncParam(); + + param.setBusinessNo("P0001"); + + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(execute); + System.out.println(execute.getData()); + } + +} diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayOrderTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayOrderTest.java new file mode 100644 index 000000000..c64b2e8fd --- /dev/null +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/PayOrderTest.java @@ -0,0 +1,66 @@ +package cn.bootx.platform.daxpay.sdk; + +import cn.bootx.platform.daxpay.sdk.code.PayChannelEnum; +import cn.bootx.platform.daxpay.sdk.code.PayWayEnum; +import cn.bootx.platform.daxpay.sdk.model.pay.PayOrderModel; +import cn.bootx.platform.daxpay.sdk.net.DaxPayConfig; +import cn.bootx.platform.daxpay.sdk.net.DaxPayKit; +import cn.bootx.platform.daxpay.sdk.param.pay.PayChannelParam; +import cn.bootx.platform.daxpay.sdk.param.pay.PayParam; +import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collections; +import java.util.List; + +/** + * 通用支付接口 + * @author xxm + * @since 2024/2/5 + */ +public class PayOrderTest { + + @Before + public void init() { + // 初始化支付配置 + DaxPayConfig config = DaxPayConfig.builder() + .serviceUrl("http://127.0.0.1:9000") + .signSecret("123456") + .build(); + DaxPayKit.initConfig(config); + } + + + /** + * 单通道支付 + */ + @Test + public void onePay() { + PayParam param = new PayParam(); + param.setClientIp("127.0.0.1"); + param.setNotNotify(true); + param.setNotReturn(true); + + param.setBusinessNo("P0001"); + param.setTitle("测试接口支付"); + PayChannelParam payChannelParam = new PayChannelParam(); + payChannelParam.setChannel(PayChannelEnum.WECHAT.getCode()); + payChannelParam.setWay(PayWayEnum.QRCODE.getCode()); + payChannelParam.setAmount(1); + + List payChannels = Collections.singletonList(payChannelParam); + param.setPayChannels(payChannels); + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(execute); + System.out.println(execute.getData()); + } + + /** + * 多通道支付 + */ + @Test + public void multiPay() { + + } +} diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/RefundOrderTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/RefundOrderTest.java new file mode 100644 index 000000000..7346c2648 --- /dev/null +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/RefundOrderTest.java @@ -0,0 +1,76 @@ +package cn.bootx.platform.daxpay.sdk; + +import cn.bootx.platform.daxpay.sdk.model.refund.RefundModel; +import cn.bootx.platform.daxpay.sdk.net.DaxPayConfig; +import cn.bootx.platform.daxpay.sdk.net.DaxPayKit; +import cn.bootx.platform.daxpay.sdk.param.refund.RefundChannelParam; +import cn.bootx.platform.daxpay.sdk.param.refund.RefundParam; +import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; +import org.junit.Before; +import org.junit.Test; + +import java.util.Collections; +import java.util.List; + +/** + * 退款接口测试 + * 支持部分退款和全部退款, 部分退款的次数不要超过10次, 否则可能会出现不可知的错误 + * + * @author xxm + * @since 2024/2/5 + */ +public class RefundOrderTest { + + @Before + public void init() { + // 初始化支付配置 + DaxPayConfig config = DaxPayConfig.builder() + .serviceUrl("http://127.0.0.1:9000") + .signSecret("123456") + .build(); + DaxPayKit.initConfig(config); + } + + /** + * 全部退款 + */ + @Test + public void refundAllOrder(){ + RefundParam param = new RefundParam(); + param.setClientIp("127.0.0.1"); + param.setNotNotify(true); + param.setNotReturn(true); + + param.setBusinessNo("P0001"); + param.setRefundAll(true); + param.setRefundNo("R0001"); + + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(execute); + System.out.println(execute.getData()); + } + + /** + * 部分退款(单通道) + */ + @Test + public void refundPartOrder(){ + RefundParam param = new RefundParam(); + param.setClientIp("127.0.0.1"); + + param.setBusinessNo("P0001"); + param.setRefundAll(false); + param.setRefundNo("R0001"); + + // 设置具体的退款参数 + RefundChannelParam refundChannelParam = new RefundChannelParam(); + refundChannelParam.setChannel("ali_pay"); + refundChannelParam.setAmount(12); + List refundChannels = Collections.singletonList(refundChannelParam); + param.setRefundChannels(refundChannels); + + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(execute); + System.out.println(execute.getData()); + } +} diff --git a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/SimplePayOrderTest.java b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/SimplePayOrderTest.java index b1441b392..5ba1c7b45 100644 --- a/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/SimplePayOrderTest.java +++ b/daxpay-single-sdk/src/test/java/cn/bootx/platform/daxpay/sdk/SimplePayOrderTest.java @@ -2,26 +2,35 @@ package cn.bootx.platform.daxpay.sdk; import cn.bootx.platform.daxpay.sdk.code.PayChannelEnum; import cn.bootx.platform.daxpay.sdk.code.PayWayEnum; -import cn.bootx.platform.daxpay.sdk.model.PayOrderModel; +import cn.bootx.platform.daxpay.sdk.model.pay.PayOrderModel; import cn.bootx.platform.daxpay.sdk.net.DaxPayConfig; import cn.bootx.platform.daxpay.sdk.net.DaxPayKit; import cn.bootx.platform.daxpay.sdk.param.pay.SimplePayParam; import cn.bootx.platform.daxpay.sdk.response.DaxPayResult; +import org.junit.Before; +import org.junit.Test; /** - * + * 简单支付 * @author xxm * @since 2024/2/2 */ public class SimplePayOrderTest { - public static void main(String[] args) { + + + @Before + public void init() { + // 初始化支付配置 DaxPayConfig config = DaxPayConfig.builder() .serviceUrl("http://127.0.0.1:9000") .signSecret("123456") .build(); DaxPayKit.initConfig(config); + } + @Test + public void simplePay() { // 简单支付参数 SimplePayParam param = new SimplePayParam(); param.setBusinessNo("1"); @@ -33,7 +42,9 @@ public class SimplePayOrderTest { param.setNotNotify(true); param.setNotReturn(true); - DaxPayResult execute = DaxPayKit.execute(param, true); + DaxPayResult execute = DaxPayKit.execute(param); System.out.println(execute); + PayOrderModel data = execute.getData(); + System.out.println(data); } } diff --git a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java index 2b2255a54..2432c64e4 100644 --- a/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java +++ b/daxpay-single/daxpay-single-gateway/src/main/java/cn/bootx/platform/daxpay/gateway/controller/UniPayController.java @@ -15,6 +15,7 @@ import cn.bootx.platform.daxpay.service.core.order.refund.service.PayRefundOrder import cn.bootx.platform.daxpay.service.core.payment.close.service.PayCloseService; import cn.bootx.platform.daxpay.service.core.payment.pay.service.PayService; import cn.bootx.platform.daxpay.service.core.payment.refund.service.PayRefundService; +import cn.bootx.platform.daxpay.service.core.payment.sync.service.PayRefundSyncService; import cn.bootx.platform.daxpay.service.core.payment.sync.service.PaySyncService; import cn.bootx.platform.daxpay.util.DaxRes; import io.swagger.v3.oas.annotations.Operation; @@ -37,6 +38,7 @@ public class UniPayController { private final PayRefundService payRefundService; private final PaySyncService paySyncService; private final PayCloseService payCloseService; + private final PayRefundSyncService payRefundSyncService; private final PayOrderQueryService PayOrderQueryService; private final PayRefundOrderQueryService payRefundQueryService; @@ -94,8 +96,8 @@ public class UniPayController { @PaymentApi("syncRefund") @Operation(summary = "退款状态同步") @PostMapping("/syncRefund") - public DaxResult syncRefund(@RequestBody RefundSyncParam param){ - return DaxRes.ok(); + public DaxResult syncRefund(@RequestBody RefundSyncParam param){ + return DaxRes.ok(payRefundSyncService.sync(param)); } @CountTime diff --git a/pom.xml b/pom.xml index e6f5d839e..02a0341f0 100644 --- a/pom.xml +++ b/pom.xml @@ -28,7 +28,7 @@ 1.8 - 1.3.6 + 1.3.6.1 2.0.0 1.7.30