メインコンテンツへスキップ
権利は、成功した支払いまたはアクティブなサブスクリプションを実際のアクセスに変えます:顧客の受信トレイのライセンスキー、アプリがチェックするフィーチャーフラグ、Discord の役割、GitHub リポジトリ、Notion テンプレート、Framer リミックスリンク、Telegram チャット招待、またはダウンロード可能なファイル バンドル。Dodo Payments は、支払いライフサイクルの変化に応じてそのアクセスを自動的に発行、追跡、および取り消します。
左側に特権のリストがあり、右側に付与アクティビティがある特権ダッシュボード

特権とは何ですか?

特権とは、顧客に提供するものの再利用可能な定義です: Proライセンスキー、“Patrons” Discord役割、プライベートGitHubリポジトリへのアクセス、ダウンロード可能な電子書籍バンドルなど。特権を製品に添付し、Dodo Paymentsが残りを処理します。 顧客が製品を購入すると、Dodo Paymentsはその特権の単一の発行である付与を作成します。付与は、小さな状態セットを通過します: 配信が進行中の場合はpending、顧客がアクセスした後はdelivered、配信が完了できなかった場合はfailed、アクセスが取り消された場合はrevokedといった具合です。
特権は履行(顧客がアクセスを持っているか)を制御します。クレジットは消費(彼らがどれだけ使用できるか)を制御します。両方とも同じ製品に添付できます。クレジットについてはクレジットベースの請求をご覧ください。

利用可能な統合

Dodo Paymentsは、各特権を専用の統合を通じて配信します。あなたが販売するものに合った統合を選択してください。

License Keys

アクティベーション制限と有効期限を持つユニークなライセンスキーを生成します。ソフトウェア、プラグイン、CLIに最適です。

Digital Files

事前サインされたダウンロードURLとオプションの指示を持つダウンロード可能なファイル(電子書籍、テンプレート、メディア)を配信します。

Feature Flags

自分のアプリで購入を通じて機能をゲートします。即時に配信され、API を介して確認され、キャンセル時に取り消されます。

Discord

購入時に顧客に Discord サーバーで役割を付与します。キャンセル時に自動的に取り消されます。

GitHub

選択した許可レベルで、プライベートリポジトリに顧客を共同作業者として追加します。

Telegram

購入後にプライベートな Telegram チャットまたはチャンネルに顧客を追加します。

Framer

支払った顧客向けに Framer テンプレートのリミックスリンクを解除します。

Notion

購入時に Notion テンプレートを顧客のワークスペースに複製します。

権利のしくみ

権利は、すでに受け取っている Webhook としての同じ支払いおよびサブスクリプションのイベントによって駆動されます。購入の場合、権利 API を自分で呼び出す必要はありません。Dodo Payments は、支払いライフサイクルに基づいて自動的に権利を作成および取り消します。

権利のライフサイクル

1

Created

支払いが完了するかサブスクリプションがアクティブ化されると権利が作成されます。ライセンスキーとフィーチャーフラグは、直接 delivered にジャンプします。その他の統合は pending から始まります。OAuth ベースの統合 (Discord、GitHub、Notion) には、顧客が同意を完了するために訪問する必要がある oauth_url が含まれています。プラットフォーム直結型統合 (Telegram、Framer、デジタルファイル) は、プロビジョニング中は短い間 pending にあり、その後 delivered に移行します。
2

Delivered

配信が完了すると(ライセンスキー生成、役割付与、リポジトリアクセス付与、ファイルリンク解決、OAuth 完了)、権利は delivered に移動し、delivered_at が設定されます。
3

Failed

統合通話が再試行不可能なエラー(取り消された OAuth トークン、許可が拒否された、ファイルが存在しなくなった)を返した場合、権利は failed に移動します。error_code および error_message フィールドはその理由をキャプチャします。
4

Revoked

アクセスが撤回されると(サブスクリプションがキャンセルされる、返金が発行される、または商人による取り消し)、権利は revoked に移動します。revocation_reason フィールドはトリガーを記録します。

