Skip to content

Releases: 1227cwx/HDupay

v0.1.0

Choose a tag to compare

@1227cwx 1227cwx released this 05 Jul 10:12

✨ 更新亮点

Tip

本次更新是以 安全性、稳定性、可维护性 为主的系统升级

  • 支付订单查询安全性
  • 链上监听准确性
  • 归集和转出任务稳定性
  • Gas 钱包并发保护
  • OpenAPI / 易支付兼容安全性
  • 数据库初始化完整度
  • 后台路由和访问控制规范性

🧩 新增功能

  • 支付页面公开访问开关
  • 订单访问令牌保护
  • 每笔订单独立监听进度
  • Gas 补充交易状态记录
  • 默认网络、代币、汇率初始化数据

🛠 优化调整

1. 订单监听更安全

监听逻辑从原来的全局游标方式,优化为:

订单级监听起点 + 网络/代币统一扫块

这样既避免每个订单单独扫块造成 RPC 压力,也避免全局游标导致新订单漏扫。

2. 归集任务按网络串行处理

归集任务现在按网络加锁执行:

  • 同一个网络同一时间只处理一个归集任务。
  • 避免多个任务同时使用 Gas 钱包,导致 nonce 冲突。
  • 已发送交易的任务不会重复发交易。

3. 转出任务按网络串行处理

转出任务也改为按网络串行处理:

  • 防止重复转出。
  • 防止 Gas 钱包并发发交易。
  • 异常任务可按状态恢复。

4. 统一 Gas 钱包锁

归集和转出只要需要 Gas 钱包发交易,都会先拿统一网络锁,这样可以更好地保护 Gas 钱包交易顺序。

5. 钱包加密密钥缓存

WALLET_ENCRYPTION_KEY 现在会缓存到内存中:

  • 不再每次加密/解密都读取 .env 文件。
  • 减少长驻进程下的文件读取开销。

6. 钱包密钥结构优化

网络账户密钥改为保存账户级 xprv:

  • 根钱包保存根 seed。
  • 网络账户保存当前账户级 xprv。
  • 单个网络账户泄露时,不会直接影响其它网络账户。

7. Pay 页面加载体验优化

支付页面在带订单号访问时:

  • 不再先加载创建订单选项。
  • 直接加载订单状态。
  • 易支付订单也可以直接通过易支付订单号轮询状态。
  • 支付成功后会自动清理 URL,回到默认 /pay

🐞 BUG 修复

1. 修复订单过期不冻结问题

订单过期检查提前执行,不再依赖 RPC 请求成功。
即使当前网络暂时没有继续扫块,也可以正确处理过期订单和冻结子地址。

2. 修复监听可能跳块的问题

移除旧的全局监听游标表,改为每个订单保存自己的扫描进度,避免新订单被旧游标跳过。

3. 修复公开订单详情暴露问题

删除公开订单详情接口,只保留必要的订单状态查询,并要求携带访问令牌。

4. 修复地址分配并发风险

创建订单、分配地址、写入订单现在放在同一个事务中处理。
地址分配也增加了原子条件,避免多个订单抢到同一个地址。

5. 修复易支付绑定重复问题

易支付订单绑定收款订单时增加原子条件,避免并发情况下重复绑定。

6. 修复 OpenAPI 删除风险

API 配置删除前会检查是否有关联数据:

  • 交易订单
  • 易支付订单
  • 回调日志

如果已经有关联数据,则不能删除,只能禁用。

7. 修复归集/转出 processing 卡死问题

如果任务异常停留在处理中状态,系统会按网络账户超时时间自动恢复:

  • 已有交易哈希:恢复到链上确认状态。
  • 没有交易哈希:转为需要手动处理。

8. 修复后台历史路由残留

删除 /hdupay/transactions 历史兼容路由,避免无效页面继续访问。

🔐 安全增强

1. URL 安全校验

回调地址和同步跳转地址增加安全校验:

  • 只允许 http://https://
  • 禁止 localhost。
  • 禁止内网 IP。
  • 域名解析后如果指向内网地址,也会拒绝。
  • 禁止自动跟随回调重定向。

⚠️ 升级注意事项

  • 历史订单不做兼容处理,建议使用新订单测试本功能。
  • 建议升级前备份数据库与 .env 配置文件。

v0.0.3

Choose a tag to compare

@1227cwx 1227cwx released this 04 Jul 18:00

🐞 BUG 修复

  • 修复 订单过期冻结依赖 RPC 扫描流程。
  • 修复guzzle复用问题。
  • 修复RPC 响应读取后主动关闭 response body
  • 修复订单过期冻结提前执行

⚠️ 升级注意事项

  • 历史订单不做兼容处理,建议使用新订单测试本功能。
  • 建议升级前备份数据库与 .env 配置文件。

v0.0.2

Choose a tag to compare

@1227cwx 1227cwx released this 04 Jul 15:22

🛠 优化调整

1. 后台页面改用后台专用收款配置接口

  • 后台页面不再请求公开接口。
  • 后台和公开页面接口路径更清晰。
  • 配合后台域名隔离功能,避免跨域名访问逻辑冲突。

2. 后台域名与公开访问域名隔离

  • 提高后台入口隔离性。
  • 避免公开域名暴露后台页面。
  • 避免后台域名被用于公开支付页。

3. 按订单金额绑定确认区块数

  • 小额订单可以更快确认。
  • 大额订单可以等待更多确认。
  • 订单确认进度与每笔订单绑定,页面显示更准确。
  • 归集任务确认数与来源订单一致。
  • 转出任务统一按最大确认数处理。

⚠️ 升级注意事项

  • 历史订单不做兼容处理,建议使用新订单测试本功能。
  • 建议升级前备份数据库与 .env 配置文件。

v0.0.1

Choose a tag to compare

@1227cwx 1227cwx released this 04 Jul 11:21

✨ 更新亮点

  • 新增按订单金额自动匹配确认区块数的逻辑,全链路确认规则统一清晰。
  • 全网络支持「小额确认数 + 大额确认数」双档位配置,灵活适配不同场景。
  • 充值、监听、归集、转出全流程确认逻辑对齐,业务规则更透明。
  • Polygon 网络默认确认数优化,小额订单确认效率大幅提升。

🧩 新增功能

1. 网络配置新增双档位确认规则

  • 每个网络现已支持两套确认区块数配置,实现按金额差异化确认
  • 最小确认区块数:适用于小额订单,兼顾到账速度。
  • 最大确认区块数:适用于大额订单,保障交易安全性。
  • 同时新增大额阈值配置项,系统以此为边界自动判断订单档位。

2. 订单创建自动锁定确认区块数

  • 创建充值订单时,系统将根据订单应付稳定币金额,自动匹配对应档位的确认区块数并固定生效。

🛠 优化调整

  • 梳理充值订单、区块监听进度、归集任务、转出任务的确认判定逻辑,规则边界更清晰。
  • Polygon 网络默认确认数由固定 128 调整为:小额 20 区块、大额 32 区块,显著提升小额订单确认体验。

🐞 BUG 修复

  • 修复 Polygon 固定 128 个确认导致小额订单等待过久的问题。
  • 修复充值监听、确认进度、归集确认过度依赖网络全局确认数的问题。

⚠️ 升级注意事项

  • 历史订单不做兼容处理,建议使用新订单测试本功能。
  • 建议升级前备份数据库与 .env 配置文件。