SuperAPI AI 工具集

paddle-subscription-cancel

前端与建站

查看项目

更新于 10-16 03:14

技能介绍

用途:在已登录用户的账单或账户页实现“取消订阅”按钮,通过 Next.js 15(App Router)Server Action 调用 paddle.subscriptions.cancel(),并处理取消后的状态同步。

主要能力:提供完整的 Server Action 示例,包含身份验证、订阅归属校验(经 customers 与 subscriptions 表比对 customer_id)、调用 Paddle Node SDK 取消订阅、revalidatePath 刷新缓存 UI,以及返回精简 DTO。

关键用法:paddle.subscriptions.cancel(subscriptionId, { effectiveFrom: "next_billing_period" })。effectiveFrom 可选 next_billing_period(默认,周期末生效,状态保持 active 并设置 scheduledChange)或 immediately(立即生效并可能按比例退款,属罕见流程)。

状态说明:取消成功后状态不会立即变为 canceled,而是先返回 active 并带 scheduledChange;周期结束时 Paddle 再发 subscription.updated 或 subscription.canceled 事件,镜像行才变为 canceled。访问控制应读取镜像行,而非乐观计算。

前置条件:可用的 Paddle 账户(沙箱即可)、服务端 PADDLE_API_KEY、由 webhook 同步的 customers 与 subscriptions 表、会话式认证系统(示例用 Supabase)。

常见陷阱:缺少归属校验或身份验证、默认使用 immediately、把 SDK 返回值当作最终状态、遗漏 revalidatePath、返回原始 Subscription 对象、混淆 canceled 与 scheduledChange.action: 'cancel'、未处理无 customer 记录的情况。

验证方式:完成沙箱结账、等待 subscription.created webhook、点击取消并确认返回 success 与 scheduledChange、在 Paddle 后台确认“Scheduled to cancel”、测试未登录或伪造 ID 时不应调用取消接口、周期结束后确认镜像行变为 canceled。

限制:资料未提供具体价格、平台支持范围或性能数据;示例依赖 Supabase 与特定项目结构,其他认证或数据库需自行适配。