---
generated_at: 2026-01-29 16:30:00
metrics:
  claims_total: 100
  claims_with_evidence: 98
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：Core-Checkout-Payment 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：98 / 100、根拠なし：2
- 優先レビュー（高）
  1. **UT-PAY-045, 046**：SystemConfigServiceの設定値に関するテストケース - 実際の設定キー名とデフォルト値の確認が必要
  2. **UT-PAY-092**：CleanupPaymentTokenTaskHandlerのrun処理 - 削除条件の境界値確認が必要

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/Core/Checkout/Payment/PaymentMethodEntity.php` - PaymentMethodエンティティ定義
- E-02: `src/Core/Checkout/Payment/PaymentMethodCollection.php` - PaymentMethodコレクション定義
- E-03: `src/Core/Checkout/Payment/PaymentMethodDefinition.php` - DALエンティティ定義
- E-04: `src/Core/Checkout/Payment/PaymentProcessor.php` - 支払い処理メインクラス
- E-05: `src/Core/Checkout/Payment/PaymentException.php` - 例外定義クラス
- E-06: `src/Core/Checkout/Payment/Cart/PaymentMethodValidator.php` - カート支払い方法バリデーター
- E-07: `src/Core/Checkout/Payment/Cart/PaymentHandler/PaymentHandlerRegistry.php` - ハンドラーレジストリ
- E-08: `src/Core/Checkout/Payment/Cart/PaymentHandler/AbstractPaymentHandler.php` - 抽象ハンドラー
- E-09: `src/Core/Checkout/Payment/Cart/PaymentHandler/DefaultPayment.php` - デフォルト支払いハンドラー
- E-10: `src/Core/Checkout/Payment/Cart/PaymentHandler/PaymentHandlerType.php` - ハンドラータイプenum
- E-11: `src/Core/Checkout/Payment/Cart/Token/PaymentToken.php` - 支払いトークン構造体
- E-12: `src/Core/Checkout/Payment/Cart/Token/PaymentTokenGenerator.php` - トークン生成
- E-13: `src/Core/Checkout/Payment/Cart/Token/PaymentTokenLifecycle.php` - トークンライフサイクル
- E-14: `src/Core/Checkout/Payment/Cart/Token/JWTFactoryV2.php` - JWT生成（deprecated）
- E-15: `src/Core/Checkout/Payment/Cart/Token/TokenStruct.php` - トークン構造体（deprecated）
- E-16: `src/Core/Checkout/Payment/Cart/PaymentTransactionStruct.php` - トランザクション構造体
- E-17: `src/Core/Checkout/Payment/Cart/PaymentTransactionStructFactory.php` - ファクトリ
- E-18: `src/Core/Checkout/Payment/Cart/RefundPaymentTransactionStruct.php` - 返金トランザクション構造体
- E-19: `src/Core/Checkout/Payment/Cart/PaymentRefundProcessor.php` - 返金処理
- E-20: `src/Core/Checkout/Payment/Cart/PaymentRecurringProcessor.php` - 定期支払い処理
- E-21: `src/Core/Checkout/Payment/Controller/PaymentController.php` - 支払いコントローラー
- E-22: `src/Core/Checkout/Payment/SalesChannel/PaymentMethodRoute.php` - Store API支払い方法ルート
- E-23: `src/Core/Checkout/Payment/SalesChannel/HandlePaymentMethodRoute.php` - Store API支払い処理ルート
- E-24: `src/Core/Checkout/Payment/DataAbstractionLayer/PaymentMethodValidator.php` - DAL削除バリデーター
- E-25: `src/Core/Checkout/Payment/DataAbstractionLayer/PaymentMethodIndexer.php` - インデクサー
- E-26: `src/Core/Checkout/Payment/DataAbstractionLayer/PaymentDistinguishableNameGenerator.php` - 識別名生成
- E-27: `src/Core/Checkout/Payment/Cart/Error/PaymentMethodBlockedError.php` - ブロックエラー
- E-28: `src/Core/Checkout/Payment/Cart/Token/Constraint/PaymentTokenRegisteredValidator.php` - トークン登録バリデーター
- E-29: `src/Core/Checkout/Payment/Cleanup/CleanupPaymentTokenTaskHandler.php` - クリーンアップタスク
- E-30: `src/Core/Checkout/Payment/Aggregate/PaymentMethodTranslation/PaymentMethodTranslationEntity.php` - 翻訳エンティティ

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 (UT-PAY-001) | PaymentMethodEntity.getIdがIDを返却 | E-01 (EntityIdTrait使用) | ○ |
| C-02 (UT-PAY-002) | getPluginIdがプラグインIDを返却 | E-01 L70-73 | ○ |
| C-03 (UT-PAY-003) | getPluginIdがnull許容 | E-01 L26 (?string) | ○ |
| C-04 (UT-PAY-004) | getHandlerIdentifierがハンドラー識別子を返却 | E-01 L80-83 | ○ |
| C-05 (UT-PAY-005) | getNameが名前を返却 | E-01 L100-103 | ○ |
| C-06 (UT-PAY-006) | getActiveがtrueを返却 | E-01 L140-143 | ○ |
| C-07 (UT-PAY-007) | getActiveがfalseを返却 | E-01 L140-143 | ○ |
| C-08 (UT-PAY-008) | getAfterOrderEnabledの動作 | E-01 L250-253 | ○ |
| C-09 (UT-PAY-009) | getAvailabilityRuleIdの動作 | E-01 L220-223 | ○ |
| C-10 (UT-PAY-010) | getAvailabilityRuleIdがnull許容 | E-01 L56 (?string) | ○ |
| C-11 (UT-PAY-011) | getTechnicalNameの動作 | E-01 L270-273 | ○ |
| C-12 (UT-PAY-012) | getPluginIdsが配列を返却 | E-02 L41-43 (fmap使用) | ○ |
| C-13 (UT-PAY-013) | 空コレクションで空配列 | E-02 L41-43 | ○ |
| C-14 (UT-PAY-014) | filterByPluginIdのフィルタリング | E-02 L46-48 | ○ |
| C-15 (UT-PAY-015) | 存在しないIDで空コレクション | E-02 L46-48 | ○ |
| C-16 (UT-PAY-016) | sortPaymentMethodsByPreferenceのソート | E-02 L56-64 | ○ |
| C-17 (UT-PAY-017) | getApiAliasの戻り値 | E-02 L66-69 | ○ |
| C-18 (UT-PAY-018) | PaymentProcessor.payの正常処理 | E-04 L65-120 | ○ |
| C-19 (UT-PAY-019) | 存在しない注文で例外 | E-04 L222 (PaymentException::invalidOrder) | ○ |
| C-20 (UT-PAY-020) | 不明な支払い方法で例外 | E-04 L88 (PaymentException::unknownPaymentMethodById) | ○ |
| C-21 (UT-PAY-021) | エラー時にfail状態 | E-04 L102 (transactionStateHandler->fail) | ○ |
| C-22 (UT-PAY-022) | finalizeの正常処理 | E-04 L128-176 | ○ |
| C-23 (UT-PAY-023) | 無効なトークンで例外 | E-04 L140-141 | ○ |
| C-24 (UT-PAY-024) | キャンセル時にcancel状態 | E-04 L153 (transactionStateHandler->cancel) | ○ |
| C-25 (UT-PAY-025) | validateの正常処理 | E-04 L178-201 | ○ |
| C-26 (UT-PAY-026) | validate時の不明支払い方法 | E-04 L186 | ○ |
| C-27 (UT-PAY-027) | PaymentMethodValidator有効時 | E-06 L15-48 | ○ |
| C-28 (UT-PAY-028) | 非アクティブでエラー | E-06 L18-25 (reason=inactive) | ○ |
| C-29 (UT-PAY-029) | ルール不適合でエラー | E-06 L28-37 (reason=rule not matching) | ○ |
| C-30 (UT-PAY-030) | チャネル未許可でエラー | E-06 L40-47 (reason=not allowed) | ○ |
| C-31 (UT-PAY-031) | PaymentHandlerRegistryの取得 | E-07 L34-65 | ○ |
| C-32 (UT-PAY-032) | 存在しないIDでnull | E-07 L53-55 | ○ |
| C-33 (UT-PAY-033) | App支払いでAppHandler | E-07 L58-59 | ○ |
| C-34 (UT-PAY-034) | supportsでtrue | E-08 L24-28 | ○ |
| C-35 (UT-PAY-035) | supportsでfalse | E-08 L24-28 | ○ |
| C-36 (UT-PAY-036) | validateデフォルトnull | E-08 L46-52 | ○ |
| C-37 (UT-PAY-037) | refundデフォルト例外 | E-08 L71-76 | ○ |
| C-38 (UT-PAY-038) | recurringデフォルト例外 | E-08 L85-90 | ○ |
| C-39 (UT-PAY-039) | DefaultPayment.payでnull | E-09 L18-22 | ○ |
| C-40 (UT-PAY-040) | DefaultPayment.supportsでfalse | E-09 L24-27 | ○ |
| C-41 (UT-PAY-041) | PaymentTokenプロパティ | E-11 L14-22 | ○ |
| C-42 (UT-PAY-042) | PaymentTokenGenerator.encode | E-12 (JWTGenerator継承) | ○ |
| C-43 (UT-PAY-043) | PaymentTokenGenerator.decode | E-12 (JWTGenerator継承) | ○ |
| C-44 (UT-PAY-044) | 無効トークンで例外 | E-12 (JWTException) | ○ |
| C-45 (UT-PAY-045) | getTokenLifetimeの設定値 | E-12 L34-36 | △ |
| C-46 (UT-PAY-046) | デフォルト1800秒 | E-12 L36 (?:1800) | △ |
| C-47 (UT-PAY-047) | addTokenのDB挿入 | E-13 L32-37 | ○ |
| C-48 (UT-PAY-048) | invalidateTokenの削除 | E-13 L21-29 | ○ |
| C-49 (UT-PAY-049) | isRegisteredでtrue | E-13 L40-47 | ○ |
| C-50 (UT-PAY-050) | isRegisteredでfalse | E-13 L40-47 | ○ |
| C-51 (UT-PAY-051) | getOrderTransactionId | E-16 L19-22 | ○ |
| C-52 (UT-PAY-052) | getReturnUrl | E-16 L24-27 | ○ |
| C-53 (UT-PAY-053) | getReturnUrlでnull | E-16 L14 (?string) | ○ |
| C-54 (UT-PAY-054) | isRecurringでtrue | E-16 L34-37 | ○ |
| C-55 (UT-PAY-055) | isRecurringでfalse | E-16 L34-37 | ○ |
| C-56 (UT-PAY-056) | getRefundId | E-18 L16-19 | ○ |
| C-57 (UT-PAY-057) | Factory.build | E-17 L17-20 | ○ |
| C-58 (UT-PAY-058) | Factory.refund | E-17 L22-25 | ○ |
| C-59 (UT-PAY-059) | processRefund正常 | E-19 L32-68 | ○ |
| C-60 (UT-PAY-060) | unknownRefund例外 | E-19 L46 | ○ |
| C-61 (UT-PAY-061) | refundInvalidTransition例外 | E-19 L50 | ○ |
| C-62 (UT-PAY-062) | unknownRefundHandler例外 | E-19 L58 | ○ |
| C-63 (UT-PAY-063) | processRecurring正常 | E-20 L39-60 | ○ |
| C-64 (UT-PAY-064) | invalidOrder例外 | E-20 L74 | ○ |
| C-65 (UT-PAY-065) | paymentTypeUnsupported例外 | E-20 L50 | ○ |
| C-66 (UT-PAY-066) | エラー時fail状態 | E-20 L57 | ○ |
| C-67 (UT-PAY-067) | Controller.finalizeTransaction正常 | E-21 L64-132 | ○ |
| C-68 (UT-PAY-068) | トークンなしで例外 | E-21 L73 (missingRequestParameter) | ○ |
| C-69 (UT-PAY-069) | 無効トークンで例外 | E-21 L96, 101 | ○ |
| C-70 (UT-PAY-070) | errorUrlへリダイレクト | E-21 L206-217 | ○ |
| C-71 (UT-PAY-071) | PaymentMethodRoute.load | E-22 L62-88 | ○ |
| C-72 (UT-PAY-072) | onlyAvailableフィルタ | E-22 L76-78 | ○ |
| C-73 (UT-PAY-073) | デフォルト優先ソート | E-22 L74 | ○ |
| C-74 (UT-PAY-074) | HandlePaymentMethodRoute.load | E-23 L49-75 | ○ |
| C-75 (UT-PAY-075) | orderIdなしでエラー | E-23 L52, 80-81 | ○ |
| C-76 (UT-PAY-076) | 通貨コンテキスト再構築 | E-23 L56-65 | ○ |
| C-77 (UT-PAY-077) | 非プラグイン削除可 | E-24 L36-54 | ○ |
| C-78 (UT-PAY-078) | プラグイン削除不可 | E-24 L52-53 | ○ |
| C-79 (UT-PAY-079) | Indexer.getName | E-25 L35-38 | ○ |
| C-80 (UT-PAY-080) | Indexer.iterate | E-25 L43-54 | ○ |
| C-81 (UT-PAY-081) | iterateでnull | E-25 L49-51 | ○ |
| C-82 (UT-PAY-082) | Indexer.handle | E-25 L67-87 | ○ |
| C-83 (UT-PAY-083) | DistinguishableName生成 | E-26 L25-36 | ○ |
| C-84 (UT-PAY-084) | plugin/appなしで更新なし | E-26 L57-58 | ○ |
| C-85 (UT-PAY-085) | BlockedError.getParameters | E-27 L40-47 | ○ |
| C-86 (UT-PAY-086) | BlockedError.getId | E-27 L70-79 | ○ |
| C-87 (UT-PAY-087) | BlockedError.getLevel | E-27 L86-89 | ○ |
| C-88 (UT-PAY-088) | BlockedError.blockOrder | E-27 L91-94 | ○ |
| C-89 (UT-PAY-089) | TokenRegisteredValidator正常 | E-28 L22-39 | ○ |
| C-90 (UT-PAY-090) | TokenRegisteredValidator失敗 | E-28 L36-39 | ○ |
| C-91 (UT-PAY-091) | 空文字でスキップ | E-28 L28-29 | ○ |
| C-92 (UT-PAY-092) | CleanupTaskHandler.run | E-29 L34-38 | ○ |
| C-93 (UT-PAY-093) | asyncFinalizeInterrupted | E-05 L43-55 | ○ |
| C-94 (UT-PAY-094) | invalidToken | E-05 L135-144 | ○ |
| C-95 (UT-PAY-095) | invalidOrder | E-05 L113-122 | ○ |
| C-96 (UT-PAY-096) | tokenExpired | E-05 L196-207 | ○ |
| C-97 (UT-PAY-097) | duplicateTechnicalName | E-05 L303-311 | ○ |
| C-98 (UT-PAY-098) | TranslationEntity.getName | E-30 L37-40 | ○ |
| C-99 (UT-PAY-099) | TranslationEntity.getDistinguishableName | E-30 L47-50 | ○ |
| C-100 (UT-PAY-100) | TranslationEntity.getPaymentMethodId | E-30 L27-30 | ○ |

## 4) 不足情報（Unknown / Missing）
- **UT-PAY-045, 046**: SystemConfigServiceの`core.cart.paymentFinalizeTransactionTime`設定のデフォルト値と挙動について、システム設定ドキュメントでの確認が推奨される
  - 候補：`config/services.xml` / `SystemConfig` デフォルト設定 / Shopware公式ドキュメント

## 5) リスクフラグ（レビュー観点）
- **0: 低リスク** - エンティティのゲッター/セッター系テストケース（UT-PAY-001〜017）
- **1: 中リスク** - トークンライフタイム設定（UT-PAY-045, 046）- 実環境での設定確認が必要
- **0: 低リスク** - 例外生成系テストケース（UT-PAY-093〜097）- 静的メソッドで明確

## 6) レビュアーチェックリスト（最小）
- [ ] PaymentProcessorのpay/finalizeメソッドのトランザクション状態遷移が正しくテストされているか確認
- [ ] PaymentTokenの有効期限設定（getTokenLifetime）のデフォルト値1800秒の妥当性を確認
- [ ] PaymentMethodValidatorの3つのブロック条件（inactive, rule not matching, not allowed）が網羅されているか確認
- [ ] 返金処理（PaymentRefundProcessor）の状態遷移が正しいか確認
- [ ] CleanupPaymentTokenTaskHandlerの削除条件（expires < now）の境界値テストが適切か確認
