Commit Graph

65 Commits

Author SHA1 Message Date
daxpay
4ced54dfab refactor(payment): 通道应用类型解析改为多兼容类型遍历
- 微信/抖音/支付宝应用类型映射由单值改为有序兼容列表, 多个同类型应用时跳过并尝试下一个兼容类型
- 抖音 H5 验签 web_app 报错参数改用本地化名称(网站应用), 不再显示裸编码
- 补齐 wx_app_type 东盟四语(id-ID/vi-VN/th-TH/ms-MY)
- 抖音直连应用体系(douyin_direct_app*)下线, 迁移至 dy_mch_app/dy_channel_app_capability 统一模式
- 删除已废弃的抖音应用管理菜单, 清理通道子应用配置注释
2026-07-30 12:32:41 +08:00
daxpay
6b8b402a6d feat(payment): 码牌小程序认证 + 网关沙箱调试接口 + 敏感字段脱敏边界修复
码牌: 新增小程序认证(mini-auth)链路与 CodePayMiniAuthParam

网关: 新增沙箱调试预下单接口 DebugGatewayController, 受 sandbox-enabled 开关控制, 生产环境不注册

脱敏: SensitiveInfoSerialize 修复保留位数之和超长时的明文暴露(统一全量脱敏), 各通道/平台 result 类统一脱敏注解

路由/菜单SQL/用户控制器等配套调整
2026-07-30 09:15:59 +08:00
daxpay
1b2a7c1064 refactor(wx): 下线微信通道旧直连/服务商应用体系(后端)
应用身份已由 wx_platform_app/wx_mch_app 统一体系接管(WxAppFacade),
旧 wechat_direct_app*/wechat_isv_app* 表及全套 CRUD 为死代码。
- 删除 daxpay-channel-wechat direct/isv 应用全套 74 文件 + 2 枚举
- 重写 WechatDirectChannelMerchantCleanupStrategy / WechatIsvChannelMerchantCleanupStrategy 移除旧表清理
- update-tables.sql DROP 9 表 + table.sql/iam_perm_menu.sql 清理 DDL 与菜单种子

