Commit Graph

170 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
54b2fa4850 refactor(wx): 移除微信服务商通道商户冗余的认证应用类型字段
该字段(authAppType)不被任何业务逻辑消费, 实际 sp/sub openId 路由由通道能力绑定(WxChannelAppCapability)决定, 两者脱节存在配置与行为不一致隐患。同步清理实体/Param/Result/Service/Controller、WechatAuthAppTypeEnum 与 WechatIsvAuthAppTypeUpdateParam、10 语言 i18n(validation/wechat/enum)、table.sql 列定义, 并在 update-tables.sql 追加 DROP COLUMN 迁移。
2026-07-30 10:36:24 +08:00
daxpay
6b8b402a6d feat(payment): 码牌小程序认证 + 网关沙箱调试接口 + 敏感字段脱敏边界修复
码牌: 新增小程序认证(mini-auth)链路与 CodePayMiniAuthParam

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

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

路由/菜单SQL/用户控制器等配套调整
2026-07-30 09:15:59 +08:00
daxpay
2e3685d83c refactor(mobile-app): 移动端应用管理菜单迁移至支付管理(后端) 2026-07-29 18:21:02 +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
b6d8c6ccd7 refactor(mobile-app): 移除商户端微信公众号(wx_h5)配置项及枚举/多语言
wx_h5 为未实现占位项, 从商户端白名单移除并删除 MobilePlatformEnum.WX_H5, 同步清理 10 语种 mobile_platform.json 与 table.sql 注释
2026-07-29 10:36:53 +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
358755628f feat(merchant): 商户端支付调试功能(交易/网关/签名/认证)
后端仅提供签名与元数据辅助, 真实交易由前端模拟商户请求直调 /unipay/pay, 与正式对接走同一入口避免后门; 复用 payment-core 的 PayProviderMethodService/PayRouteStrategyCapabilitySupport/PlatformAuthService 等 bean。

update-datas.sql 新增商户端 develop 菜单(顶级目录 91600 + 4 子菜单, sort=5 排在回调通知之后)。
2026-07-25 15:48:23 +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
065eb15876 build 数据库内容清空 2026-07-24 18:04:27 +08:00
DaxPay Dev
2ba93a34de refactor(risk): 黑名单改为三态类型并按微信应用精确匹配
去掉 channel 空值通配,重建 pay_blacklist(ip/alipay_user/wechat_openid + wx_app_id),与平台支付应用作用域对齐。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-24 14:32:27 +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
a3c324e5c5 feat(merchant): 开放商户端配置与交易 API 并写入菜单种子
补齐商户侧控制器(通道商户/终端/网关配置/订单通知回调等),部分运营端接口双路径复用;update-datas 写入商户端侧栏菜单树。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-23 18:29:02 +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
ed5d4e501b refactor(callback): 回调记录 channel 替换为 product 并翻译通道商户名
落库与查询改为支付产品;写入时按 channelMchNo 解析产品;列表侧可展示通道商户名称。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-22 14:27:29 +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
e8f5e785c3 feat(risk): 接入风控主链路并扩展 openId 黑名单覆盖范围
- 接入 PayRiskChecker SPI 到 NormalPayService/GatewayPayHandleService,
  修复此前风控完全不生效问题(checkBeforePay/checkAfterPay)
- PlatformPaySecurityConfig 加 @Cacheable 多级缓存避免每笔支付打 DB
- PayRiskChecker 加 hasOpenIdBlacklist() SPI, 默认 false, 由插件实现
- PayMethodOpenIdSupport 新增 canAcquireOpenId(method, clientEnv) 矩阵:
  JSAPI/MINI/QR/H5 在微信/支付宝/抖音内可静默 OAuth; 付款码/APP/PC/聚合码
  始终不可; union_pay 一期无平台 OAuth; browser 外部浏览器不可
- AggregatePayService/CodePayAssistService/CashierItemPublicResult 的 needOpenId
  智能计算: JSAPI/MINI 业务必需 OR (存在 openId 名单 AND canAcquireOpenId)
