From 87c9b1a8a5354e9036ed7755e6bc296aab455e31 Mon Sep 17 00:00:00 2001 From: DaxPay Date: Mon, 28 Oct 2024 17:43:48 +0800 Subject: [PATCH] =?UTF-8?q?feat=20=E5=BE=AE=E4=BF=A1=E9=80=9A=E9=81=93?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=8D=95=E7=8B=AC=E7=9A=84=E8=AE=A4=E8=AF=81?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _doc/ChangeLog.md | 4 ++++ _doc/Task.md | 4 ++-- .../wechat/entity/config/WechatPayConfig.java | 3 +++ .../param/config/WechatPayConfigParam.java | 4 ++++ .../result/config/WechatPayConfigResult.java | 4 ++++ .../service/assist/WechatAuthService.java | 17 ++++++++++++++--- 6 files changed, 31 insertions(+), 5 deletions(-) diff --git a/_doc/ChangeLog.md b/_doc/ChangeLog.md index 733eafd4..78acffc6 100644 --- a/_doc/ChangeLog.md +++ b/_doc/ChangeLog.md @@ -1,4 +1,8 @@ # CHANGELOG +## [v3.0.0.beta2] 2024-11-08 +- fix: 系统参数使用到MySQL8保留字 +- fix: Mysql 脚本缺少 缺失 表pay_api_const +- fix: H5构建版本限制错误, 限制为最低为node20+ ## [v3.0.0.beta1] 2024-10-24 - 重构: JDK版本升级为21+, Spring Boot 版本升级为3.3.x, 前端组件升级为Antd Vue 4.x + Vite5 - 重构: 数据库更新为PostgreSQL + MySQL8.x 双版本支持 diff --git a/_doc/Task.md b/_doc/Task.md index b277dacf..75bd47a2 100644 --- a/_doc/Task.md +++ b/_doc/Task.md @@ -1,7 +1,7 @@ # 单商户 ## 3.0.0.bate2: 功能完善第二阶段 - 优化: - - [ ] 增加首页驾驶舱功能 +- [ ] 增加首页驾驶舱功能 - [ ] 分账功能 - [x] 分账接收方配置 - [ ] 分账单管理 @@ -9,7 +9,7 @@ - [ ] 同步回调页 - [ ] 商户应用增加启停用状态 - [ ] 商户应用应该要有一个类似删除的功能, 实现停用冻结, 但不影响数据的关联 -- [ ] 微信通道添加单独的认证跳转地址, 处理它的特殊情况 +- [x] 微信通道添加单独的认证跳转地址, 处理它的特殊情况 ## 任务池 - [ ] 定时同步任务频次不要太高, 预防产生过多的数据 diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/entity/config/WechatPayConfig.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/entity/config/WechatPayConfig.java index 2a1566a4..98baf767 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/entity/config/WechatPayConfig.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/entity/config/WechatPayConfig.java @@ -34,6 +34,9 @@ public class WechatPayConfig implements ToResult { /** 是否启用 */ private Boolean enable; + /** 授权认证地址 */ + private String authUrl; + /** 支付限额 */ private BigDecimal limitAmount; diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/config/WechatPayConfigParam.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/config/WechatPayConfigParam.java index 62c97464..e64bf0b7 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/config/WechatPayConfigParam.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/param/config/WechatPayConfigParam.java @@ -38,6 +38,10 @@ public class WechatPayConfigParam { @Schema(description = "是否启用") private Boolean enable; + /** 授权认证地址 */ + @Schema(description = "授权认证地址") + private String authUrl; + /** 支付限额 */ @NotNull(message = "支付限额不可为空") @Schema(description = "支付限额") diff --git a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/result/config/WechatPayConfigResult.java b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/result/config/WechatPayConfigResult.java index 16567a37..af69a532 100644 --- a/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/result/config/WechatPayConfigResult.java +++ b/daxpay-single-channel/daxpay-single-wechat/src/main/java/org/dromara/daxpay/channel/wechat/result/config/WechatPayConfigResult.java @@ -33,6 +33,10 @@ public class WechatPayConfigResult { @Schema(description = "是否启用") private Boolean enable; + /** 授权认证地址 */ + @Schema(description = "授权认证地址") + private String authUrl; + /** 支付限额 */ @Schema(description = "支付限额") private BigDecimal limitAmount; 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 3d7a138e..c3a58ae5 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 @@ -37,16 +37,21 @@ public class WechatAuthService { * 构建微信oauth2授权的url连接 */ public AuthUrlResult generateAuthUrl(GenerateAuthUrlParam param) { - WxMpService wxMpService = this.getWxMpService(); + WechatPayConfig config = wechatPayConfigService.getWechatPayConfig(); + WxMpService wxMpService = this.getWxMpService(config); // 手段传输回调地址, 直接拼接不做处理 if (StrUtil.isNotBlank(param.getAuthRedirectUrl())){ String url = wxMpService.getOAuth2Service() .buildAuthorizationUrl(param.getAuthRedirectUrl(), WxConsts.OAuth2Scope.SNSAPI_BASE, ""); return new AuthUrlResult().setAuthUrl(url); } else { - PlatformConfig platformConfig = platformsConfigService.getConfig(); + String serverUrl = platformsConfigService.getConfig().getGatewayMobileUrl(); + // 如果配置中有地址配置则使用, 没有的话使用平台地址进行拼接 + if (StrUtil.isNotBlank(config.getAuthUrl())){ + PlatformConfig platformConfig = platformsConfigService.getConfig(); + serverUrl = platformConfig.getGatewayMobileUrl(); + } String queryCode = RandomUtil.randomString(10); - String serverUrl = platformConfig.getGatewayMobileUrl(); String redirectUrl = StrUtil.format("{}/wechat/auth/{}/{}/{}", serverUrl, param.getAppId(), param.getChannel(),queryCode); String authUrl = wxMpService.getOAuth2Service().buildAuthorizationUrl(redirectUrl, WxConsts.OAuth2Scope.SNSAPI_BASE, ""); return new AuthUrlResult().setAuthUrl(authUrl).setQueryCode(queryCode); @@ -70,6 +75,12 @@ public class WechatAuthService { */ private WxMpService getWxMpService() { WechatPayConfig config = wechatPayConfigService.getAndCheckConfig(); + return getWxMpService(config); + } + /** + * 获取微信公众号API的Service + */ + private WxMpService getWxMpService(WechatPayConfig config) { WxMpService wxMpService = new WxMpServiceImpl(); WxMpDefaultConfigImpl wxMpConfig = new WxMpDefaultConfigImpl(); wxMpConfig.setAppId(config.getWxAppId()); // 设置微信公众号的appid