菜单

订阅系统

相关源文件

本文档描述了 Joplin Cloud 订阅系统,该系统管理用户账户、订阅计划、支付处理和账户限制。订阅系统主要围绕 Stripe 集成来处理支付和订阅生命周期。

有关用户管理的详细信息,请参阅 用户管理

架构概述

订阅系统与 Joplin Server 的多个组件集成,主要通过用户和订阅模型。

来源

账户类型和限制

Joplin Cloud 提供不同的账户类型,每种类型都有特定的限制和功能

系统根据账户类型定义不同的账户功能

账户类型共享文件夹接收共享最大项大小最大总存储空间
默认无限制无限制
基础10 MB1 GB
专业版200 MB10 GB

账户类型决定了用户可以执行的操作以及他们的存储限制。当用户尝试上传或保存项目时,会强制执行这些限制。

来源

订阅流程

订阅过程涉及从结账到账户创建或更新的几个步骤

当用户首次订阅时

  1. 他们选择一个计划(基础版或专业版)
  2. 他们被重定向到 Stripe 的结账页面
  3. 付款后,Stripe 发送 webhook 通知
  4. Joplin 创建用户账户和订阅条目
  5. 向用户发送电子邮件以确认其电子邮件地址

对于升级订阅的现有用户

  1. 账户类型已更新
  2. 订阅详细信息已更新
  3. 付款问题用户标志已清除

来源

Stripe 集成

该订阅系统在支付处理和订阅管理方面严重依赖 Stripe。该集成包含几个关键组件:

Webhook 处理程序

Webhook 处理程序处理来自 Stripe 的与订阅和支付相关的事件

Webhook 事件描述处理程序操作
customer.subscription.created新订阅创建创建用户账户和订阅条目
invoice.paid付款成功更新付款状态,启用功能
invoice.payment_failed付款失败将付款标记为失败,发送通知
customer.subscription.deleted订阅已取消将订阅标记为已删除,添加用户标志
customer.subscription.updated订阅计划已更改更新账户类型

Webhook 系统通过跟踪键值存储中已完成的事件来确保事件不会被重复处理。

来源

客户门户

用户可以通过 Stripe 客户门户管理其订阅,该门户允许他们:

  • 更新付款方式
  • 更改订阅计划
  • 取消订阅

门户通过 /stripe/portal 访问,并重定向到 Stripe 的托管门户。

来源

付款失败处理

该系统具有强大的处理付款失败的机制

  1. 当付款失败时,将记录 last_payment_failed_time
  2. 7天后(警告期),上传将被禁用,并发送警告邮件
  3. 14天后(最终期),账户将被禁用,并发送最终通知
  4. 如果付款在任何时候成功,账户功能将被重新启用,标志也将被清除

来源

Beta 用户处理

订阅系统包含对 Beta 用户(早期采用者)的特殊处理

Beta 用户通过以下方式识别:

  • 创建日期在特定范围内(在 betaUserDateRange() 中定义)
  • 无现有订阅

这些用户会在试用期结束前收到电子邮件,鼓励他们注册付费订阅。如果在试用期内订阅,他们将获得剩余的试用期加上标准的 14 天试用期。

来源

个人资料和订阅管理

用户可以在其个人资料页面查看和管理订阅的各个方面,该页面提供:

  • 当前订阅详细信息
  • 升级到专业版的链接(如果使用的是基础计划)
  • 访问 Stripe 客户门户进行付款管理
  • 上次付款状态和日期

个人资料页面与订阅系统集成,以显示与用户当前订阅状态相关的详细信息和选项。

来源

超额账户处理

订阅系统根据账户类型监控和执行存储限制

  1. 80% 警告:当用户达到存储限制的 80% 时,他们会收到一封通知电子邮件
  2. 达到 100% 限制:当用户超出其存储限制时
    • 他们的账户将被标记为超额
    • 他们会收到一封通知电子邮件
    • 上传将被禁用

该系统会持续检查账户大小,并在用户将存储量减少到限制以下时自动清除标志。

来源

与电子邮件通知集成

订阅系统会生成几封与订阅事件相关的电子邮件通知

  1. 付款失败:付款尝试失败时
  2. 上传禁用:由于长时间付款失败导致上传被禁用时
  3. 账户禁用:由于长时间付款失败导致账户被禁用时
  4. Beta 试用期结束提醒:接近 Beta 试用期结束时发送的一系列电子邮件
  5. 超额账户警告:接近或已超出存储限制时

这些通知有助于用户解决付款问题、避免服务中断和有效管理其账户。

来源