附带: DyMchAppResult/DyPlatformAppResult/WxMchAppResult/WxPlatformAppResult appSecret 脱敏收窄为前后各6位
2026-07-29 13:16:26 +08:00
DaxPay Dev
50d0065520 feat(douyin): 抖音开放应用上移至商户/平台级, 对齐微信架构
payment-core 新增 dy 开放应用体系(实体/facade/dao/service/convert/param/result/enum); channel-douyin 接 DouyinAppFacade 并删除旧 douyin_direct_app 三表全套(29文件); 运营端+商户端应用管理 controller + PermCodes; channel-ums 微信收银台 wxAppId 修复(WxAppFacade); DevelopAuth scope 解析重构(String转枚举移至service层); iam_perm_menu 菜单种子 + i18n 十语种
2026-07-29 09:09:35 +08:00
DaxPay Dev
116e81417f feat(demo): 新增 IP 归属地查询 demo + 菜单权限, 调整 ip2region 文件路径
daxpay-demo 新增 ipregion 模块(Controller/Result), iam_perm_menu 新增 demos:ip-region 菜单,
application-dev.yml ip2region 文件路径从 D盘调整到 E盘。
2026-07-27 23:29:56 +08:00
DaxPay Dev
35eaac10fa feat(easypay): 退款订单管理全套(实体/DAO/Service/Controller)与插件菜单权限码 2026-07-26 22:53:41 +08:00
DaxPay Dev
0d287ccce7 chore(sql): update-datas 升级脚本清空, 内容已并入全量 iam_perm_menu
商户端菜单结构重构的增量脚本(应用工作台/业务配置拆分)已并入全量 iam_perm_menu.sql,
清空 update-datas.sql.
2026-07-25 11:35:50 +08:00
DaxPay Dev
05e24dff7f chore(menu): 移除商户端「创建通道商户」菜单(91410)
商户端无后端 create 接口,通道商户统一由运营端代为开通;
删除商户端创建菜单 91410(channel:merchant:create)。
2026-07-25 10:48:10 +08:00
DaxPay Dev
c4c67216f8 feat(merchant): 商户端抖音直连通道专属配置后端(应用管理/支付应用配置/密钥配置) 2026-07-25 08:58:43 +08:00
DaxPay Dev
69c23f9bd5 feat(merchant): 商户端通道专属配置(微信密钥/支付宝直连应用/支付宝ISV授权)
- 新增 MchWechatDirectKeyConfigController: 微信直连密钥配置(商户端)
- 新增 MchAlipayDirectAppController: 支付宝直连应用管理+密钥+授权(商户端)
- 新增 MchAlipayDirectAppCapabilityController: 支付宝直连能力绑定(商户端)
- 新增 MchAlipayIsvAuthController: 支付宝服务商代运营授权(商户端)
- MchWxChannelAppCapabilityController: 补充 list-supported-capabilities 接口
- PermCodes: 新增 merchant:alipay-isv-auth 权限码
- 菜单 SQL: 新增业务配置分组子菜单(对接配置/通知配置/支付宝ISV授权)
2026-07-24 22:26:23 +08:00
DaxPay Dev
7b52cce087 feat(wx): 微信开放应用主数据与能力绑定
新增平台/商户微信应用主数据、按产品默认能力绑与通道商户能力绑(方案 A),
并补充菜单种子与升级数据脚本。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 10:57:50 +08:00
DaxPay Dev
9e26d6a2b2 refactor(trade): 订单查询编排下沉到 core 并清空增量 SQL
将运营/商户端交易订单查询与详情组装迁入 payment-core,两端 Controller 共用;同步清空 iam_perm_menu.sql 与 update-datas.sql。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 15:52:36 +08:00
DaxPay Dev
00ca747134 refactor(dashboard): 按运营/商户拆分交易报表 Mapper
运营端 Admin*、商户端 Mch* 各自持有 Mapper/Service,core 仅保留 Result 与 TradeReportSupport;同步商户工作台菜单与资金交易只读接口。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 10:50:18 +08:00
DaxPay Dev
1ab222f883 refactor(admin): 同步菜单 component/path 至新前端目录
对齐 terminal/route/global 通道商户与 mobile-app 搬家后的菜单路径,并追加已装库升级 SQL。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 21:53:05 +08:00
DaxPay Dev
365cb6ed5f feat(trade): 下单写入 provider 并修复报表口径
资金凭证创建时由 method 派生 provider,成功路径兜底补齐;SQL 回填历史 posted_amount/provider;时段分布改为日均。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 21:14:25 +08:00
DaxPay Dev
3095c509c8 feat(callback): 新增通道入站回调记录并落库审计
保存通道异步回调报文与处理结果,含 channelMchNo;一级菜单「交易记录」下可查询,去掉未使用的 errorCode。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 15:41:32 +08:00
DaxPay Dev
754a74721f feat(notice): 新增商户出站通知管线(任务/重试/协议SPI)
统一订单级与应用级 webhook,接入支付/退款终态与易支付协议发送,并提供管理端任务查询与手动重发。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-21 13:47:38 +08:00
DaxPay Dev
3300d94722 chore(menu): 交易菜单排序调整并清理已执行的升级脚本 2026-07-20 15:37:25 +08:00
DaxPay Dev
98f39595ab feat(device): 系统终端与通道终端台账功能,菜单迁移至商户管理
- 新增系统终端/通道终端/绑定关系实体与管理层(controller/service/dao/entity/param/result/convert)
- 权限码 device:terminal:system → merchant:terminal(PermCodes 迁移至 Merchant 域)
- 菜单 id=905 从设备管理(pid=9)移到商户管理组(pid=4040130), 改为 subpage 隐藏模式
- update-datas.sql 增量升级脚本(已部署库 UPDATE)
- 终端类型/状态枚举, 10语种 i18n
2026-07-19 00:07:40 +08:00
DaxPay Dev
ad36fe93f7 feat(audit): 统一支付接口审计日志与公共参数 reqId
开放 API 公共参数增加必填 reqId 并响应回显;在验签切面异步记录调用审计(mchNo+reqId 索引),不落 appId/业务单号列;运营端日志管理增加支付接口日志菜单与查询能力。
2026-07-17 17:38:15 +08:00
DaxPay Dev
86b0fa0be2 feat(security): 平台安全配置拆分并增强 nonce/防重放
将平台安全配置拆为 API/IAM/支付多份;nonce 校验可配置化;补齐 SQL、权限码与多语 validation/i18n。
2026-07-17 08:24:29 +08:00
DaxPay Dev
357ee494ee feat(sensitive-word): 新增平台敏感词过滤能力
新增 capability-sensitive-word 模块(词库 CRUD、命中审计、AC 匹配与繁转简规范化),平台配置策略开关,并接入支付标题/商品名与商户应用门店等展示字段校验;同步 DDL、菜单与后端 i18n。
2026-07-16 09:08:37 +08:00
DaxPay Dev
a42052b821 feat(risk): 新增支付风控插件(黑名单与命中记录)
新增 daxpay-plugin-risk 模块,支持黑名单管理、风险命中记录与支付前风控校验;补充表结构/菜单权限及多语言枚举与错误文案。
2026-07-15 23:08:19 +08:00
DaxPay Dev
694efe088d fix(naming): 统一通道/环境/能力编码与主数据
汇付通道合并为 huifu,抖音通道改为 douyin;ClientEnv 微信改为 wechat;
银联 capability/付款码对齐 union_qr 风格;同步 pay_md 种子、升级 SQL 与多语 enum。
2026-07-15 20:53:48 +08:00
DaxPay Dev
8260466071 feat(easypay): 接入易支付协议插件并打通应用级配置
新增 daxpay-plugin-easypay(V1/V2 API、应用凭证与独立订单),扩展插件支付策略与网关运行时结构;补充菜单/表结构 SQL,平台公钥 Result 去 PEM 便于对接方复制,接口地址尾部保留 /。
2026-07-15 12:35:39 +08:00
DaxPay Dev
a243a510aa refactor(i18n): 全面 i18n 改造——删除 nameCn/nameEn/titleCn/titleEn 双列存储,统一为 i18nKey + 语言包翻译
后端:
- 删除菜单/字典/字典项/角色/权限码实体的 nameCn/nameEn/titleCn/titleEn 字段
- 新增 i18nKey 字段(菜单已有,字典/角色/权限码新增)
- 权限码 i18nKey 由 PermCodeScanService 自动推导: perm.{code}
- DictItemData record 简化为仅 i18nKey
- TransService 删除 resolveLocaleAwareField 双语 fallback 逻辑
- PermCode 注解删除 nameCn/nameEn,PermCodes 常量类删除 *_NAME_CN/EN
- 角色删除 existsByNameCn/En 方法和端点

