指南
配方:许可证密钥
用许可证密钥出售桌面应用、CLI、插件或模板。应用校验密钥时内部不含任何机密。
付款交付后,Perly Pay 发放密钥、统计各设备上的激活次数,并通过公开端点回答“这个密钥对这个商品在这里有效吗?”。你分发的程序使用 LicenseClient — 它不需要密钥。
sell-license-keys 技能会在你的项目中实现这个配方。可运行的示例是插件仓库中的 examples/license-keys(MIT)。如何运作
- 1
发放密钥的商品
issues_license: true和license_activation_limit(每个密钥的设备数),搭配一次性、终身、限期价格或订阅。 - 2
销售
网站上的付款链接,或为每位买家开一张账单。
- 3
发送密钥
通过
license.createdWebhook(其对象就是密钥),或在invoice.fulfilled之后用licenseKeys.list({ customer })。收据里不含密钥。 - 4
在应用中激活
activate({ key, product, instance_name }),名称在该设备上保持不变;保存激活 ID。 - 5
启动时校验
validate({ key, product, instance })。明确的valid: false就关闭;离线时,最近一次有效响应可沿用几天。
运行示例
- 1
安装
在
examples/license-keys中运行npm install(Node 20.12+)。 - 2
密钥
把
.env.example复制为.env,在PERLY_PAY_SECRET_KEY中填入测试密钥(sk_test_…)。 - 3
准备
npm run setup用你的密钥创建商品和价格,并打印它们的 ID 供.env使用。 - 4
启动
按其 README 运行
npm start(或npm run dev)。 - 5
无需钱包即可付款
npm run buy-test -- you@example.com在测试模式下购买一份并打印密钥;然后npm run app -- activate <key>和npm run app -- pro hello。
陷阱
- 应用里放了
sk_…密钥。任何人都能把它取出来;你分发的程序只使用LicenseClient。 - 不带
product的调用会被拒绝(parameter_missing)。每次都要传;其他商品的密钥会得到wrong_product。 - 每次启动都变化的
instance_name:每次启动都会占用一次激活。