イベントによる権利の動作

EventBehavior
payment.succeeded (one-time payment)添付された権利ごとに 1 つの権利を発行します。
payment.succeeded (subscription-linked payment)No-op。権利は以下のサブスクリプションイベントによって駆動されます。
subscription.activeすでにない場合は、添付された権利の権利を発行します。同じサブスクリプションのために以前に取り消されたすべての権利を再発行します。
subscription.renewedNo-op。既存の権利は更新を越えて持続します。
subscription.on_holdすべての配信済みおよび保留中の権利を取り消します。revocation_reason: subscription_on_hold
subscription.cancelledすべてを取り消します。revocation_reason: subscription_cancelled
subscription.expiredすべてを取り消します。revocation_reason: subscription_expired
subscription.plan_changed現在のすべての権利を取り消し、新しいプランの権利を出します。revocation_reason: plan_changed
refund.succeeded (one-time payment)その支払いの権利を取り消します。revocation_reason: refund
Manual API revokerevocation_reason: manual で取り消します。手動の取り消しはサブスクリプションの更新時に自動再付与されません。
License key disabledライセンスキーの権利の場合、基盤となるキーを無効にすると、revocation_reason: license_key_disabled で権利が取り消されます。キーが再有効化されると自動的に再活性化されます。
Platform drift detected統合のプラットフォーム側が同期から外れる場合 (Discord 役割が手動で削除される、GitHub アプリがリポジトリアクセスを失う、または検出パスでターゲットが見つからない)、権利は revocation_reason: platform_external で取り消されます。基盤となるプラットフォームの問題が解決されるまで、サブスクリプションの更新時に自動再付与されません。
サブスクリプション駆動の権利は、(entitlement, customer, subscription) によって冪等です。更新および再活性化は重複した権利を作成しません。一回限りの権利は、(entitlement, customer, payment) によって冪等です。

最初の権利を作成

1

Open Entitlements

Dodo Payments ダッシュボードの Entitlements に移動し、+ をクリックして新しい権利を作成します。
2

Pick an integration

統合タイプを選択します: ライセンスキー、デジタルファイル、フィーチャーフラグ、Discord、GitHub、Telegram、Framer、または Notion。プラットフォーム統合の場合は、接続していなければ最初にアカウントを接続してください。
3

Configure delivery

統合に固有のフィールドを記入してください。たとえば、GitHub はリポジトリと許可レベルを求め、Discord はサーバーとオプションの役割を求め、ライセンスキーは有効化制限と有効期限を求めます。
統合セレクターと設定フィールドを持つ新規権利フォーム
4

Save

権利を保存します。これで、任意の商品に添付することができます。

商品に権利を添付

商品を開き、Advanced Settings → Entitlements & Credits を展開し、商品購入時に配信される権利を選択します。単一の商品で複数の権利を同時に配信できます。たとえば、Pro プランには、ライセンスキー、GitHub アクセス、および Discord 役割を含めることができます。
製品権利選択パネルで各権利のチェックボックスを表示

顧客体験

Eメールと顧客ポータル

顧客は、購入後に配信メールを受け取り、ライセンスキー、ダウンロードリンク、OAuth 招待リンク、またはプラットフォーム招待など、製品の権利に該当するものが含まれます。同じ情報は、Customer Portal の注文履歴から無期限に利用可能です。

OAuth ベースの配信

Discord、GitHub、Notion サブスクライバーアクセスでは、顧客が Dodo Payments にアクセス権を与えるための認可が必要です。これらの権利は、顧客が Eメールまたは顧客ポータルからリンクを使用して OAuth フローを完了するまで、pending ステータスに留まります。認可されると、権利は delivered に移行し、プラットフォームアクセスが即時に提供されます。

取り消し

取り消された権利はプラットフォームレベルで削除されます:Discord の役割が削除され、GitHub の共同作業者が削除され、ライセンスキーが無効になります。顧客は、顧客ポータルで変更が反映されたことを見ることができます。
デジタルファイルの場合、取り消しは今後の事前署名 URL へのアクセスを削除しますが、一度ダウンロード済みのコピーを無効にはしません。それに応じてコンテンツゲートを計画します。

