# Licentivo アカウントと購入の連携

このガイドは現在の Licentivo プロバイダーを説明します。他のライセンスシステムを使用する事業者は[カスタム HTTP プロバイダー](/ja/launch-documents/external-licensing/)を選択できます。このモードは Licentivo を呼び出さず、その API キーも必要としません。

## 管理者設定

1. Licentivo で製品とポリシーを作成します。
2. Launch の **システム設定 → Licentivo** で読み書き可能な管理キーを設定します。Licentivo のオリジンは `https://www.licentivo.com` に固定されています。
3. 各 Launch 販売プランバージョンのポリシーを選択します。Launch は製品、ポリシーバージョン、ランタイム表示設定を読み取ります。
4. Launch は 1 つの Licentivo 管理接続の下に sandbox/live のアカウント信頼接続を別々に登録し、ID 署名公開鍵と事業者オリジンを含めます。

管理キーは事業者サーバーで暗号化されたまま保持されます。クライアントのインストールファイルには公開ルート情報と固定された公開製品キーのみが含まれます。

## サーバー側 API の順序

以下のすべてのパスは Licentivo 上にあり、Launch が管理認証情報を使用して呼び出します：

| エンドポイント | 目的 |
| --- | --- |
| `GET /api/v1/products` | 製品の検出 |
| `GET /api/v1/policies`, `GET /api/v1/policies/{id}` | ポリシーの検出とバージョンチェック |
| `GET /api/v1/launch/connections` | オリジン／環境の信頼接続を検索 |
| `POST /api/v1/launch/connections`, `PUT /api/v1/launch/connections/{id}` | 公開 ID キーとルーティングを登録／更新 |
| `PUT /api/v1/launch/connections/{id}/plans/{plan}` | 変更不可の販売プランバージョンと Licentivo ポリシーマッピングを登録 |
| `POST /api/v1/launch/connections/{id}/events` | 絶対的なバージョン付き購入スナップショットを送信 |
| `GET /api/v1/launch/connections/{id}/events/{event}` | 元の結果を復旧／照会 |
| `POST /api/v1/launch/connections/{id}/events/{event}/retry` | 審査後に同じイベントを再試行 |
| `POST /api/v1/launch/connections/{id}/session-revocations` | アカウント／セッション失効を通知 |
| `GET /api/v1/launch/connections/{id}/session-revocations/{event}` | 失効レシートを検証 |

Launch は検証済み決済、変更不可の支払い済み対象期間、送信タスクを 1 つのローカルトランザクションに記録します。ワーカーは完全な絶対購入日付と安定したイベント ID を送信します。同期を確認するのは `applied` レシートのみで、HTTP 受信だけでは確認できません。

返金と確認済みの支払い取り消しは対応する注文の対象期間を削除します。次の完全スナップショットは有効な基本購入の保持、期間の短縮、下位プランの復元、または全対象期間の終了を行うことがあります。再試行で日数が追加されることはありません。旧発行済みライセンスの紐付けには、旧管理コマンドの自動再実行ではなく明示的な移行イベントを使用します。

## 顧客アプリのフロー

1. アプリはデスクトップアカウントセッションを使用して Launch にログインします。
2. Launch の `POST /api/v1/software/products/{id}/identity` は、実際のセッション、製品、環境、発行者、対象者に紐付いた最大 120 秒間有効な ID アサーションを返します。
3. Launch パッケージはこれをメモリ内で公式 SDK に渡し、SDK は `POST /api/v1/launch/exchange` で Licentivo と交換します。
4. Licentivo はデバイス認証情報と署名済み許可を発行します。SDK は保護された各操作、デバイスポリシー、ランタイム状態、オフラインルールをチェックします。

Launch ログイン、支払い済み注文、同期済み購入はランタイム許可ではありません。旧 `/credential` エンドポイントは HTTP 410 を返します。カスタムプロバイダーの配信は所有者単位の別 API であり、そのエンドポイントを復活させません。

デバイス一覧、解放枠、紐付け世代、ログアウト復旧は引き続き Licentivo の責任です。セッション／アカウント失効は環境別レシートを持つ永続通知を使用し、オフライン失効は既に発行された SDK 許可の範囲に制約されます。

[アプリ連携](/ja/launch-documents/software-sdk-integration/)、[購入／アカウントの境界](/ja/launch-documents/account-purchase-boundary/)、[手動連携](/ja/launch-documents/manual-integration/)、[受け入れ確認](/ja/launch-documents/acceptance/)を参照してください。実装は `internal/adapters/licentivo/launch_bridge.go`、`internal/app/launch_trust.go`、`internal/app/purchase_sync.go`、`internal/app/identity.go` にあります。
