From 975ceb213d324e320832926037feefccd18775fc Mon Sep 17 00:00:00 2001 From: DaxPay Date: Fri, 21 Jun 2024 18:02:54 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E8=8E=B7=E5=8F=96OpenId=E6=BC=94?= =?UTF-8?q?=E7=A4=BA=E7=95=8C=E9=9D=A2,=20=E4=BC=98=E5=8C=96=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E6=8E=88=E6=9D=83=E5=9C=B0=E5=9D=80=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../single/sdk/payment/TransferOrderTest.java | 50 +++++++++++++++++++ .../AllocationReceiverController.java | 4 +- .../extra/AliPayAuthController.java | 2 - .../channel/alipay/entity/AliPayConfig.java | 6 ++- .../wechat/entity/WeChatPayConfig.java | 10 ++-- .../service/core/extra/AliPayAuthService.java | 12 +++-- .../service/core/extra/WeChatAuthService.java | 11 +++- .../order/allocation/entity/AllocOrder.java | 2 +- .../allocation/entity/AllocOrderDetail.java | 2 +- .../core/order/pay/entity/PayOrder.java | 4 +- .../reconcile/entity/ReconcileOutTrade.java | 2 +- .../core/order/refund/entity/RefundOrder.java | 4 +- .../order/transfer/entity/TransferOrder.java | 2 +- .../record/flow/entity/TradeFlowRecord.java | 2 +- .../dto/channel/alipay/AliPayConfigDto.java | 7 ++- .../channel/wechat/WeChatPayConfigDto.java | 3 ++ .../service/dto/extra/AuthUrlResult.java | 4 +- .../channel/alipay/AliPayConfigParam.java | 7 ++- .../channel/wechat/WeChatPayConfigParam.java | 3 ++ 19 files changed, 109 insertions(+), 28 deletions(-) create mode 100644 daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/TransferOrderTest.java diff --git a/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/TransferOrderTest.java b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/TransferOrderTest.java new file mode 100644 index 000000000..66ae66c30 --- /dev/null +++ b/daxpay-single-sdk/src/test/java/cn/daxpay/single/sdk/payment/TransferOrderTest.java @@ -0,0 +1,50 @@ +package cn.daxpay.single.sdk.payment; + +import cn.daxpay.single.sdk.code.PayChannelEnum; +import cn.daxpay.single.sdk.code.SignTypeEnum; +import cn.daxpay.single.sdk.code.TransferPayeeTypeEnum; +import cn.daxpay.single.sdk.model.transfer.TransferModel; +import cn.daxpay.single.sdk.net.DaxPayConfig; +import cn.daxpay.single.sdk.net.DaxPayKit; +import cn.daxpay.single.sdk.param.transfer.TransferParam; +import cn.daxpay.single.sdk.response.DaxPayResult; +import cn.hutool.json.JSONUtil; +import org.junit.Before; + +/** + * 转账测试 + * @author xxm + * @since 2024/6/20 + */ +public class TransferOrderTest { + + @Before + public void init() { + // 初始化支付配置 + DaxPayConfig config = DaxPayConfig.builder() + .serviceUrl("http://127.0.0.1:9000") + .signSecret("123456") + .signType(SignTypeEnum.HMAC_SHA256) + .build(); + DaxPayKit.initConfig(config); + } + + + /** + * 发起转账操作 + */ + public void transfer() { + // 构建参数 + TransferParam param = new TransferParam(); + param.setTitle("测试转账"); + param.setReason("我要转个账"); + param.setAmount(500); + param.setChannel(PayChannelEnum.ALI.getCode()); + param.setPayeeType(TransferPayeeTypeEnum.ALI_OPEN_ID.getCode()); + // 使用OpenId + param.setPayeeAccount(""); + // 发起请求 + DaxPayResult execute = DaxPayKit.execute(param); + System.out.println(JSONUtil.toJsonStr(execute)); + } +} diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/allocation/AllocationReceiverController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/allocation/AllocationReceiverController.java index c87178829..dad0fcb7f 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/allocation/AllocationReceiverController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/allocation/AllocationReceiverController.java @@ -65,7 +65,7 @@ public class AllocationReceiverController { @InitPaymentContext(value = PaymentApiCode.ALLOCATION_RECEIVER_ADD) @Operation(summary = "添加") - @PostMapping("add") + @PostMapping("/add") public ResResult add(@RequestBody AllocReceiverAddParam param){ ValidationUtil.validateParam(param); receiverService.addAndSync(param); @@ -74,7 +74,7 @@ public class AllocationReceiverController { @InitPaymentContext(value = PaymentApiCode.ALLOCATION_RECEIVER_REMOVE) @Operation(summary = "删除") - @PostMapping("delete") + @PostMapping("/delete") public ResResult delete(@RequestBody AllocReceiverRemoveParam param){ ValidationUtil.validateParam(param); receiverService.remove(param); diff --git a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/extra/AliPayAuthController.java b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/extra/AliPayAuthController.java index 12b5895a4..a26236396 100644 --- a/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/extra/AliPayAuthController.java +++ b/daxpay-single/daxpay-single-admin/src/main/java/cn/daxpay/single/admin/controller/extra/AliPayAuthController.java @@ -27,14 +27,12 @@ import org.springframework.web.bind.annotation.RestController; public class AliPayAuthController { private final AliPayAuthService aliPayAuthService; - @Operation(summary = "返回获取OpenId授权页面地址和标识码") @PostMapping("/generateAuthUrl") public ResResult generateAuthUrl(){ return Res.ok(aliPayAuthService.generateAuthUrl()); } - @Operation(summary = "根据标识码查询OpenId") @GetMapping("/queryOpenId") public ResResult queryOpenId(String code){ diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/entity/AliPayConfig.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/entity/AliPayConfig.java index 418f1abf0..6f59e5d79 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/entity/AliPayConfig.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/channel/alipay/entity/AliPayConfig.java @@ -35,7 +35,7 @@ import java.util.Objects; public class AliPayConfig extends MpBaseEntity implements EntityBaseFunction { /** 支付宝商户appId */ - @DbColumn(comment = "支付宝商户appId") + @DbColumn(comment = "支付宝商户appId", length = 50) private String appId; /** 是否启用, 只影响支付和退款操作 */ @@ -72,6 +72,10 @@ public class AliPayConfig extends MpBaseEntity implements EntityBaseFunction { /** 微信商户Id */ - @DbColumn(comment = "微信商户号") + @DbColumn(comment = "微信商户号", length = 50) private String wxMchId; /** 微信应用appId */ - @DbColumn(comment = "微信应用appId") + @DbColumn(comment = "微信应用appId", length = 50) private String wxAppId; /** 是否启用 */ @@ -52,7 +52,7 @@ public class WeChatPayConfig extends MpBaseEntity implements EntityBaseFunction< private Boolean allocation; /** 支付限额 */ - @DbColumn(comment = "支付限额") + @DbColumn(comment = "支付限额", length = 8) private Integer limitAmount; /** @@ -73,6 +73,10 @@ public class WeChatPayConfig extends MpBaseEntity implements EntityBaseFunction< @DbColumn(comment = "同步通知路径") private String returnUrl; + /** 授权回调地址 */ + @DbColumn(comment = "授权回调地址", length = 200) + private String redirectUrl; + /** * 接口版本, 使用v2还是v3接口 * @see WeChatPayCode#API_V2 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/extra/AliPayAuthService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/extra/AliPayAuthService.java index 787e4a24e..fe3f142a6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/extra/AliPayAuthService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/extra/AliPayAuthService.java @@ -45,16 +45,22 @@ public class AliPayAuthService { PlatformConfig platformConfig = platformsConfigService.getConfig(); AliPayConfig aliPayConfig = aliPayConfigService.getConfig(); String code = RandomUtil.randomString(10); + // 默认读取通道配置 + String serverUrl = aliPayConfig.getRedirectUrl(); + // 如果未配置, 读取平台配置 + if (StrUtil.isBlank(serverUrl)) { + serverUrl = platformConfig.getWebsiteUrl(); + } // 构建出授权成功后重定向页面链接 - String redirectUrl = StrUtil.format("{}/callback/pay/alipay/auth/{}", platformConfig.getWebsiteUrl(), code); + String redirectUrl = StrUtil.format("{}/unipay/callback/alipay/auth/{}", platformConfig.getWebsiteUrl(), code); // 构造出授权页地址 - String url = StrUtil.format("{}/h5/alipayAuth.html?appId={}&redirectUrl={}", + String authUrl = StrUtil.format("{}/h5/alipayAuth.html?appId={}&redirectUrl={}", platformConfig.getWebsiteUrl(), aliPayConfig.getAppId(), redirectUrl); // 写入Redis, 五分钟有效期 redisClient.setWithTimeout(OPEN_ID_KEY_PREFIX + code, "", 5*60*1000L); return new AuthUrlResult() .setCode(code) - .setAuthUrl(url); + .setAuthUrl(authUrl); } /** diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/extra/WeChatAuthService.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/extra/WeChatAuthService.java index c1cb96796..a1b494e52 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/extra/WeChatAuthService.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/extra/WeChatAuthService.java @@ -69,10 +69,17 @@ public class WeChatAuthService { * 生成一个用于微信授权页面的链接和code标识 */ public AuthUrlResult generateAuthUrl() { - PlatformConfig config = platformsConfigService.getConfig(); + PlatformConfig platformConfig = platformsConfigService.getConfig(); + WeChatPayConfig weChatPayConfig = weChatPayConfigService.getConfig(); String code = RandomUtil.randomString(10); + // 默认读取通道配置 + String serverUrl = weChatPayConfig.getRedirectUrl(); + // 如果未配置, 读取平台配置 + if (StrUtil.isBlank(serverUrl)) { + serverUrl = platformConfig.getWebsiteUrl(); + } // 构建出授权后重定向页面链接 - String redirectUrl = StrUtil.format("{}/callback/pay/wechat/auth/{}", config.getWebsiteUrl(), code); + String redirectUrl = StrUtil.format("{}/unipay/callback/wechat/auth/{}", serverUrl, code); WxAuthUrlResult result = this.getWxAuthUrl(new WxAuthUrlParam().setUrl(redirectUrl)); // 写入Redis, 五分钟有效期 diff --git a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/allocation/entity/AllocOrder.java b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/allocation/entity/AllocOrder.java index 86fd62a4c..5df1c4ae6 100644 --- a/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/allocation/entity/AllocOrder.java +++ b/daxpay-single/daxpay-single-service/src/main/java/cn/daxpay/single/service/core/order/allocation/entity/AllocOrder.java @@ -86,7 +86,7 @@ public class AllocOrder extends MpBaseEntity implements EntityBaseFunction