用途:为 Stripe 订阅集成定义一套完整的订阅管理用户体验要求,确保用户能清楚了解自己的计费状态。
主要能力:要求界面支持查看当前套餐(名称、状态、试用剩余)、账单周期(下次扣费日期、金额、频率、周期起止)、支付方式(卡品牌与后四位、有效期、更新入口)、订阅管理(取消、期内恢复、升降级、月付年付切换)以及账单历史(发票日期金额、PDF 下载、支付状态)。
实现方式:方案 A 使用 Stripe 内置 Customer Portal,通过 stripe.billingPortal.sessions.create 创建会话并跳转,代码少且由 Stripe 处理 PCI;方案 B 自定义 UI 调用 Stripe API,控制力强但维护成本高;方案 C 混合模式,自定义页面展示、Portal 处理变更,资料称其为推荐方案。
配套要求:给出 billing 组件目录结构、Settings 页面示例、Convex 查询与 action 示例(getSubscriptionDetails、createPortalSession、getBillingHistory)、用户表订阅字段 schema,以及通过 customer.subscription.updated、payment_method.attached 等 webhook 缓存支付方式。
UX 建议:按 active、trialing、canceled、past_due、incomplete 等状态给出提示文案与颜色,并覆盖试用横幅、已取消但期内可用、支付失败等场景,附验证清单。
限制:资料未提供具体价格、收费方式、平台支持范围或实际效果数据;示例代码依赖 Stripe、Convex 与 Next.js 环境,需按自身技术栈调整。