Skip to content

Stripe Agent Skills 照合結果(実装・テスト設計)

項目内容
親 Issue#2734
照合基準リポジトリ内 .agents/skills/stripe-best-practices / .agents/skills/upgrade-stripe(エージェント用。VitePress サイトには含めない)
公式案内Stripe Agent skills
最終更新2026-07-18

1. 目的

有料記事の Stripe Checkout / Webhook 実装とテスト設計を、Stripe 公式 Agent Skills の推奨と突き合わせ、適合点とギャップを記録する。ギャップのうち修正・回収が必要なものは関連 Issue に紐づける。

2. 照合対象

領域参照
CheckoutPaidArticleCheckoutService / StripeCheckoutSessionGateway / StripeClientFactory
WebhookStripeWebhookEventGateway / StripeWebhookService / API-002-1
キー管理StripeSettings / stripe-api-key-config.md
テスト設計paid-article-stripe-e2e-policy.md / paid-article-payment-scenario.md

※ Checkout 通し Playwright(#2730 / PR #2733)は本照合時点では develop 未マージの場合がある。方針ドキュメント(#2708)は対象に含む。

3. 適合(対応不要)

ID観点判定根拠
OK1都度課金の API 選択適合Checkout Sessions(mode: payment)を採用。skill の one-time payments 推奨と一致
OK2payment_method_types適合checkout.sessions.create パラメータに含めていない(動的 PM)
OK3PCI / カード非保持適合Stripe-hosted Checkout に委譲。自サーバーで PAN を扱わない
OK4Webhook 署名検証適合Webhook::constructEvent を使用(StripeWebhookEventGateway
OK5購入記録の正本は Webhook適合checkout.session.completeddb_paid_article_purchase。success URL のみに依存しない設計
OK6冪等適合external_transaction_id(Checkout Session ID)の UNIQUE
OK7秘密鍵のコード非埋め込み適合wp-config.phpdefine のみ。リポジトリにキーなし
OK8環境分離の方針適合test / live をキー prefix で区別。ドキュメントで本番キーの扱いを明示
OK9テスト設計(live 禁止)適合E2E 方針・シナリオとも live キー / 本番 URL / 実ユーザー禁止
OK10テスト設計(CI 非載)適合Stripe CLI・秘密情報・flaky のため CI Quality Gate 非対象。Local opt-in 方針は Stripe Testing と整合
OK11シナリオ線引き(S5/S9/S10)適合外部 Checkout UI は Local 自動化、冪等・メールは Unit 正、Staging は手動。過剰自動化していない

4. ギャップ(Issue 起票)

ID優先度内容Issue
G1Mediumskill は Restricted API key(rk_)推奨。現行は sk_* のみ受理し RAK を拒否する#2736
G2MediumStripeClient で API version 未明示。skill 推奨最新は 2026-06-24.dahlia。版上げ後に integration_identifier も未付与#2735(API version 明示 + Checkout integration_identifier

5. ギャップ(対応不要 / Info)

ID優先度内容判断
I1Info秘密情報の保管を secrets vault 推奨。本プロジェクトは WordPress の wp-config.php パターン既存運用と一致。現状維持で可
I2InfoWebhook の Stripe IP allowlist(defense in depth)共有ホスティング / WP REST では運用コスト大。署名検証を正とし見送り
I3InfoStripe Tax / Connect / Billing / Payment Element都度課金・自サイト Checkout の現行スコープ外
I4Infoローカル core_src/vendor の stripe-php 実体と composer.lock の表記差があり得るデプロイ前に composer install で lock に合わせる運用で十分

6. テスト設計についての結論

方針ドキュメント(#2708)と手動シナリオは、Stripe 公式のテストモード・テストカード・Webhook 転送(CLI)の使い方と矛盾しない。

  • live キー禁止・専用テスト会員/記事・Session ID 限定の片付けは安全側
  • CI に Stripe 秘密情報を載せない判断は skill のキー管理とも整合
  • S6(再送冪等)・S14/S15(実メール)を E2E 自動化しない線引きも妥当

実装コードの回収は #2735 / #2736 で別途行う。本所見の PR では skills 導入とドキュメントのみを変更する。

7. 関連