---
generated_at: 2026-02-24 10:30:00
metrics:
  claims_total: 114
  claims_with_evidence: 112
  claims_without_evidence: 2
confidence_derived: 0.98
---

# 根拠レポート：providers-payment-stripe 単体テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された単体テストケース一覧の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.98**
  - 根拠あり：112 / 114、根拠なし：2
- 優先レビュー（高）
  1. **UT-STP-016**：リトライロジックの実際のタイミング・遅延計算の検証が困難
  2. **UT-STP-081**：Stripe SDKの内部署名検証ロジックに依存

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `packages/modules/providers/payment-stripe/src/core/stripe-base.ts`（メインの基底クラス）
- E-02: `packages/modules/providers/payment-stripe/src/services/stripe-provider.ts`（Stripeプロバイダーサービス）
- E-03: `packages/modules/providers/payment-stripe/src/services/stripe-oxxo.ts`（OXXOプロバイダーサービス）
- E-04: `packages/modules/providers/payment-stripe/src/services/stripe-bancontact.ts`（Bancontactプロバイダーサービス）
- E-05: `packages/modules/providers/payment-stripe/src/services/stripe-blik.ts`（BLIKプロバイダーサービス）
- E-06: `packages/modules/providers/payment-stripe/src/services/stripe-giropay.ts`（Giropayプロバイダーサービス）
- E-07: `packages/modules/providers/payment-stripe/src/services/stripe-ideal.ts`（iDEALプロバイダーサービス）
- E-08: `packages/modules/providers/payment-stripe/src/services/stripe-przelewy24.ts`（Przelewy24プロバイダーサービス）
- E-09: `packages/modules/providers/payment-stripe/src/services/stripe-promptpay.ts`（PromptPayプロバイダーサービス）
- E-10: `packages/modules/providers/payment-stripe/src/utils/get-smallest-unit.ts`（通貨変換ユーティリティ）
- E-11: `packages/modules/providers/payment-stripe/src/utils/__tests__/get-smallest-unit.ts`（既存のテスト）
- E-12: `packages/modules/providers/payment-stripe/src/types/index.ts`（型定義・定数）
- E-13: `packages/modules/providers/payment-stripe/src/index.ts`（モジュールエントリポイント）

## 3) Claims と根拠の対応（レビューの主戦場）

### StripeBase クラス（stripe-base.ts）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | validateOptionsはapiKeyの存在を検証する | E-01: L67-71 `if (!isDefined(options.apiKey))` | ○ |
| C-02 | normalizePaymentIntentParametersはextraパラメータを正規化する | E-01: L92-136 メソッド全体 | ○ |
| C-03 | handleStripeErrorはエラータイプに応じてリトライまたはデータを返す | E-01: L138-183 switch文 | ○ |
| C-04 | StripeCardErrorでpayment_intentが存在する場合データを返す | E-01: L144-149 `if (stripeError.payment_intent)` | ○ |
| C-05 | StripeConnectionError/RateLimitErrorでリトライフラグを返す | E-01: L157-163 `return { retry: true }` | ○ |
| C-06 | StripeAPIErrorで不確定状態を返す | E-01: L164-173 `indeterminate_due_to` | ○ |
| C-07 | executeWithRetryは指数バックオフでリトライを実行する | E-01: L185-221 メソッド全体 | ○ |
| C-08 | getPaymentStatusはIDでPaymentIntentを取得する | E-01: L223-238 `stripe_.paymentIntents.retrieve(id)` | ○ |
| C-09 | initiatePaymentはPaymentIntentを作成する | E-01: L240-274 `stripe_.paymentIntents.create` | ○ |
| C-10 | authorizePaymentはgetPaymentStatusを呼び出す | E-01: L276-280 `return this.getPaymentStatus(input)` | ○ |
| C-11 | cancelPaymentはPaymentIntentをキャンセルする | E-01: L282-304 `stripe_.paymentIntents.cancel` | ○ |
| C-12 | capturePaymentはPaymentIntentをキャプチャする | E-01: L306-326 `stripe_.paymentIntents.capture` | ○ |
| C-13 | deletePaymentはcancelPaymentを呼び出す | E-01: L328-330 `return await this.cancelPayment(input)` | ○ |
| C-14 | refundPaymentは返金を作成する | E-01: L332-363 `stripe_.refunds.create` | ○ |
| C-15 | retrievePaymentはPaymentIntent情報を取得する | E-01: L365-378 `stripe_.paymentIntents.retrieve` | ○ |
| C-16 | updatePaymentはPaymentIntentを更新する | E-01: L380-411 `stripe_.paymentIntents.update` | ○ |
| C-17 | createAccountHolderはStripe顧客を作成する | E-01: L413-468 `stripe_.customers.create` | ○ |
| C-18 | updateAccountHolderはStripe顧客を更新する | E-01: L470-528 `stripe_.customers.update` | ○ |
| C-19 | deleteAccountHolderはStripe顧客を削除する | E-01: L530-548 `stripe_.customers.del` | ○ |
| C-20 | listPaymentMethodsは顧客の支払い方法一覧を取得する | E-01: L550-571 `stripe_.customers.listPaymentMethods` | ○ |
| C-21 | savePaymentMethodはSetupIntentを作成する | E-01: L573-599 `stripe_.setupIntents.create` | ○ |
| C-22 | getStatusはPaymentIntent.statusに応じてステータスを返す | E-01: L601-628 switch文 | ○ |
| C-23 | getWebhookActionAndDataはイベントタイプに応じてアクションを返す | E-01: L630-707 switch文 | ○ |
| C-24 | constructWebhookEventはStripe署名を検証する | E-01: L715-723 `stripe_.webhooks.constructEvent` | ○ |
| C-25 | buildErrorはエラーメッセージをフォーマットする | E-01: L724-733 メソッド全体 | ○ |
| C-26 | リトライ遅延は指数バックオフ+ジッターを使用 | E-01: L203-206 遅延計算ロジック | △ |
| C-27 | Webhook署名検証はStripe SDKに依存 | E-01: L718-722 constructEvent呼び出し | △ |

