AppCotton は、ライセンス検証・購入処理・ドメインアクティベーションなど、多くの場面で REST API を使用します。
このとき、クライアント側(WordPress / プラグイン / Web UI / CLI)が受け取るレスポンスが 4xx か 5xx か によって、
原因が「ユーザー操作」なのか「サーバ内部」なのか を即座に切り分けることができます。
1. HTTPステータスの基本的な意味
| ステータス範囲 | 意味 | 例 | 原因 / 責任 |
|---|---|---|---|
| 200台 | 正常動作 | 成功 / 認証OK / 発行完了 | 正常 |
| 400台(4xx) | クライアント側の問題 | 不正な入力 / 認証失敗 / 上限超過 | ユーザー・リクエストの問題 |
| 500台(5xx) | サーバ内部エラー | DB障害 / 設定ミス / 不具合 | サーバ・アプリ側の問題 |
4xx → 修正すべきは「送った値」
5xx → 修正すべきは「サーバ設定・コード」
2. AppCotton REST API の代表的な 4xx
401 Unauthorized
理由:ライセンスキーが無効 / 存在しない
対処:
- キーを再確認(空白除去)
- プラグイン側の
product_slugが一致しているか確認
403 Forbidden
理由:ドメイン上限に達している / その操作の権限がない
対処:
- マイページで不要なドメインを解除
- 権限が必要な API をログアウト状態で叩いていないか確認
404 Not Found
理由:存在しないエンドポイント / product_id / plan_id
対処:
- AppCotton のプラグインを最新化
- product_slug → plan_id の紐付け確認
409 Conflict
理由:アクティベーションが既に同一環境で登録済み
対処:
domain/instance_idを再確認- 一度「解除」→ 再認証を行う
429 Too Many Requests
理由:短時間で大量の認証を試行した
対処:
- 数分待ってから再試行
- ボット誤動作がないか確認
3. AppCotton REST API の代表的な 5xx
500 Internal Server Error
理由:PHPエラー / 関数未定義 / null参照
対処:
error_logを確認- PHPバージョン差異を確認
- プラグイン無効 → 再有効化(dbDelta再実行)
502 / 503 / 504(サーバ/ネットワーク系)
| コード | 例 | 原因 |
|---|---|---|
| 502 | Bad Gateway | Reverse Proxy / WAF が遮断 |
| 503 | Service Unavailable | サーバ過負荷 |
| 504 | Gateway Timeout | API が応答しない |
対処:
- WAF / ModSecurity / Cloudflare を確認
- APIホストのIPを Allowlist に追加
- 低スペックサーバで cron や他プラグインの重実行と衝突していないか確認
4. ログで特定する手順
WordPress 側(クライアント側)
wp_remote_post($url) の戻り値 → wp_remote_retrieve_response_code() を確認
サーバ側(AppCotton側)
error_log
Stripe Webhook Log
appcotton_orders / license_activations の更新状況
典型的な切り分け例
| 状況 | 原因 | 対処 |
|---|---|---|
| フロントはエラーだが Webhook は正常 | プラグイン側の product_slug ミスマッチ | slug 修正 |
| Webhookが 400 | Signing Secret が不一致 | AppCotton設定で再設定 |
| 500が継続発生 | DBカラム不整合 / マイグレーション失敗 | 設定 → DB修復 |
5. 迷ったときの判定フロー
1. ステータスコードが 4xx か 5xx か確認
↓
2. 4xx → 入力・設定・上限・slug を確認
5xx → サーバ / DB / Webhook / PHPログを確認
↓
3. 4xx にも関わらず改善しない → 実際には product 間違いのケースが多い
4. 5xx で error_log に痕跡が無い → WAF / Proxy でブロックされている
まとめ
| 区分 | 意味 | 優先チェック | 対処 |
|---|---|---|---|
| 4xx | ユーザー操作や入力の問題 | product_slug / plan_id / activation_limit | UI / 設定で解決 |
| 5xx | サーバ内部の問題 | error_log / DB構造 / Stripe Webhook | サーバ・アプリ修正が必要 |
4xx = “送り方を直す”
5xx = “受け側を直す”