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
|
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
|
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
|
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
|
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
|
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 |
|
DaxPay Dev
|
db58674ab7
|
feat(notify): 站内通知表结构与 admin 模块依赖
补充 notify 相关升级 DDL,payment-admin 引入 service-notify 以支撑运营端铃铛/SSE。
|
2026-07-14 12:52:12 +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
|
f021a5d002
|
ref 支付交易相关内容调整
|
2026-07-12 15:48:51 +08:00 |
|
DaxPay Dev
|
25e4b4167f
|
feat(gateway): 新增应用级收银台配置(H5 按场景 / WEB 扁平)
支持收银台支付项 CRUD、method/direct 解析模式、browser 场景与相关 i18n/DDL。
|
2026-07-11 15:56:56 +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
|
cd2ad57891
|
fix(sql): 平台移动端应用表去掉 app_name 列
与 MobileApp 实体字段对齐。
|
2026-07-11 10:21:42 +08:00 |
|
DaxPay Dev
|
1516c46924
|
feat(payment): 聚合扫码配置三级深度与场景子表
支持 AUTO/METHOD/DIRECT 配置深度, 场景子表与路由解析; 同步菜单与 i18n。
|
2026-07-11 10:21:14 +08:00 |
|
DaxPay Dev
|
c9c9ffb614
|
refactor(payment): 开源版移除云音箱/云打印/厂商等硬件对接
硬件对接归商业版; 保留码牌收款能力。同步清理菜单种子与 i18n。
|
2026-07-11 10:15:50 +08:00 |
|
DaxPay Dev
|
f8bc2e204a
|
refactor(payment): 移除 PayBizContainer 过度抽象, 路由参数冗余至 PayTrade
- PayTrade 新增 channelMchNo/capability/bizOrderNo/clientIp 四个冗余字段
- 删除 PayBizContainer 接口, NormalPayOrder/GatewayPayOrder 去掉 implements
- PayStrategyContext 删除 container 字段, 策略直接从 trade 读路由参数
- PaySyncService/PayCloseService/PayCallbackService 删除 loadContainer, 免查容器
- 30 个通道 Sync/Close 策略统一改写(消除 null 检查)
- AlipayCallbackService 回调凭证从 trade 读, 省掉 NormalPayOrder 查询
|
2026-07-11 09:18:50 +08:00 |
|
DaxPay Dev
|
a1f8979edb
|
refactor(channel): 移除通道应用认证配置中的授权回调地址字段
OAuth 回调由平台网关统一生成,不再由微信/支付宝/抖音应用级配置。
|
2026-07-10 17:05:39 +08:00 |
|
DaxPay Dev
|
6f0622fca8
|
feat(device): 运营端支付码牌管理(批量生成/绑定商户/商户名翻译)
支持空白码库存与划拨绑定,分页翻译商户名称;绑定默认走商户默认应用。
补齐码牌菜单落地、batch_no 升级 SQL 与中英校验/错误文案。
|
2026-07-10 16:50:47 +08:00 |
|
DaxPay Dev
|
d5af60142f
|
feat(mobile): 移动端应用配置加密存储与敏感字段脱敏
完善平台级移动端应用配置: app_config/notify_config 改 DataEncryptTypeHandler 加密入库, 返回脱敏, 保存时敏感键空值保留原值; 补建 pay_platform_mobile_app 表。
|
2026-07-09 21:44:54 +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
|
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
|
b7a89ab912
|
feat(payment): 新增微信域名验证文件管理(网关响应MP_verify/JSON上传/平台全局视图/租户穿透/编辑弹窗)
|
2026-07-09 12:39:17 +08:00 |
|
DaxPay Dev
|
c2f2a85eb3
|
dev 数据库脚本文件清空
|
2026-07-08 21:21:24 +08:00 |
|
DaxPay Dev
|
f778e6b553
|
feat(channel): 新增斗拱/富友/河马付/乐刷/易宝通道模块 + 拉卡拉重构(去isv分层) + 通道密钥配置字段扩展与配套SQL/枚举/i18n
|
2026-07-08 17:11:14 +08:00 |
|
DaxPay Dev
|
1c689f04df
|
feat(payment): 通道商户名称修改接口+商户号生成工具, 支付与退款客户端IP兜底, 支付宝扫码能力码统一为ALIPAY_QR
|
2026-07-06 15:30:50 +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
|
f7cc89d35f
|
feat(douyin): 直连支付核心链路对接(下单/关单/退款/同步/回调) + 凭证下发 + 5张配置表
|
2026-07-05 21:34:53 +08:00 |
|
DaxPay Dev
|
b07bb91892
|
feat(payment): 移动端应用管理(平台级)后端: 建表+实体链路+Controller+i18n+菜单
- 新建 pay_platform_mobile_app 表(单表+jsonb, 按端类型+移动平台维度唯一)
- 实体链路 cn.daxpay.open.payment.app.mobile: MobileApp(entity/param/result/convert/mapper/manager/service)
- 枚举: MobileAppTypeEnum(merchant/admin/cashier) + MobilePlatformEnum(wx_h5/wx_mini/alipay_mini/dy_mini/android/ios)
- 运营端 Controller /admin/mobile-app: list/list-by-app-type/get/save/update-enabled, @PermCode(payment:config:mobile_app)
- i18n: error/mobile_app + enum/mobile_app_type + enum/mobile_platform (zh-CN/en-US)
- 权限菜单 iam_perm_menu: 卡片页(40504) + 详情页(40505), 父级=支付配置(405)
|
2026-07-05 12:36:11 +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
|
9742e0fbfe
|
feat(iam): 用户工作台快捷入口偏好(显隐+排序) + 建表
|
2026-07-04 17:02:46 +08:00 |
|
DaxPay Dev
|
05bbd58e92
|
refactor(payment): 清理 old 包,订单查询迁移至 core NormalPayOrder
- 删除整个 old 包死代码(notice/record/event/exception/旧版主流程 service 共67个文件)
- ChannelAuthService/ChannelBasicService 平移至 core/assist/
- UniQueryController/MiniMchOrderQuery 订单查询切到 core NormalPayOrder+PayTrade 双表
- NormalPayOrderManager 新增 findByBizOrderNo
- 新建 web/unipay 对外查询 convert+service
- 清空 update-tables.sql 升级脚本
|
2026-07-03 18:31:56 +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
|
4bb5efdc71
|
feat(channel): 微信/抖音直连商户应用支付能力绑定
- 微信直连(商户级)+服务商(全局级)能力绑定: entity/dao/convert/param/result/service/controller 全套
- 抖音直连(商户级)能力绑定: 同上(抖音仅直连模式)
- resolveApp: 显式配置 > appType推导 > 通道商户首个兜底
- 微信直连应用补全 appType 字段+枚举, 应用删除级联清理关联
- SQL: wechat_isv/wechat_direct/douyin_direct_app_capability 三表
- i18n: error/enum 中英文同步
|
2026-07-02 03:55:59 +08:00 |
|
DaxPay Dev
|
b28de59032
|
feat(alipay): 实现支付同步接口, 完整调用链路接入平台同步基础设施
- SQL: pay_normal_order 新增 channel_mch_no / capability 字段(同步时凭证解析)
- NormalPayOrder 实体加对应字段, PayAssistService 写入路由参数
- 主应用: AlipayDirectSyncStrategy extends AbsSyncPayOrderStrategy
- 主应用: AlipaySyncService 映射 trade_status → PayFundStatusEnum
- 主应用: AlipayChannelClient 加 sync() 方法
- 子应用: Controller 加 /sync 端点, Service 加 sync()(alipay.trade.query)
- 与商业版一致的同步状态映射: TRADE_NOT_EXIST→PROCESSING,
TRADE_CLOSED+有付款时间→SUCCESS(全额退款), TRADE_CLOSED→CLOSE
|
2026-07-01 19:09:29 +08:00 |
|
DaxPay Dev
|
676012c5fb
|
perm 异常处理优化
|
2026-07-01 10:22:05 +08:00 |
|