erio
|
014f984f32
|
chore: mark project as archived — payment integrated into Sub2API
v1.15.4-final
|
2026-04-12 18:36:38 +08:00 |
|
erio
|
b14f52dd4a
|
feat: StripeProvider 支持从实例配置读取密钥,无需环境变量
- StripeProvider 支持 instanceConfig(secretKey/publishableKey/webhookSecret)
- ensureDBProviders 在环境变量缺失时从活跃实例配置注册 provider
- createPaymentOrder 对 stripe 也注入实例配置
- user route 的 stripePublishableKey 从 provider 实例读取
v1.15.4
|
2026-04-04 20:17:16 +08:00 |
|
erio
|
00634fd115
|
fix: 覆盖模式下支持从数据库 ENABLED_PROVIDERS 注册支付 provider
- 新增 ensureDBProviders() 异步函数,当 OVERRIDE_ENV_ENABLED=true 时
从数据库读取 ENABLED_PROVIDERS 补注册 provider(不再依赖环境变量 PAYMENT_PROVIDERS)
- 覆盖模式下过滤无活跃实例的支付类型,禁用的实例对应的支付方式不展示
- 所有支付相关入口点(API routes、order service、webhook)统一使用 ensureDBProviders
v1.15.3
|
2026-04-04 19:13:40 +08:00 |
|
erio
|
22dc7b3ada
|
fix: 恢复 providerInstanceId 为 null 时不允许退款申请
v1.15.2
|
2026-04-03 21:47:52 +08:00 |
|
erio
|
1bb75b2baa
|
fix: 旧订单允许退款 + 移除自动退款 + 改为默认扣除余额/订阅开关
- providerInstanceId 为 null 的旧订单默认允许退款申请
- 移除 AUTO_REFUND_ENABLED 自动退款功能
- 改为 DEFAULT_DEDUCT_BALANCE:控制退款对话框默认勾选状态
v1.15.1
|
2026-04-03 20:36:11 +08:00 |
|
erio
|
7622da5dfb
|
merge: PR #20 用户退款申请 + 部分退款 + 自动退款
合并 fix/refund-workflow-and-deploy-updates 分支,解决 6 个冲突:
- 新增 REFUND_REQUESTED / PARTIALLY_REFUNDED 状态
- 用户退款申请接口 POST /api/orders/[id]/refund-request
- 部分退款支持(amount 参数)
- 自动退款开关 AUTO_REFUND_ENABLED
- 保留已有的 prepareDeduction/executeDeduction/rollbackDeduction 拆分
- 保留订阅退款、deductBalance 开关、实例退款开关
- 修正幂等键、审计日志字段
v1.15.0
|
2026-04-03 20:03:29 +08:00 |
|
erio
|
c6b3a43dd1
|
refactor: processRefund 拆分为 prepare/execute/rollback,移除 _refundHandled hack
- 提取 prepareDeduction / executeDeduction / rollbackDeduction 辅助函数
- 网关退款失败+回滚成功时返回 { success: false } 而非 throw
- 幂等键加时间戳避免重试去重
- 前端处理 success: false 结果
v1.14.1
|
2026-04-03 18:25:59 +08:00 |
|
erio
|
df16796ee8
|
style: prettier 格式修复
v1.14.0
|
2026-04-03 02:18:10 +08:00 |
|
erio
|
193d98d1cd
|
feat: 实例级退款开关 + 退款扣余额/订阅开关 + 管理员退款重试
- PaymentProviderInstance 新增 refundEnabled 字段(默认关闭),管理 UI 支持列表行/编辑弹窗 Toggle
- 用户端 canRefundRequest 需同时满足 balance+COMPLETED+实例refundEnabled
- processRefund 新增 deductBalance 参数(默认ON),余额不足时扣到0
- 订阅订单退款支持 extendSubscription 负数扣减天数,带幂等键
- 网关退款失败回滚后正确恢复 COMPLETED(_refundHandled 机制)
- REFUND_FAILED 订单支持管理员重试退款
- RefundDialog 展示余额/订阅信息,显示 payAmount,订阅剩余天数
- 管理员订单列表补充 payAmount/refundAmount/refundAt 字段
- 新增 66 个退款相关单元测试(processRefund/API路由/canRefundRequest)
|
2026-04-03 02:15:17 +08:00 |
|
erio
|
6dc7b1f569
|
fix: 更新 limits 测试适配 async + getSystemConfig,修复 format
v1.13.3
|
2026-04-02 18:23:23 +08:00 |
|
erio
|
5fc7ec9b3d
|
fix: 在线配置覆盖对齐——限额校验统一走 getSystemConfig(DB→env) 模式
- /api/orders 金额校验从 getSystemConfig 读取 RECHARGE_MIN/MAX_AMOUNT
- createOrder 每日限额从 getSystemConfig 读取 DAILY_RECHARGE_LIMIT
- getMethodDailyLimit/getMethodSingleLimit 改为 async,走 getSystemConfig
- OVERRIDE_ENV_ENABLED=true 时跳过 provider 硬编码默认值(singleMax=1000)
|
2026-04-02 18:21:04 +08:00 |
|
IanShaw027
|
8b10b747cc
|
feat: 增加退款申请审批流并支持部分退款与自动退款
新增用户退款申请入口、管理员确认退款能力、部分退款状态流与自动退款开关,并统一退款金额校验与展示。
|
2026-04-01 23:05:50 +08:00 |
|
IanShaw027
|
6f1621937a
|
fix: 更新部署网络与容器监听配置
让应用容器绑定 0.0.0.0,并为当前部署环境补齐外部网络接入,修复反向代理访问与 Sub2API 联通问题。
|
2026-04-01 23:04:32 +08:00 |
|
erio
|
eaa5c560cd
|
fix: 聚合实例剩余日容量,singleMax受剩余额度约束,剩余<singleMin时渠道不可用
v1.13.2
|
2026-04-01 18:23:07 +08:00 |
|
erio
|
61c8dc32df
|
style: prettier 格式修复
v1.13.1
|
2026-04-01 17:52:02 +08:00 |
|
erio
|
331ff29fab
|
feat: queryMethodLimits 聚合实例级限额,selectInstance 无可用实例时明确报错
|
2026-04-01 17:50:18 +08:00 |
|
erio
|
14a9ba4852
|
style: prettier 格式修复
v1.13.0
|
2026-04-01 16:36:59 +08:00 |
|
erio
|
8e8dbe2133
|
docs: README 新增支付配置在线管理说明,支持管理后台或环境变量两种方式
|
2026-04-01 16:35:04 +08:00 |
|
erio
|
46f1ad274e
|
feat: 实例限额改为单笔最小/最大+每日总限额,selectInstance按金额过滤
v1.12.21
|
2026-04-01 16:09:23 +08:00 |
|
erio
|
c99dba9fdf
|
style: 实例表单必填项加红色星号,Admin Key与最多订单同行
v1.12.20
|
2026-04-01 15:04:45 +08:00 |
|
erio
|
5291a67b63
|
feat: 取消频率限制返回结构化JSON由前端国际化;订阅页支付渠道品牌颜色
v1.12.19
|
2026-04-01 14:13:34 +08:00 |
|
erio
|
2bcc0736a3
|
fix: 取消频率限制改为限制创建新订单,而非阻止取消
v1.12.18
|
2026-04-01 13:50:55 +08:00 |
|
erio
|
892f882d7c
|
style: 启用余额充值开关移到基础配置最顶部
v1.12.17
|
2026-04-01 13:34:01 +08:00 |
|
erio
|
b30bb7f2fe
|
style: 取消频率限制改名为限制取消频率,开关与配置项放到同一排
v1.12.16
|
2026-04-01 12:46:48 +08:00 |
|
erio
|
638cda2108
|
feat: 首次开启覆盖环境变量时自动预填所有支付配置并创建实例
- env-defaults 返回服务商实例默认配置(从环境变量读取凭证)
- 首次开启开关时自动创建已配置服务商的实例(仅当无实例时)
- 补充预填 MAX_PENDING_ORDERS
v1.12.15
|
2026-04-01 11:04:09 +08:00 |
|
erio
|
21918a9b25
|
fix: 覆盖环境变量开关只在点击保存时持久化
- 新增 OVERRIDE_ENV_ENABLED 标记,不再从配置项推断开关状态
- 避免误打开覆盖环境变量:切换开关不会自动保存,必须点保存设置
v1.12.14
|
2026-04-01 10:50:28 +08:00 |
|
erio
|
145a3ac2c2
|
fix: Admin API Key 掩码值加载时显示为空(留空则使用环境变量)
v1.12.13
|
2026-04-01 10:40:18 +08:00 |
|
erio
|
636d46ee52
|
refactor: Sub2API Key、最多支付中订单、充值限额/超时移入覆盖环境变量区
基础配置区只保留商品名、余额充值开关、取消频率限制
v1.12.12
|
2026-04-01 10:08:23 +08:00 |
|
erio
|
93592974e9
|
fix: 无实例的服务商类型不显示占位卡片
v1.12.11
|
2026-04-01 09:14:39 +08:00 |
|
erio
|
5368eb4861
|
refactor: 易支付渠道 ID 移入渠道开关旁,开启渠道即填入对应 ID
- 支付宝/微信渠道 ID 输入框跟随渠道开关显示
- 从凭证配置区移除 cid/cidAlipay/cidWxpay 字段
v1.12.10
|
2026-04-01 03:05:44 +08:00 |
|
erio
|
37a51e2b81
|
refactor: 充值限额/超时移入基础配置区,始终保存
- 最小/最大充值金额、每日限额、订单超时从覆盖环境变量移到基础配置
- 这些配置始终保存,不再依赖覆盖环境变量开关
|
2026-04-01 03:04:39 +08:00 |
|
erio
|
ef43ba3fe2
|
feat: 实例级别限额配置 + 负载均衡器日限额过滤
- PaymentProviderInstance 新增 limits JSON 字段(per-channel dailyLimit/singleLimit)
- 负载均衡器选择实例时过滤超出日限额的实例
- selectInstance 传入 paymentType 支持渠道级过滤
- 易支付支持按渠道(支付宝/微信)分别配置限额
- 实例编辑弹窗增加可折叠限额配置区
- 服务商管理并入覆盖环境变量卡片,保存按钮移至底部
v1.12.9
|
2026-04-01 02:30:36 +08:00 |
|
erio
|
203e4d2c6c
|
refactor: 支付配置页面布局优化
- 基础配置与服务商管理拆为独立卡片
- 服务商管理按类型分组展示实例列表
- 实例列表增加内联 Toggle 实时启用/禁用
- 编辑弹窗中排序和启用改为两列表单布局
v1.12.8
|
2026-04-01 02:10:29 +08:00 |
|
erio
|
6961246b8e
|
test: 新增支付配置相关单元测试覆盖
- admin config route: GET/PUT 敏感值掩码、allowed keys、ENABLED_PROVIDERS 保护
- provider instance route: GET/PUT/DELETE 配置加解密掩码、凭证变更保护、删除保护
- load balancer: round-robin、least-amount、supportedTypes 过滤
- resolve-enabled-types: 类型过滤与回退逻辑
- user route: token 鉴权、sublabel 冲突检测、config 默认值
- sub2api client: getCurrentUserByToken、getHeaders DB 优先、addBalance、searchUsers
v1.12.7
|
2026-04-01 01:43:47 +08:00 |
|
erio
|
80ee3d12ee
|
feat: 支付配置支持在线修改 SUB2API_ADMIN_API_KEY,/api/user 改用 token 鉴权
v1.12.6
|
2026-04-01 00:36:55 +08:00 |
|
erio
|
b1975eba2f
|
refactor: 减少 if/else 嵌套层级,抽取 validateEnabledProviders / checkCredentialChangeAllowed 等方法
v1.12.5
|
2026-04-01 00:06:58 +08:00 |
|
erio
|
cabfa5dc18
|
feat: 有实例的服务商类型禁止关闭(前端提示 + 后端 409 校验)
v1.12.4
|
2026-03-31 23:54:45 +08:00 |
|
erio
|
dec46ab786
|
refactor: 服务商类型 badge 选择(易支付/支付宝官方/微信官方/Stripe)、去掉分组占位改为平铺实例列表、首次开启从环境变量预填充
v1.12.3
|
2026-03-31 23:02:04 +08:00 |
|
erio
|
11747a0cab
|
style: prettier 格式修复
|
2026-03-31 22:48:05 +08:00 |
|
erio
|
b15eee283f
|
refactor: 服务商管理移入覆盖环境变量配置内,统一管理环境变量相关配置
v1.12.2
|
2026-03-31 22:37:49 +08:00 |
|
erio
|
28656bbd59
|
refactor: 支付配置页布局优化 — 覆盖环境变量归入基础配置、支付类型改为 badge 选择、服务商按启用类型动态显示可折叠
v1.12.1
|
2026-03-31 22:21:20 +08:00 |
|
erio
|
4f1d1a3a5a
|
feat: 支付配置页重构 — 服务商分组卡片布局、实例独立渠道配置、构建跳过环境变量校验
v1.12.0
|
2026-03-31 22:08:01 +08:00 |
|
erio
|
9064c78ebb
|
fix: 禁止删除有进行中订单的实例,修改凭证时检查进行中订单
v1.11.1
|
2026-03-31 21:38:01 +08:00 |
|
erio
|
ffbc539f7a
|
feat: 支付服务商多实例负载均衡
- 新增 PaymentProviderInstance 表,支持同一服务商配置多个实例
- 凭证 AES-256-GCM 加密存储
- 负载策略:轮询 / 基于已支付金额(选金额最少的实例)
- 创建订单时自动选实例,回调 URL 带实例 ID
- 回调验签、取消、退款均支持实例感知
- 管理后台:实例增删改查 UI + 负载策略选择
- EasyPay Provider 支持构造时注入实例配置
v1.11.0
|
2026-03-31 21:25:16 +08:00 |
|
erio
|
8505668d56
|
fix: IFRAME_ALLOW_ORIGINS 支持通配符 *,修复 X-Frame-Options 冲突
- 配置 * 时设置 frame-ancestors * 并移除 X-Frame-Options
- 有自定义 origins 时也移除 X-Frame-Options(与 CSP 冲突)
- 无额外 origins 时才保留 X-Frame-Options: SAMEORIGIN
v1.10.21
|
2026-03-31 20:51:47 +08:00 |
|
erio
|
619395def8
|
feat: 支付配置展示服务商卡片分组,渠道开关按服务商归类
- 服务商卡片显示配置状态(已配置/未配置)
- 已配置的服务商下展示其支付渠道开关
- 未配置的服务商灰显,提示需在环境变量中设置
- 服务商和渠道名称支持国际化
v1.10.20
|
2026-03-31 20:45:53 +08:00 |
|
erio
|
720d00c9fd
|
feat: 支付方式改为多选 badge 选择器,支持国际化显示名
v1.10.19
|
2026-03-31 20:31:05 +08:00 |
|
erio
|
3cc558efdc
|
feat: 支付配置支持覆盖环境变量,启用后不可关闭
- 新增「覆盖环境变量配置」开关,首次启用时自动加载环境变量默认值
- 可配置:启用的支付方式、充值金额范围、每日限额、订单超时
- 后端优先读 DB 配置,无值时回退到环境变量
- 新增 /api/admin/config/env-defaults 接口获取环境变量默认值
- 一旦启用并保存,开关锁定不可关闭
v1.10.18
|
2026-03-31 20:22:04 +08:00 |
|
erio
|
71cd271ea1
|
fix: 导航统一到 layout 顶部栏,各页面移除重复导航链接
- layout.tsx 的 NAV_ITEMS 增加「支付配置」入口
- 各 admin 页面的 actions 移除重复的导航 <a> 链接,仅保留功能按钮
v1.10.17
|
2026-03-31 19:40:13 +08:00 |
|
erio
|
07e1ab54bc
|
fix: admin 导航按钮添加 flex-wrap 防止溢出隐藏
v1.10.16
|
2026-03-31 19:15:12 +08:00 |
|