- DefaultPayRiskChecker 实现 hasOpenIdBlacklist + Caffeine 30s 短缓存 +
  openId 缺失时 WARN 降级日志(付款码/APP/外部浏览器走 IP + 事后补录)
- 补齐 pay_blacklist / pay_risk_hit 两张表 DDL(PG 风格 + COMMENT ON)
2026-07-20 12:00:59 +08:00
DaxPay Dev
69c16d9799 feat(payment): pay_trade 新增 title 冗余列, 资金列表/工作台免JOIN容器
- PayTrade 实体新增 title 字段(冗余自容器, 与 source/channelMchNo 同性质)
- PayTradeInitUtil.initProcessing 加 title 入参, normal/gateway 两处调用传入
- TradeOrderDetailAssembler 详情不再用容器覆盖 title, 列表/详情统一用 trade.title
- PayTradeResult.title 从容器联表段迁移至凭证字段段
2026-07-20 09:10:48 +08:00
DaxPay Dev
7f59ef1a7f refactor(payment): 移除 PayProductConfig 的 configured 字段并 DROP 数据库列 2026-07-19 15:02:06 +08:00
DaxPay Dev
b2fd094961 chore(sql): 移除过时的平台移动端表 pay_md.sql 2026-07-19 11:55:37 +08:00
DaxPay Dev
5ab4ac42d1 feat(dashboard): 工作台/分析页交易聚合统计接口(8 维度全量)
- TradeOverviewResult 加 totalOrders + 5 个 prev* 字段, 支持区间对比算环比
- TradeTrendItemResult 加 count, 支持交易笔数趋势
- 新增 5 个 Result: RefundTrend/ProviderSuccess/HourlyDist/AmountRange/MerchantRank
- TradeReportMapper 新增 6 个聚合:
  · totalOrders 按 create_time 口径(失败单也计入分母)
  · providerSuccess 用 FILTER + NULLIF 算成功率
  · amountRange 用 CASE WHEN 分 5 桶(0-50/50-200/200-1000/1000-5000/5000+)
  · merchantRank JOIN mch_info 取商户名