権利の管理

ダッシュボードから任意の権利を開いて、その権利を確認します。権利の詳細パネルには、総権利数、ステータスフィルタ、顧客情報、配信日、および取り消しアクションが表示されます。 権利をプログラム的に管理することもできます:
import DodoPayments from 'dodopayments';

const client = new DodoPayments({
  bearerToken: process.env['DODO_PAYMENTS_API_KEY'],
});

// List grants for an entitlement
const grants = await client.entitlements.grants.list('ent_abc123', {
  status: 'Delivered',
});

// Revoke a single grant
await client.entitlements.grants.revoke('grant_xyz789', {
  id: 'ent_abc123',
});
client.entitlements.grants.list(
    "ent_abc123",
    status="Delivered",
)

client.entitlements.grants.revoke(
    "grant_xyz789",
    id="ent_abc123",
)
grants, _ := client.Entitlements.Grants.List(
  ctx, "ent_abc123",
  dodopayments.EntitlementGrantListParams{Status: dodopayments.F("delivered")},
)

_, _ = client.Entitlements.Grants.Revoke(ctx, "grant_xyz789", "ent_abc123")

API 管理

Create Entitlement

任意の統合タイプの新規権利を作成します。

List Entitlements

統合タイプごとのフィルタリングを使用して権利を一覧表示します。

Get Entitlement

権利とその解決済み設定を取得します。

Update Entitlement

名前、説明、または統合設定を更新します。

Delete Entitlement

権利をソフト削除します;既存の権利は影響を受けません。

Upload File

最大 500 MiB までのファイルをデジタルファイルの権利にアップロードします。

List Grants

ステータスおよび顧客フィルタを使用して権利のすべてを一覧表示します。

Revoke Grant

単一の権利を手動で取り消します。

Webhooks

Dodo Payments は、権利のライフサイクルに対して 4 つの webhook イベントを発行します。これらのイベントを購読して、各顧客がアクセスできる内容に関してアプリケーションを同期状態に保ちます。
EventFires when
entitlement_grant.created新しい権利が作成されます。ライセンスキーの権利は delivered に届きます。全ての他の統合は pending に届き、プラットフォームコールが成功した(または OAuth ベースの統合の場合、顧客が認可した)後、delivered に移行します。
entitlement_grant.delivered権利が配信済みに移行します。顧客は今アクセス可能です。
entitlement_grant.failed権利を配信できませんでした。error_code および error_message を確認します。
entitlement_grant.revokedアクセスが撤回されました。revocation_reason を確認します。

Entitlement Grant Webhook Payloads

完全なペイロードスキーマ、サンプルイベント、および revocation_reason リファレンスを表示します。

ベストプラクティス

  • 配信チャネルごとに一つの権利を使用すること。 異なる役割の意図で異なる製品間で単一の Discord 権利を共有しないでください。クリーンな取り消しのために役割ごとに一つの権利を作成します。
  • 最初にテストモードでテストすること。 権利を作成し、テスト製品に添付し、チェックアウトを実行し、権利が pending → delivered を経て移行するのを確認します。テストサブスクリプションをキャンセルして権利が取り消されることを確認します。
  • entitlement_grant.delivered に聞く。payment.succeeded ではなく。 支払いは、完了前に成功することがあります(特に OAuth フローの場合)。納品済みイベントを待って、自社システムの依存機能を解除します。
  • entitlement_grant.failed をアクション可能として扱うこと。 失敗した権利は、顧客が支払ったがアクセスを得られなかったことを意味します。これをサポートチームに表面化させるか、再権利をトリガーします。
  • revocation_reason を保持フローにマッピングすること。 subscription_on_hold の取り消しは回復可能です(顧客がカードを更新するかもしれません)。manual の取り消しは意図的です。顧客コミュニケーションで異なる取り扱いをします。
最終更新日 2026年7月9日