SQL:
- update-tables.sql: 加 i18n_key 列(system_dict/system_dict_item/iam_role)+ DROP 旧列
- update-datas.sql: 批量回填 i18n_key(role.{code} / dict.{dictCode}.{itemCode})
- iam_perm_menu.sql: 删除 title_cn/title_en 列定义和 INSERT 数据
2026-07-14 10:48:26 +08:00
DaxPay Dev
14b06b583b refactor(callback): 回调路径改用 channelMchNo 并显式装载商户上下文
删除 CallbackMchContextFilter,控制器入口 bindMchNoForCallback;
notify URL 由 {mchNo}/{appId} 改为 {mchNo}/{channelMchNo};
同步修复微信路径与 ISV 回调入口,并将 payment-common 收敛为 payment-core。
2026-07-13 21:24:50 +08:00
DaxPay Dev
f618da0828 refactor(payment): 拆分 core 包结构并移除遗留 ChannelConfig
将 payment-common 中 core 下的 auth/strategy/trade/route 等上移为一级包,同步更新通道与 unipay 引用;删除无写路径、无 DDL 的 ChannelConfig 及相关 API/i18n,配置以 PayProductConfig 与通道商户为准。
2026-07-13 18:12:14 +08:00
DaxPay Dev
b36fa4bcdd refactor(iam): 权限码全量直改(kebab、trade 域、通道统一、name 常量)
菜单与权限码统一 kebab-case;交易单据迁入 trade 域;通道应用/ISV 收成 channel:app 与 payment:isv;写权限仅 manage;跨 Controller 的 nameCn/nameEn 进 PermCodes,单类高频重复用局部常量。同步 iam_perm_menu 与 update-datas。
2026-07-13 11:58:50 +08:00
DaxPay Dev
959d84bb18 fix(iam): 统一菜单 component 路径为 /{views 相对路径}
去掉 views/ 前缀脏数据(用户管理、第三方平台),种子 SQL 与 update-datas 幂等补丁同步。
2026-07-13 10:36:27 +08:00
DaxPay Dev
59c302c9bd refactor(menu): 聚合扫码菜单更名为码牌和聚合支付
同步 iam_perm_menu 全量菜单标题,并清空已执行的 update-datas 增量脚本。
2026-07-11 16:52:50 +08:00
DaxPay Dev
24750bb9e5 feat(sql): 补充应用工作台与收银台配置菜单
新增应用配置子页 MchAppWorkbench(/payment/merchant/app/manage)及收银台配置菜单,同步全量菜单导出与增量升级脚本。
2026-07-11 15:44:09 +08:00
DaxPay Dev
13390cc99d feat(iam): 菜单子页面分组与类型不可变校验
支持 subpage_group 父子约束与统一处理;更新菜单时禁止修改 menuType,并补充错误与枚举 i18n。
2026-07-11 12:24:14 +08:00
DaxPay Dev
ddbc3e959d fix(sql): 同步移动端应用菜单导出并补齐 app_name 删除
更新 iam_perm_menu 导出快照;在 update-tables 中补 DROP app_name,与平台移动端应用表结构对齐。
2026-07-11 10:57:04 +08:00
DaxPay Dev
b48c18e01e fix(payment): 恢复辅助支付终端菜单(非 IoT 硬件)
辅助终端不属于云音箱/云打印硬件对接范围, 开源版应保留菜单占位。
2026-07-11 10:16:41 +08:00
DaxPay Dev
c9c9ffb614 refactor(payment): 开源版移除云音箱/云打印/厂商等硬件对接
硬件对接归商业版; 保留码牌收款能力。同步清理菜单种子与 i18n。
2026-07-11 10:15:50 +08:00
DaxPay Dev
17fb60161d refactor(system): 移动端应用配置从 payment 迁至 platform/system
- 删除 payment.app.mobile 实体链路与 MobileAppAdminController
- 迁入 platform.system:MobileAppTypeEnum/MobilePlatformEnum + entity/dao/service/controller
- API: /admin/mobile-app → /platform/config/mobile-app,权限码 system:config:mobile_app
- 菜单 40504/40505 父级改系统配置(304),路径改 /system/config/mobile-app(update-datas + iam_perm_menu baseline)
2026-07-10 17:58:21 +08:00
DaxPay Dev
6f0622fca8 feat(device): 运营端支付码牌管理(批量生成/绑定商户/商户名翻译)
支持空白码库存与划拨绑定,分页翻译商户名称;绑定默认走商户默认应用。
补齐码牌菜单落地、batch_no 升级 SQL 与中英校验/错误文案。
2026-07-10 16:50:47 +08:00
DaxPay Dev
4be249dd39 feat(notify): 微信消息通知模板配置迁入系统平台配置
凭据走三方平台 wechat_mp_auth,模板存 system_platform_config(wechat_notify);
发送记录落 service-notify 分层包,能力层仅保留纯发送。
2026-07-09 17:31:49 +08:00
DaxPay Dev
fa51d117d5 feat(payment): 支付宝通道认证与认证调试工具
平台级支付宝配置生成授权中间页/换 userId,新增开发调试认证页与菜单。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-09 17:12:08 +08:00
DaxPay Dev
1761e19a20 fix(sql): 初始化菜单同步为三方平台管理页
iam_perm_menu 种子数据与 update-datas 一致,指向 ThirdPlatform 路由与 i18n。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-09 16:20:58 +08:00
DaxPay Dev
c8840f4065 refactor(social): 三方登录配置 SocialConfig 重命名为 SocialLoginConfig
为避免与新增的「三方平台管理」命名冲突, 全量迁移社交登录配置体系:

- 类(entity/param/result/mapper/manager/convert/service/controller): SocialConfig* -> SocialLoginConfig*
- 表: iam_social_config -> iam_social_login_config (update-tables.sql)
- API 路由: /social/config -> /social/login-config; 权限码: iam:social:config -> iam:social:login-config
- 菜单 iam_perm_menu(id=900001): name/path/component/i18n_key 同步更新
- SocialLoginService 引用同步; justauth 的 SocialAuthConfig 保持不变(语义为运行时授权配置)
2026-07-09 13:12:16 +08:00
DaxPay Dev
e313c49f2e feat(channel): 通道元数据字典全量刷新+菜单治理+微信回调验签解析底座
- 新增 pay_md 通道元数据字典全量(能力/通道/产品映射)与增量刷新脚本
- iam_perm_menu 菜单全量快照: 标题/i18n_key 归一, 新增移动端应用管理/微信服务商子商户
- update-tables 新增拉卡拉(2表)+银联商务(2表)建表, 均含 COMMENT ON
- ProductEnum 新增10个第三方聚合通道枚举(汇付/斗拱/海科/富友/盛付通/银盛/快钱/杉德/易宝/jeepay)
- i18n product/validation 中英文同步
- 微信回调验签解析能力: 主应用通过声明式HTTP客户端转发子应用验签(支付/退款回调)
2026-07-05 23:54:57 +08:00
DaxPay Dev
3ce790ab99 feat(wechat): 微信服务商子商户应用功能 + 授权配置基类修复
- 新增微信服务商通道商户应用(WechatIsvMchApp)子商户自己的微信应用管理,
  含应用/能力绑定/授权配置三表及配套 controller/service/dao/convert/param/result