- DashboardTradeService: overview 区间模式 + 上期对比, 各维度补零/补桶/算占比
- DashboardTradeController: 8 个 endpoint, days 与 start/end 二选一
- pay_trade 加 provider 冗余列, PayUniHandleService 支付成功 sync 时同步写
- update-tables.sql 加 provider 列 DDL + 历史 normal/gateway 数据回填
2026-07-19 11:07:40 +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
bc4e388dfd feat(merchant): 默认应用/门店策略统一治理(唯一约束/删除阻挡/异常分类)
- 数据库加部分唯一索引 uk_mch_app_info_default / uk_mch_store_info_default 兜底
- Service.delete 检查默认项, 禁止删除默认应用/门店
- MchAppInfoService.add 首应用自动默认, 与 MchStoreInfoService 对齐
- resolveApp 异常分类: 默认应用不存在 vs 已停用 vs 指定应用异常
- resolveStoreNo 改抛异常 (替代返回 null), 与 resolveApp 策略对齐
- update-datas.sql 提供脏数据/缺默认项诊断查询
- 6 语种 i18n 新增 5 个错误 key
2026-07-18 23:56:22 +08:00
DaxPay Dev
7d55e385ce refactor(refund): 退款单模型重命名并对齐 trade 关联字段
将 PayRefundOrder 统一为 RefundOrder,运行时服务/参数同步改名;
表结构按 trade_no、trade_type、relation_order_no 对齐实体;
退款回调支持 refundNo/relationOrderNo/outRefundNo 反查;
管理端抽取 TradeOrderDetailAssembler,各通道退款策略同步适配。
2026-07-17 18:42:52 +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
0d22a53fa6 feat: 预置用户协议与隐私政策数据(Web端/中文)
- 用户协议(USER_AGREEMENT)与隐私政策(PRIVACY_POLICY)各一条
- 通用支付平台模板,含 [平台名称] 等占位符
- 版本状态 PUBLISHED + default_protocol=true,findDefault 可直接查询
- 可重复执行(ON CONFLICT DO NOTHING)
2026-07-16 13:56:54 +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
4e780b6860 feat(device): 码牌支持 H5/小程序落地类型并精简 MapStruct 映射
新增 QrCodeProgramTypeEnum,扫码链接按类型分流 /h 与 /m;批量创建写入 programType(创建后不可改),并补齐校验与多语 i18n。Convert 改为单源同名映射,资金字段由 Service 补充;清空已落地的 update-tables.sql。
2026-07-15 16:48:13 +08:00
DaxPay Dev
55ca3173fc feat(pay): pay_trade 冗余 channelMchNo 与 storeNo
资金凭证增加通道商户号、门店号轻量组织冗余,建单时从容器/路由结果拷贝,便于资金列表与店级汇总免 JOIN;同步 DDL 与查询返回字段,并补齐普通支付门店校验落库。
2026-07-15 14:49:40 +08:00
DaxPay Dev
07e147be4a feat(pay): 码牌支付主链路与订单 source 方案 C
码牌走普通订单(source=cashier_code),通道路由复用聚合配置(ClientEnvPayResolve);
容器 source 权威并冗余到 pay_trade;预留 client runtime(h5/mini)。
同步订单门店 store_no 字段与校验入口。
2026-07-15 14:36:02 +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
6551777535 refactor(pay): 付款码字段统一为 authCode 并拆分 OAuth 校验文案
落库/查询 barCode 对齐 unipay 入参 authCode,DB 列 bar_code 迁移为 auth_code;validation 拆出 oauthCode 避免与付款码混用。
2026-07-15 11:05:09 +08:00
DaxPay Dev
42b37bd2eb refactor: 收敛路由 Resolver/Matcher 并统一支付分布式锁
删除 ClientEnv/Product/Container Resolver 与 Basic/Scene Matcher,运行时路由内聚到 PayRouteService,单条产品解析归 ChannelMerchantManager,容器字段一次回表读取;配置侧 RouteBatchContext 批预加载保持不变。支付/关单/退款/同步/网关等链路改用 LockExecutor,并清理 update SQL 与相关 i18n。
2026-07-14 22:12:57 +08:00
DaxPay Dev
a06bef0a28 refactor(gateway): CashierScene 重命名为 ClientEnv 客户端环境
将聚合扫码与收银台共用的环境识别从收银场景语义改为客户端环境,
避免与支付渠道/沙箱环境混淆。枚举 code 保持不变,同步表名/字段/i18n。
2026-07-14 21:17:30 +08:00
DaxPay Dev
abe0a243ea refactor(gateway): 对齐网关业务单与普通支付容器并收敛无用字段
预下单 orderNo 改用 ORD 号段,补齐 extraParam/relationOrderNo 与 Result 字段;
支付回写后 reload 容器避免 payBody 丢失;终态 failed 校验对齐 Normal。
网关不支持线下被扫,删除 terminalNo/barCode 及相关 API 与 DDL 列。
2026-07-14 19:13:59 +08:00
DaxPay Dev
2b2d030165 refactor(pay): 业务单 orderNo 与资金 tradeNo 分离,收敛订单容器边界
- 独立生成 ORD/PAY 号,默认上送 orderNo,relationOrderNo 落 trade 作反查权威

- payBody 仅落容器,trade 去掉 payBody/expiredTime

- 容器新增 failed 态,失败与关单/超时区分;对外与管理端同时暴露双号
2026-07-14 18:47:27 +08:00
DaxPay Dev
43d8cb293d feat(pay): 付款码前缀识别、退款预占结算与订单入账/通道AppId
移除 aggregate_pay_barcode,按 authCode 前缀映射分钱包 method;退款引入预占与失败回滚并支持网关单;订单增加 posted_amount/channel_app_id,opAppId 统一为 channelAppId。
2026-07-14 18:38:51 +08:00