跳转至

付费插件、许可校验与商业化

JetBrains Marketplace 支持免费、Freemium、Paid 和 externally paid 等商业模型。插件商业化不只是“设一个价格”,还涉及 plugin.xml 产品参数、许可检查、组织和银行信息、试用期、版本策略、审核和用户沟通。

商业模型

模型 含义 适合场景
Free 全部免费,可接受捐赠 社区工具、品牌推广、内部开放能力
Freemium 基础功能免费,高级功能付费 需要低门槛获客且有明确高级能力
Paid 所有功能付费,通常有试用期 面向专业用户、价值明确的生产力工具
Externally paid 由厂商自己的授权系统控制访问 已有 SaaS/企业授权体系

Marketplace 文档提到 Freemium 和 Paid 都可提供 30 天试用。付费插件也可以参与社区支持或自定义优惠。

Licensing Schemes

授权方案 含义
Monthly/Yearly subscription without fallback 只有订阅有效时可用
Monthly/Yearly subscription with fallback 订阅失效后仍可使用某个已购买版本,更新需要有效订阅
Perpetual license 一次购买,长期获得更新

授权类型:

  • Commercial licenses。
  • Personal licenses。
  • Trial licenses。
  • Free licenses,例如社区支持计划或自定义 offer。

付费插件 plugin.xml 参数

通过 Marketplace 销售的插件必须在 <product-descriptor> 中定义:

<product-descriptor
    code="PMAKEMECOFFEE"
    release-date="20240818"
    release-version="20241"/>

参数:

参数 规则
code Product Code,最长 15 个字符;以 P 开头;只能大写字母;注册到 JetBrains Sales System
release-date major version 发布日期,YYYYMMDD 整数
release-version major release 编号,例如 20241 表示 2024.1
optional 可选,true 表示插件包含免费功能

release-version 不同于普通 <version>,但二者应匹配。minor update 只增加 <version>,保持同一个 release-daterelease-version,这样 fallback license 用户可获得同 major 版本的更新。

许可校验

Marketplace 和 IDE 会做许可检查:IDE 启动时检查,之后至少每天额外检查一次。但官方仍建议插件侧也添加许可校验调用。

注意:

  • 不要高频检查许可,过于频繁会增加 CPU 开销。每天少量检查即可。
  • LicensingFacade.getInstance() == null 表示许可系统尚未初始化,不能据此判断未授权。
  • LicensingFacade.getInstance() != null 后,缺少 license stamp 才能明确表示未授权。
  • 平台没有私钥;许可验证依赖服务器或离线 key 的签名确认,以及 JetBrains 公共证书。

Freemium 插件应把许可检查放在高级功能入口,而不是阻断免费功能。

发布付费插件流程

  1. 提交 Apply to JetBrains Marketplace form。
  2. 准备 plugin.xml 必需参数。
  3. 添加许可校验代码。
  4. 满足 Marketplace approval criteria。
  5. 创建 Organization,并在 plugin.xml 中添加 Organization ID。
  6. 可选:混淆插件代码。
  7. 在 Marketplace Demo 实例完整测试购买和授权流程。
  8. 上传插件或从免费切换到 paid/freemium 更新。
  9. 把插件转移到 Organization。
  10. 在 Sales Info 填写价格、授权方案和社区折扣。
  11. 设置试用期,默认 30 天,也可改为 7/10/14/30 天或关闭。
  12. 等待审核,官方文档提到通常两个工作日内审核。

如果从免费改为付费,必须提前告知用户。

用户体验原则

  • 未授权提示要说明哪些功能受限,以及如何购买或开始试用。
  • 免费功能不能因为许可检查失败而不可用。
  • 网络失败和未授权要区分。
  • 企业离线环境要考虑离线 license。
  • 不要在用户每次操作时弹付费弹窗。
  • 价格、试用、功能差异应在 Marketplace 页面清楚说明。

版本与许可

付费插件版本策略要稳定:

  • major release 更新 release-versionrelease-date
  • minor/patch release 不改变 release-versionrelease-date
  • 试用期和 fallback license 都依赖这些字段。
  • 改 Product Code 很难,涉及销售和历史交易迁移,尽量一次确定。

检查清单

  • 选择商业模型和授权方案。
  • product-descriptor 参数符合规则。
  • Organization 和银行信息配置完成。
  • 插件侧有合理频率的许可检查。
  • Freemium 功能边界清楚。
  • Marketplace Demo 测试购买、试用、更新和未授权路径。
  • 从免费改付费前提前通知用户。
  • 发布说明写清楚付费变化。

参考来源