失効・再発行・失効予約

ライセンスは、購入・認証・使用のライフサイクルの中で、
「利用できる状態」と「利用できない状態」を往復することがあります。
本章では、ライセンスの停止(無効化)・再利用(再有効化)・失効予約(期限が来たら無効にする) について解説します。


1. 失効(expire / revoke)

失効とは?

ライセンスが 利用不可になる ことを指します。
失効は主に以下の2つのケースがあります:

タイプ説明トリガー認証結果
expire(期限切れ)有効期限を過ぎた状態サブスク未更新 / 定期支払停止❌ 利用不可
revoke(取り消し)管理側の判断で停止不正利用・返金後 等❌ 利用不可(再利用できない)

expire(期限切れ)の代表ケース

  • 年額 / 月額プランの支払いが停止
  • Stripe がカード更新に失敗しリトライにも失敗

流れ:

Stripe → invoice.payment_failed
↓
猶予期間(任意)
↓
期限到達
↓
AppCotton がライセンスを expired に更新

revoke(取り消し)の代表ケース

ケース管理判断の例
不正配布 or シェアが発覚した利用権を強制的に停止
返金対応を行った正当利用が成立しないため
法人契約の権利移転が必要新アカウントへライセンス再発行する前提

注意
revoked管理者による強制停止 であり、
ユーザーは自分では解除できません。


2. ライセンスキーの再発行(実際には再表示)

AppCotton では、ライセンスキーは「作り直さない」のが原則です。
キーを再発行するとは、「再表示」することを意味します。

ライセンスキーは同じまま → ユーザーが再度確認できるようにする

理由

理由説明
既に配布されたプラグインで使われている可能性がある突然変更すると全サイトが認証失敗
カスタマーサポート負担が大幅に増える「なぜ動かない?」問題が増える
キーは本人確認であり「秘密鍵」ではないあくまで「利用権識別」

再表示手順

ユーザー側:

マイページ → ライセンス一覧 → 表示

管理者側:

AppCotton → ライセンス → 対象 → 「キーを表示」

3. 失効予約(サブスクの自然終了)

失効予約とは:

「今は使えるが、期限が来たら失効する」状態

これは、サブスク型プランで最も一般的な状態です。

表現:

項目
statusactive
expires_at期限日が未来に設定されている

expires_at を過ぎると自動で expired へ遷移します。


失効予約となる代表ケース

状況説明
サブスクを 「更新しない」 にユーザーが切り替えた次回更新を止めた状態
法人契約の利用期限が決まっている年次契約など

4. 失効 → 再有効化(復帰)

再有効化できるケース

状態復帰可能?方法
expired(期限切れ)再課金 / 再購入 / 再更新
revoked(取り消し)❌(原則)管理者が新しいライセンスを発行する

買い切りプランの場合

  • expires_at が NULL なら → 永続利用
  • サポート期限だけを別で管理してもよい(※別フィールド)

5. UIでの表示の考え方

状態マイページ表示例CTA
active✅ 利用中ライセンスキー表示 / ドメイン管理
expired⚠️ 有効期限切れ「更新する」 ボタン
revoked⛔ 利用停止「サポートにお問い合わせください」

6. まとめ

• expired = 期限切れ(再購入・再課金で復帰可能)
• revoked = 管理者による取り消し(再利用不可)
• ライセンスキー自体は変えず「再表示」を基本とする
• サブスクは expires_at により自然に失効する
• 失効予約 = 将来の失効がスケジュールされている状態