- 修复 WechatIsvAppAuthConfig 基类错误(MchBaseEntity→MpBaseEntity):
  服务商应用为平台级全局配置, 不挂商户维度, 移除冗余的 mchNo/channelMchNo 字段,
  修复 channel_mch_no / mch_no 列不存在的运行时异常
- 支付宝支付异步通知地址改用平台端点配置(backendBaseUrl)生成
- 微信直连凭证组装从通道商户绑定表取真实 wxMchId(channelMchNo 为系统雪花号)
- 支付方式枚举与 i18n 文案统一精简(去掉冗余'支付'后缀, 统一大小写)
- 校验消息 key 修正(wechatIsvAppId / wechatIsvMchAppId)
2026-07-05 11:00:11 +08:00
DaxPay Dev
cc3a9f87e1 feat(payment): 微信直连渠道对接(退款/支付/关闭/同步) + 退款菜单 2026-07-03 22:06:43 +08:00
DaxPay Dev
49d160b29e feat(payment): P0 alipay退款全链路 + 清理old包PayCloseRecord冲突
退款(channel-one → 主应用 → 策略 → 订单管理 → SQL):
- channel-one: alipay refund/refund-sync 端点 + DTO + service
- AlipayChannelClient 加 refund/refundSync, direct/isv 退款策略
- PayRefundOrder 实体 + Mapper/Manager/Convert/Result/Query
- PayRefundService(锁/校验/创建/调策略/回写) + PayRefundSyncService
- PayRefundOrderAdminController(/admin/order/refund)
- AbsRefundStrategy + AbsSyncRefundStrategy 抽象策略
- RefundOrderStatusEnum + i18n(zh/en)
- SQL: pay_refund_order 建表 + 退款菜单(payment:refund)

清理 old(修复 ConflictingBeanDefinitionException):
- 删除 old PayCloseRecord 链(8文件), core 版为唯一实现
- 删除 old PayCloseService/PaySyncService/PayOrderService/PaySyncResultBo
2026-07-03 12:24:07 +08:00
DaxPay Dev
0ac65d7e6f feat(merchant): 商户应用事件通知配置(entity/service/controller/菜单SQL/i18n) 2026-07-02 04:25:31 +08:00
DaxPay Dev
9208422abd feat(order): 普通支付交易订单管理(admin视角): NormalPayOrder+PayTrade 列表/详情/同步/关闭 2026-07-02 02:23:22 +08:00
DaxPay Dev
58fef669c7 refactor(alipay): DTO 强类型化 + client 分包 + 子应用 service 重构
- DTO 强类型: config Map→AlipaySdkCredential, method String→AlipayPayMethod,
  payBodyType String→AlipayPayBodyType, expireTime/finishTime String→OffsetDateTime
- 字段贴近支付宝: outTradeNo/tradeNo/body, 删 channel/otherMethod/transOrderNo
- notifyUrl 从 config Map 拆出为 Req 独立字段
- 删除通用 ChannelPayReq/ChannelPayResp(仅 alipay 使用)
- 主应用 client 分包: req/resp/enums/credential 四子包
- 沙箱字段: AlipayDirectConfigAssembler 从 PayProductConfig.activeEnv 读取
- 子应用: 删 demo 模式, pay() 分发 payWap/payApp/payPage/payQr 子方法
- 子应用 dto→req/resp 分包
- 新增 PayBodyTypeEnum QR_CODE/ORDER_STR 枚举值
2026-07-01 16:16:22 +08:00
DaxPay Dev
918437abc7 feat(menu): 工作台设为默认首页, 补充dashboard菜单编码占位与排序调整
- Dashboard 目录 redirect /analytics → /workspace
- 工作台(id=102) menu_code=dashboard:workspace, sort_no=1
- 分析页(id=101) menu_code=dashboard:analytics, sort_no=2
2026-06-27 22:22:43 +08:00