付费插件、许可校验与商业化¶
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-date 和 release-version,这样 fallback license 用户可获得同 major 版本的更新。
许可校验¶
Marketplace 和 IDE 会做许可检查:IDE 启动时检查,之后至少每天额外检查一次。但官方仍建议插件侧也添加许可校验调用。
注意:
- 不要高频检查许可,过于频繁会增加 CPU 开销。每天少量检查即可。
LicensingFacade.getInstance() == null表示许可系统尚未初始化,不能据此判断未授权。LicensingFacade.getInstance() != null后,缺少 license stamp 才能明确表示未授权。- 平台没有私钥;许可验证依赖服务器或离线 key 的签名确认,以及 JetBrains 公共证书。
Freemium 插件应把许可检查放在高级功能入口,而不是阻断免费功能。
发布付费插件流程¶
- 提交 Apply to JetBrains Marketplace form。
- 准备 plugin.xml 必需参数。
- 添加许可校验代码。
- 满足 Marketplace approval criteria。
- 创建 Organization,并在 plugin.xml 中添加 Organization ID。
- 可选:混淆插件代码。
- 在 Marketplace Demo 实例完整测试购买和授权流程。
- 上传插件或从免费切换到 paid/freemium 更新。
- 把插件转移到 Organization。
- 在 Sales Info 填写价格、授权方案和社区折扣。
- 设置试用期,默认 30 天,也可改为 7/10/14/30 天或关闭。
- 等待审核,官方文档提到通常两个工作日内审核。
如果从免费改为付费,必须提前告知用户。
用户体验原则¶
- 未授权提示要说明哪些功能受限,以及如何购买或开始试用。
- 免费功能不能因为许可检查失败而不可用。
- 网络失败和未授权要区分。
- 企业离线环境要考虑离线 license。
- 不要在用户每次操作时弹付费弹窗。
- 价格、试用、功能差异应在 Marketplace 页面清楚说明。
版本与许可¶
付费插件版本策略要稳定:
- major release 更新
release-version和release-date。 - minor/patch release 不改变
release-version和release-date。 - 试用期和 fallback license 都依赖这些字段。
- 改 Product Code 很难,涉及销售和历史交易迁移,尽量一次确定。
检查清单¶
- 选择商业模型和授权方案。
product-descriptor参数符合规则。- Organization 和银行信息配置完成。
- 插件侧有合理频率的许可检查。
- Freemium 功能边界清楚。
- Marketplace Demo 测试购买、试用、更新和未授权路径。
- 从免费改付费前提前通知用户。
- 发布说明写清楚付费变化。