daxpay
|
ad07f6b225
|
chore(release): 升级至 4.0.0-beta2, 全量同步表结构与种子数据
- 全部模块 pom.xml + capability-wechat/README.md + application-dev.yml 版本号 beta1 -> beta2
- _config/sql/table.sql 全量表结构(含转账订单/直连商户新表新字段)
- _config/sql/data.sql 全量种子数据(经 redact-data.mjs 脱敏)
|
2026-08-05 14:25:06 +08:00 |
|
daxpay
|
e35bc726a0
|
fix(risk): 海外IP检查 IPv6 直通放行, 修复 NetUtil.isInnerIP 对 IPv6 抛异常
|
2026-08-04 16:40:54 +08:00 |
|
daxpay
|
01a5eb89b6
|
refactor(notice): 通知系统重构, protocol 拆分为 transport/format/payload
- 删除 notice/protocol 与 NoticeProtocolEnum, 拆为 transport(HTTP/MQ 发送通道) 与 format(报文格式) 两维度
- 新增 notice/payload(信封与载荷构造) 与 notice/job(NoticeRetryJob 重试调度)
- NoticeDispatcher/SendEngine/RetryPolicy 适配新枚举, MchNoticeTask 补 transport/format 字段
- NoticeEventEnum 扩展 pay.timeout/pay.cancel/refund.fail/risk.hit, notice_event i18n 全语种同步
- EasyPay 插件通知由 NoticeSender 改为 PayloadBuilder
- i18n: 删除 notice_protocol.json, 新增 notice_format/notice_transport.json(10 语种)
- MchAppNotifyConfigService 补充 NoticeDispatcher 读取说明
|
2026-08-03 19:49:44 +08:00 |
|
daxpay
|
e54bf5e734
|
refactor(risk): 风险命中记录移除运营处置流程, 删除 handle 接口/枚举/参数与处理字段
|
2026-08-03 12:01:51 +08:00 |
|
daxpay
|
57b271de57
|
test(risk): 新增 DefaultPayRiskChecker 单测, 覆盖海外IP拦截与黑名单命中
模块首个测试: pom 加 junit5/mockito 依赖; 28 个用例覆盖海外 IP 网段短路(192.168/10/172.16/127)、
xdb 文本兜底(Reserved/内网IP)、海外阻断, 以及 IP/支付宝/微信黑名单命中与事后补录。
回归保护本次「私网 IP 误判海外」修复。
|
2026-08-03 11:40:54 +08:00 |
|
daxpay
|
d83597b462
|
fix(risk): 海外IP拦截误伤内网地址, 入口加网段判定直通放行
DefaultPayRiskChecker#checkOverseasIp 原仅靠 xdb 文本标注(isp=内网IP)识别内网,
新版 xdb 对保留地址段返回 country=Reserved/isp=0 导致私网IP(如192.168.x.x)被误判为海外拦截。
入口用 NetUtil.isInnerIP 网段判定直通, 并保留 isp=内网IP/country=Reserved 双保险兜底。
|
2026-08-03 11:12:40 +08:00 |
|
daxpay
|
dea3f8715b
|
refactor(result): MchBaseResult 的 mchNo->mchName @Trans 走继承, 删除 5 个子类冗余的 mchName 字段与注解声明
|
2026-08-02 20:27:12 +08:00 |
|
daxpay
|
842681b2c4
|
refactor(payment): self 注入统一 final 构造注入; EasyPay 结果增 mchName @Trans 翻译
- PayCallbackService/RefundService 的 self 注入由 @Lazy @Autowired 字段改 final 构造注入
- RefundService 补 PayRouteService import 以解析 /// 文档链接
- GatewayTimeoutService 消除冗余 finalOrder 中转变量(lambda 直接用 current)
- EasyPayOrderResult/EasyPayRefundOrderResult 增 mchName 走 @Trans 按 mchNo 翻译
- EasyPayCloseV2Service 删除未使用的 EasyPayOrderManager 依赖
|
2026-08-02 10:45:30 +08:00 |
|
daxpay
|
42e0d69f9a
|
refactor(payment): 商户前缀分域统一 /merchant/+/mch/归一为/mch/(商户端)+/admin/merchant/(运营端), 小程序/app-merchant/改/app-mch/, 清理冗余子路径, MchUserAdminController双路径, 废弃/mini/mch/**, SensitiveWord补充来源识别
|
2026-08-01 14:23:00 +08:00 |
|
daxpay
|
ec0e6e01bc
|
refactor(payment): Controller @RequestParam散参数治理, Dashboard查询对象化(TradeRangeQuery)合并Service双套重载, POST多参数改@RequestBody, EasyPay删除useCancel, 清理15处裸注解
|
2026-08-01 13:11:55 +08:00 |
|
daxpay
|
523289e6d0
|
feat(risk): 接入海外IP地域拦截风控维度, 复用ip2region判定境外IP, 新增overseas_ip命中类型, 受风控总开关门控
|
2026-07-31 20:58:14 +08:00 |
|
daxpay
|
1ba1e18712
|
refactor(payment): 交易/退款/易支付查询分端化, 运营端修复商户名称翻译
- 新增 admin/merchant 分端 Service(PayTrade/NormalPayOrder/RefundOrder), 替换 core 共享查询服务
- 运营端分页/详情直接 transService.translate 翻译商户名称, 修复列表 mchName 为空显示 '-'
- 商户端改用 PaymentContext 强制覆盖 mchNo, 取代清空入参+TenantLine 兜底
- 易支付订单/退款查询同步拆分双端 Service 与 Controller, sync/close 直达内核 PaySyncService/PayCloseService/RefundSyncService
- App 端转发壳改指向分端 Service, 删除 core 共享 3 类
|
2026-07-31 17:17:25 +08:00 |
|
DaxPay Dev
|
35eaac10fa
|
feat(easypay): 退款订单管理全套(实体/DAO/Service/Controller)与插件菜单权限码
|
2026-07-26 22:53:41 +08:00 |
|
DaxPay Dev
|
e8f56fbb47
|
fix(risk): 事前风控移至 doBeforePay 后并补齐成功路径事后补录
微信 openId 名单依赖 channelAppId 精确匹配,须在通道预处理回填后再拦截;查单/回调成功统一经 PayUniHandleService 仅用 buyerId 补录命中。退款与转账本期不接入。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-07-24 16:50:20 +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
|
754a74721f
|
feat(notice): 新增商户出站通知管线(任务/重试/协议SPI)
统一订单级与应用级 webhook,接入支付/退款终态与易支付协议发送,并提供管理端任务查询与手动重发。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-07-21 13:47:38 +08:00 |
|
DaxPay Dev
|
912a64ee5b
|
refactor(risk): 清理 openId 名单降级相关注释(分级配置已承接)
|
2026-07-20 21:16:33 +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
|
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
|
9d122f6941
|
feat(admin): 列表商户列补 mchName 翻译并统一 Fields 常量
订单/风控/域名验证等 Result 增加 @Trans(mchNo->mchName),source/result 使用 MchBaseResult/MerchantInfo 的 Fields 常量;Service 分页与详情调用 TransService.translate;码牌存量字面量一并修正。
|
2026-07-17 08:16:25 +08:00 |
|
DaxPay Dev
|
a42052b821
|
feat(risk): 新增支付风控插件(黑名单与命中记录)
新增 daxpay-plugin-risk 模块,支持黑名单管理、风险命中记录与支付前风控校验;补充表结构/菜单权限及多语言枚举与错误文案。
|
2026-07-15 23:08:19 +08:00 |
|
DaxPay Dev
|
4bde734c0b
|
docs(easypay): 补全易支付插件模块 /// 注释与 Schema 描述
为 param/result/dao/convert/enum/service/util 统一补充类、字段与方法注释,并对齐 @Schema 中文描述,无业务逻辑变更。
|
2026-07-15 14:47:12 +08:00 |
|
DaxPay Dev
|
7a3d1b4f3c
|
chore(release): 统一产品版本为 4.0.0-beta1
将全模块 Maven 版本从 4.0.0-SNAPSHOT 调整为 4.0.0-beta1,并同步 Swagger 版本与文档说明。
|
2026-07-15 14:32:25 +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
|
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
|
8c3811eefa
|
refactor(build): 引入 daxpay-parent 统一版本与 compiler 治理
- 根 pom 继承 SB parent,集中所有版本属性与 maven-compiler-plugin 配置
- 6 个一级模块改为继承根 pom,删除重复的 properties 与 compiler 声明
- 清理冗余 wxjava/alipay 属性(daxpay-payment/daxpay-plugin/capability-wechat)
- mapstruct.version 声明处 6→1,maven-compiler-plugin 声明处 7→1,java.version 声明处 7→1
|
2026-06-22 21:14:38 +08:00 |
|
DaxPay Dev
|
be14689803
|
chore(upgrade): 升级 Spring Boot 4.0.6 → 4.1.0 及依赖版本治理
- Spring Boot parent 4.0.6 → 4.1.0 (6 pom)
- springdoc 3.0.2 → 3.0.3, aws-sdk 2.42.36 → 2.46.15, caffeine 3.2.3 → 3.2.4, ip2region 3.3.6 → 3.3.7
- 移除已停更的 lombok-mapstruct-binding (A方案验证通过)
- 构建命令 -DskipTests → -Dmaven.test.skip=true (适配 SB 4.1 AOT 变化)
|
2026-06-22 21:05:45 +08:00 |
|
DaxPay Dev
|
464bf7d89d
|
refactor: 包名与 Maven 坐标由 org.dromara.daxpay 迁移至 cn.daxpay.open
- groupId/Java package/源码目录: org.dromara.daxpay -> cn.daxpay.open
- 同步更新 pom groupId、AutoConfiguration.imports、@ComponentScan、logging logger、mainClass 等全限定引用
- 编译验证通过 (mvnd clean install -DskipTests)
|
2026-06-20 00:01:50 +08:00 |
|
DaxPay Dev
|
405bca4f22
|
chore: 清理冗余依赖并统一版本号
- 删除未使用的 spring-retry 依赖及 @EnableRetry 注解
- 统一 WxJava 版本至 4.8.4.B
- 统一 MapStruct 版本至 1.6.3
- 删除未使用的 autopoi.version 和 httpclient.version 属性
|
2026-06-15 11:42:02 +08:00 |
|
bootx
|
7e8646cb88
|
chore: 清理商业版遗留内容
- 删除 OCR 模块 (capability-ocr) 及相关配置
- 删除代理商 (agent) 全部代码和 i18n 文件
- 清理商业版品牌标识 (融合端/商业版/daxpay4/cn.bootx)
- 移除 daxpay-open-payment/daxpay-open-sdk/daxpay-open-channel 等旧模块
- 重构为新模块结构 (daxpay-payment/daxpay-platform/daxpay-start)
|
2026-06-12 21:05:03 +08:00 |
|