ライセンスは、AppCotton が提供する 「利用権(権利証明書)」 の単位です。
ユーザーが購入したプラン内容(サイト数上限 / 課金タイプ / 有効期限 等)を記録し、
実際にどのドメインで使われているかを 追跡し、管理するための中核データです。
AppCotton の認証システムは、すべてこの ライセンスレコード を起点に動作します。
ライセンスはどこに保存されるか?
ライセンスは AppCotton が管理する独自テーブルに保存されます:
wp_appcotton_licenses
| カラム | 説明 |
|---|---|
| id | ライセンスID(内部識別子) |
| license_key | ユーザーに渡されるキー(例: ACP-XXXX-XXXX-XXXX) |
| product_id | 対象プロダクト |
| plan_id | 適用されているプラン |
| user_id | WordPressユーザーID(購入者) |
| status | active / 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 | サイト/環境を区別する追加識別子 |
| status | active / 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 で管理
• ステータスにより使用可否が制御される
• 購入 → 自動発行、手動発行、無料発行が可能
• 解除・再認証・アップグレードが前提設計