用途:在 Profile 页面中接入购买后的订阅管理界面,包括当前用户订阅的分页可搜索列表、单条订阅详情,以及取消流程(立即取消或跳转 Stripe Customer Portal)。SDK 已提供 PurchasesTab,Profile 在 Platform 启用变现时自动渲染,因此多数工作是接线而非写 UI。
主要能力:搜索框(300ms 防抖,后端按 item_id__icontains 过滤);状态筛选(All/Active/Trialing/Canceled/Past Due)与条目类型筛选(All/Agent/Course/Program/Pathway)及总数;订阅卡片显示名称、类型徽章、套餐与金额/周期、续费/到期日期、Since 日期、期末取消提示、状态徽章、Legacy 徽章;详情视图含状态、套餐、类型、日期、grandfathered 徽章与输入 cancel 确认的破坏性取消按钮;取消结果为“Subscription Canceled”成功卡或“Open Stripe Portal”卡;每页 8 条分页。
使用方式:先完成认证(/iblai-vibe-auth)并复用 token;.mcp.json 配置 @iblai/mcp,技能用 npx skills add iblai/vibe --all 安装;iblai.env 需含 PLATFORM、DOMAIN、TOKEN,缺失时用 curl -o iblai.env https://raw.githubusercontent.com/iblai/vibe/refs/heads/main/iblai.env 获取;Profile 页面需已挂载(/iblai-vibe-profile);Platform 的 enable_monetization 必须为 true。调用前用 curl 拉取 {dm_url}/api/docs/schema/ 校验路径、方法、请求体与响应结构。
限制:PurchasesTab 由 Profile shell 渲染,不由应用代码直接挂载,且未从 @iblai/iblai-js/web-containers 再导出;自定义界面需复制组件。取消接口需 DM token(AXD token 返回 401),后端按 request.user 限定,无法读取或取消他人订阅。取消返回两种形态,需按 portal_url 或 status 分支;自定义取消封装必须失效 mySubscriptions、itemSubscription、accessCheck、subscribers 四个标签。price.amount 为字符串,需 parseFloat 或直接交给 Intl.NumberFormat。URL 路径应引用 MONETIZATION_ENDPOINTS,不要硬编码。