kate522
|
c1a0eade38
|
fix(pay): 余额充值选中预设档位不再因空 custom_price 被 REST 拒绝
选中任一所预设充值档位点「立即支付」,必然弹「无效参数:custom_price」。这是
WP REST 的参数校验层拦截,请求根本没进业务回调。
原因是 WP REST 的 default 只在「键完全缺失」时生效,键存在但值为空串时 default
不参与,空串会直接送进 pattern 校验:
'custom_price' => ['default' => '0', 'pattern' => '^(0|[1-9]\d*)(?:\.\d{1,2})?$']
而前端提交时无条件带上该字段(custom_price: custom),选预设档位时 custom 恒为
'',于是必然校验失败。另一个更隐蔽的变体:后台若关掉「自定义充值金额」,模板里
根本不渲染该输入框,customEl 为 null,custom 仍是 '',同样报错——也就是说这个
缺陷在只放开预设档位的配置下 100% 复现。
同文件的积分兑换路径(/pay/balance/points-exchange)早已写成
custom: validCustom ? custom : '0',余额充值这条只是漏了同样的处理。
- BalanceServiceRest:custom_price 的 pattern 改为整体可选分组
^(?:(?:0|[1-9]\d*)(?:\.\d{1,2})?)?$,显式放行空串;rest_charge_create 把空串
归一化为 '0',与参数声明的 default 语义对齐,避免 AssetAmount::balance() 拿到
空串后抛 balance_decimal_invalid
- credits.js:非自定义金额时显式送 '0',与积分兑换路径写法一致
- 契约测试补 4 条断言:模式可选、允许空串、回调归一化、前端送 '0'
两层都改是有意的:JS 会被浏览器与 CDN 缓存,旧缓存仍会发空串,后端放行兜住;
后端放行则保证任何客户端都不再被这个字段卡住。放宽仅针对空串,金额格式校验
不放松——007、abc、-1、1e3、1.234 与带首尾空格的值仍一律拒绝。
验证:新 pattern 逐例实测,''、0、1、9.99、9999.99 放行,007、abc、-1、1e3、
1.234、带空格全部拒绝;变异验证把 pattern 改回旧写法后该用例立刻转红,证明回归
测试确实拦得住此缺陷;node --test 全量 370 项 / 370 通过;PHPUnit 44 项 / 106
断言通过。断言未直接比对含反斜杠的整串——JS 字面量与 PHP 单引号串的反斜杠层数
不同会静默比对失败,故拆为不含反斜杠的片段。
|
2026-09-18 23:41:27 +08:00 |
|
kate522
|
b88eab0bfe
|
feat(pay): 卡密兑换入口收敛到三个购买弹窗并对齐参考主题
- 移除余额卡片独立「卡密兑换」通用弹窗,兑换入口分布到充值/积分/会员三个弹窗的支付方式中
- 充值弹窗补齐卡密 logo 与仅卡密时的金额选择隐藏逻辑
- 积分购买弹窗 1:1 复刻参考主题 points-pay modal(商品档位/自定义/支付方式/立即支付),REST 改为 product+custom 契约
- 会员弹窗注入卡密渠道:视图模型透传 card_pass,前端渲染卡密盒并直兑 /pay/card-pass/redeem type=vip
- 后台卡密兑换拆分为余额/积分/会员三个独立开关,VIP 段旧会员卡密组清理
- REST type 改为必填(balance/vip/credits),三类型独立闸门
- 测试重写为 card-pass-modal-redeem 契约,321 项全部通过
|
2026-09-18 12:25:18 +08:00 |
|
kate522
|
a48007a44d
|
feat(payment): 支付&付费菜单按参考主题重构并新增提现策略页
- 子菜单重组为知识付费/余额充值/VIP会员/创作分成/推广返佣/收款接口/提现策略
- 收款接口页 1:1 复刻 Zibll 双下拉结构,仅保留支付宝/微信/PayPal/Stripe/易支付
- 订单前缀/流水号前缀/提现单号前缀配置保留并移入收款接口页
- 知识付费/推广返佣按参考主题全字段复刻,余额充值并入充值卡配置
- 新增 tabbed/between_number/page_select 表单控件及后端 pages 搜索源
- 清理旧 SPA 组件、无消费者 REST 端点与废弃配置键(不写双路兼容)
- 更新存量契约测试至新 schema 文件
|
2026-09-16 19:18:28 +08:00 |
|
kate522
|
9dc278bd83
|
fix payment points
|
2026-09-04 23:35:19 +08:00 |
|
kate522
|
7308f055c7
|
fix(frontend): keep asset and homepage filters in DOM
|
2026-09-03 19:21:24 +08:00 |
|
kate522
|
90fd59b647
|
/user/balance/ 调整
|
2026-08-25 04:20:29 +08:00 |
|
kate522
|
f5c60cd425
|
进行了一些小优化
|
2026-08-24 18:08:06 +08:00 |
|
kate522
|
6674bded6a
|
进行了一些小优化
|
2026-08-24 17:40:35 +08:00 |
|
kate522
|
9d3bfb91cd
|
进行了一些小优化
|
2026-08-24 17:35:46 +08:00 |
|
kate522
|
85a124b886
|
修复支付状态问题
|
2026-08-24 17:21:06 +08:00 |
|
kate522
|
406fb8d6a6
|
修复两个问题
|
2026-08-24 16:52:26 +08:00 |
|
kate522
|
58f3f42bf8
|
修复两个问题
|
2026-08-24 16:38:03 +08:00 |
|
kate522
|
5cae5b5c93
|
积分与余额账务系统硬切重构
|
2026-08-24 15:59:11 +08:00 |
|