2.9 KiB
2.9 KiB
插件扩展面 + 支付 / 内容付费 — 功能清单
状态
- 对应 SPEC:
docs/specs/plugin-extension-commerce/SPEC.md - 最近更新:2026-08-13 03:40
完成项
核心扩展面
Hook::collect/Hook::filterArticleAccess决策(作者/admin、密码、filter 只许变严)BlogController::show改用 ArticleAccess;密码 POST 解锁后再 resolve- 试读+购买主题模板(default;example fallback)
- API show 经 ArticleAccess;响应含
access;受限无全文 - RSS 受限文无全文
ArticleForm/ Table / Create+Edit 挂载 filament.article.* 扩展点plugin.json:requires/optional/docsPluginManager::enable依赖校验 +isEnabled- 后台插件卡片:依赖展示 + 查看说明
- 使用说明按 locale 选择
README.zh_CN.md,Markdown 渲染为 HTML 侧栏弹层(非 Notification 纯文本)
payment
- 插件 migrations +
loadMigrationsFrom - models:Order / OrderItem / Entitlement / PaymentTransaction
- StubGateway 建单 → 确认页 → 入账 → entitlement →
order.paid - 重复有效权益拒绝建单
- Filament OrderResource + 标记已支付 + 设置/说明页(插件内注册)
- 迁出/替换核心
PaymentPluginPage骨架(导航隐藏) - README + lang
paid-content
- 插件骨架 + PSR-4 +
requires: larablog/payment article_productsmigration/model- 表单 Section 注入 + after_save 落库
- 与
read_password互斥校验 article.access收紧 + 试读截断(渲染后 chars)- 表列「付费」标识
- README + lang
Review 修复(Bugbot 2026-08-12)
HtmlTeaser恒截断,永不返回全文(含 trial ≥ 正文长度)article.access用tightenWith逐个折叠,只许变严PluginManager::docsPath限制在插件目录内(防路径穿越)- 建单/
markPaid事务内复核权益 + pending 单复用 + 跨单重复支付拦截 - checkout 仅接受
visible+published文章 - 复用 pending 单时按当前价格重新定价(避免旧价成交)
文档与测试
docs/plugins.md扩展点 / requires- OpenAPI + ApiV1Test 同步(破坏性说明写入 openapi)
- PHPUnit:依赖、access 矩阵、Stub、重复下单、API/RSS 防泄露
- 破坏性变更说明(匿名 API/RSS 不再泄密码/付费全文)
变更记录
| 时间 | 原因 | 变更 |
|---|---|---|
| 2026-08-12 00:17 | SPEC 定稿后初版 | 创建功能清单 |
| 2026-08-12 00:35 | 实现完成 | 勾选全部完成项 |
| 2026-08-12 01:01 | Bugbot review 5 项发现 | 新增「Review 修复」分组并全部完成 |
| 2026-08-12 01:12 | 用户确认「复用刷新为当前价」 | 补充 pending 单重新定价完成项 |
| 2026-08-13 03:40 | 使用说明英文且无排版 | 中文 README + Markdown 弹层渲染 |