ライセンス

ライセンスは、AppCotton が提供する 「利用権(権利証明書)」 の単位です。
ユーザーが購入したプラン内容(サイト数上限 / 課金タイプ / 有効期限 等)を記録し、
実際にどのドメインで使われているかを 追跡し、管理するための中核データです。

AppCotton の認証システムは、すべてこの ライセンスレコード を起点に動作します。


ライセンスはどこに保存されるか?

ライセンスは AppCotton が管理する独自テーブルに保存されます:

wp_appcotton_licenses
カラム説明
idライセンスID(内部識別子)
license_keyユーザーに渡されるキー(例: ACP-XXXX-XXXX-XXXX
product_id対象プロダクト
plan_id適用されているプラン
user_idWordPressユーザーID(購入者)
statusactive / suspended / expired / revoked
expires_at有効期限(買い切りでは NULL)
activation_limit利用可能なサイト数(-1 = 無制限)
created_at / updated_at発行日時 / 更新日時

ライセンスが表すもの

「どのユーザーが、どの製品を、どの条件で使えるか」という利用権の証明書です。

例)
ユーザーA は
「combpass_premium の 3サイト版」を購入しており、
現在 2サイトで認証済み → 1枠空き。

→ 残り1サイト分は別のドメインで再利用できる。

ライセンスキーの形式

ライセンスキーは ユーザーに配布される認証用文字列です。

例:

ACP-9F4R-12KD-83XE

特徴

  • 完全ランダム文字列(推測耐性あり)
  • 大文字/数字に制限し、手入力でもミスが起こりにくい
  • キー自体は「秘密情報」ではなく 認証要求の引き金として使う
    本当に判断するのはサーバ側(AppCotton)

ステータス

ステータス説明
active利用中(認証可能)
suspended決済停止・未払い等(認証拒否)
expired有効期限切れ(サブスク終了)
revoked取り消し・不正利用の対処

Suspended と Revoked は意味が異なります。
Suspended = 「支払いが止まっている状態」
Revoked = 「管理者が明示的に使用不可にした状態」


ライセンスとアクティベーション(サイト利用)との関係

サイト側で認証すると、ライセンスとは別のテーブルに記録されます:

wp_appcotton_license_activations
カラム説明
license_idどのライセンスか
domain認証されたドメイン(正規化済み)
instance_idサイト/環境を区別する追加識別子
statusactive / deactivated
first_activated_at / last_checked_at運用ログ

つまり、ライセンスは利用権
アクティベーションは利用中のサイト情報 です。


ライセンスはどう発行されるか?

ライセンスは以下のいずれかで生成されます:

発行元タイミング
Stripe決済完了Webhook 受信後に自動生成
管理者手動発行管理画面 → 「新規ライセンスを発行」
無料トライアル特定プランで自動発行

ユーザー側でできること(マイページ)

操作説明
ライセンス一覧の確認保有中のキーと利用可能枠が見える
ドメインの解除使わなくなったサイトの認証枠を空ける
アップグレード差額を支払って上位プランへ移行
再発行キーを再表示する(キー自体は変わらない)

開発者が連携で使う関数(SDK想定)

$valid = appcotton_is_license_valid( $license_key, 'combpass_premium' );

if ( $valid ) {
    // 有効 → プレミアム機能を開放
} else {
    // 無効 → 無料モードで動作
}

認証は「AppCottonに問い合わせて判定する」のではなく、
SDKがキャッシュ付きで確認する → パフォーマンスに優れる。


まとめ

• ライセンス = 利用権(user ←→ product/plan の紐付け)
• 内部は wp_appcotton_licenses に保存される
• 利用中のサイトは wp_appcotton_license_activations で管理
• ステータスにより使用可否が制御される
• 購入 → 自動発行、手動発行、無料発行が可能
• 解除・再認証・アップグレードが前提設計