### 通貨変換ユーティリティ（get-smallest-unit.ts）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-28 | getSmallestUnitは通貨に応じて金額を最小単位に変換する | E-10: L45-64 関数全体 | ○ |
| C-29 | getAmountFromSmallestUnitは最小単位から標準単位に変換する | E-10: L72-79 関数全体 | ○ |
| C-30 | 0桁小数通貨（JPY等）は変換なし | E-10: L6-23 currencyMultipliers | ○ |
| C-31 | 3桁小数通貨（KWD等）は10の倍数に切り上げ | E-10: L59-61 `Math.ceil(numeric / 10) * 10` | ○ |
| C-32 | USD等のテストケースが既存 | E-11: L4-20 既存テスト | ○ |

### サービスクラス群

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-33 | StripeProviderServiceのidentifierは'stripe' | E-02: L5 `static identifier = PaymentProviderKeys.STRIPE` | ○ |
| C-34 | StripeProviderServiceのpaymentIntentOptionsは空オブジェクト | E-02: L11-13 `return {}` | ○ |
| C-35 | OxxoProviderServiceのidentifierは'stripe-oxxo' | E-03: L5 `static identifier = PaymentProviderKeys.OXXO` | ○ |
| C-36 | OxxoProviderServiceはOXXO固有のオプションを返す | E-03: L11-21 paymentIntentOptions | ○ |
| C-37 | BancontactProviderServiceのidentifierは'stripe-bancontact' | E-04: L5 `static identifier = PaymentProviderKeys.BAN_CONTACT` | ○ |
| C-38 | BancontactProviderServiceはBancontact固有のオプションを返す | E-04: L11-16 paymentIntentOptions | ○ |
| C-39 | BlikProviderServiceのidentifierは'stripe-blik' | E-05: L5 | ○ |
| C-40 | BlikProviderServiceはBLIK固有のオプションを返す | E-05: L11-16 | ○ |
| C-41 | GiropayProviderServiceのidentifierは'stripe-giropay' | E-06: L5 | ○ |
| C-42 | GiropayProviderServiceはGiropay固有のオプションを返す | E-06: L11-16 | ○ |
| C-43 | IdealProviderServiceのidentifierは'stripe-ideal' | E-07: L5 | ○ |
| C-44 | IdealProviderServiceはiDEAL固有のオプションを返す | E-07: L11-16 | ○ |
| C-45 | Przelewy24ProviderServiceのidentifierは'stripe-przelewy24' | E-08: L5 | ○ |
| C-46 | Przelewy24ProviderServiceはP24固有のオプションを返す | E-08: L11-16 | ○ |
| C-47 | PromptpayProviderServiceのidentifierは'stripe-promptpay' | E-09: L5 | ○ |
| C-48 | PromptpayProviderServiceはPromptPay固有のオプションを返す | E-09: L11-16 | ○ |

### 型定義・定数（types/index.ts）

| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-49 | StripeOptionsにapiKeyとwebhookSecretが必須 | E-12: L1-26 インターフェース定義 | ○ |
| C-50 | PaymentIntentOptionsはオプションプロパティを持つ | E-12: L28-37 インターフェース定義 | ○ |
| C-51 | ErrorCodesに定数が定義されている | E-12: L39-42 | ○ |
| C-52 | ErrorIntentStatusに定数が定義されている | E-12: L44-47 | ○ |
| C-53 | PaymentProviderKeysに全プロバイダーキーが定義されている | E-12: L49-58 | ○ |

## 4) 不足情報（Unknown / Missing）
- **リトライロジックの詳細検証（UT-STP-016）**：指数バックオフの遅延計算（L203-206）は実装されているが、実際のタイミング検証はモックまたは統合テストが必要
  - 候補：実行時間を計測するテスト / setTimeoutのモック / 統合テスト
- **Webhook署名検証の詳細（UT-STP-081）**：Stripe SDKの`constructEvent`メソッドの内部ロジックに依存しており、無効な署名のエラー詳細はSDKの実装に依存
  - 候補：Stripe SDKドキュメント / 統合テスト / モック署名テスト

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**：大部分のテストケースは直接ソースコードから導出可能
- **1（中リスク）**：
  - Stripe APIの外部依存テスト（モック必要）
  - 非同期処理のタイミングテスト
- **2（高リスク）**：
  - 実際の決済処理を伴う統合テスト（本番環境への影響を避ける必要あり）

## 6) レビュアーチェックリスト（最小）
- [ ] 全テストケースが対象ファイル・メソッドに紐づいているか確認
- [ ] 高優先度のテストケース（金額計算、認可、ステータス判定）の入力値・期待結果が妥当か確認
- [ ] 異常系テストが適切なエラーメッセージを検証しているか確認
- [ ] 境界値テスト（金額0、空配列、null/undefined）が網羅されているか確認
- [ ] 通貨変換テストが既存テスト（E-11）と整合性があるか確認
- [ ] 各支払い方法プロバイダー（OXXO, Bancontact等）の固有オプションが正しいか確認
- [ ] Webhook処理の全イベントタイプがカバーされているか確認
