ガイド
レシピ:ライセンスキー
デスクトップアプリ、CLI、プラグイン、テンプレートをライセンスキー付きで販売。アプリは内部にシークレットを一切持たずにキーを検証します。
Perly Pay は支払いが完了するとキーを発行し、端末ごとのアクティベーションを数え、公開エンドポイントで「このキーはここでこの商品に有効か?」に答えます。配布するプログラムは LicenseClient を使い、シークレットキーは必要ありません。
sell-license-keys スキルがあなたのプロジェクトで実行します。動くサンプルは、プラグインのリポジトリの examples/license-keys(MIT)です。仕組み
- 1
キーを発行する商品
issues_license: trueとlicense_activation_limit(キーあたりの端末数)、一回払い・買い切り・期間制の価格、またはサブスクリプションで。 - 2
販売
サイトに支払いリンク、または購入者ごとに請求書。
- 3
キーを送る
Webhook
license.created(オブジェクトがキー)で、または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があなたのキーで商品と価格を作成し、.env用にその ID を表示します。 - 4
起動
README のとおり
npm start(またはnpm run dev)。 - 5
ウォレットなしで支払う
npm run buy-test -- you@example.comがテストモードで 1 本購入してキーを表示します。続いてnpm run app -- activate <key>とnpm run app -- pro hello。
落とし穴
- アプリの中の
sk_…キー。誰でも取り出せます。配布するプログラムはLicenseClientだけを使います。 productなしの呼び出しは拒否されます(parameter_missing)。毎回渡してください。ほかの商品のキーはwrong_productになります。- 起動のたびに変わる
instance_name:起動ごとにアクティベーションを消費します。