# クレジットを消費せずsandboxでテストする

Source: https://help.didit.me/ja/getting-started/sandbox-and-testing
Updated: 2026-10-12

アプリケーション名の下の切り替えでSandboxを選び、テスト用APIキーを作成して使用します。チェックはシミュレーションされ、課金されず、結果を指定できます。

アプリケーション名の下の切り替えで**Sandbox**を選び、テスト用APIキーを作成して使用します。チェックはシミュレーションされ、課金されず、結果を指定できます。

Diditのsandboxは、決済プロバイダーのテストカードに相当するものです。実際のプロバイダーを呼び出したり、実際の個人データを扱ったり、残高に触れたりすることなく、任意の検証結果をオンデマンドで再現できます。

## 独立したテスト環境

Sandboxは組織で共有するテスト用アプリケーションです。データ、キー、Webhook、リストはLiveと分離され、各ページ上部の帯で環境を確認できます。

![DiditコンソールのAPIキーページ。各キーは1つのアプリケーションに属する](https://help.didit.me/screenshots/api-keys-light.webp)

*キーはアプリケーションごとに存在するため、sandboxのキーが本番データに届くことはありません。*

1. **Sandboxへ切り替える**

   アプリケーション名の下で**Sandbox**を選びます。**Live**へ戻る前に、ワークフローの公開、Liveキーまたはリンク、Webhook、支払い、保存期間のチェックリストを確認し、切り替えるかSandboxに残るかを選びます。

2. **テスト用キーを作成する**

   **開発者 → APIキー**を開き、作成時にSandboxを選びます。キーが環境を決定するため、LiveキーではSandboxセッションを作成できません。

3. **ワークフローを作成またはコピーする**

   Sandboxには独自のワークフローがあります。テスト用に作成するか、Liveからコピーします。

4. **通常どおりセッションを作成する**

   エンドポイントもコードパスも同じです。唯一の違いは、どのキーを送るかだけです。

> **Note:** **Sandbox**が無効な場合、組織にテスト用アプリケーションがまだありません。サポートに有効化を依頼してください。アカウント単位の設定です。

## sandboxが変えるもの、変えないもの

| | Sandbox | ライブ |
|---|---|---|
| 外部プロバイダー | すべてモック化 - サードパーティは一切呼び出されません | 実際に呼び出されます |
| 課金 | 一切課金されません。残高チェックもスキップされます | 完了した機能ごとに課金されます |
| セッション作成の上限 | アプリケーションごとに24時間あたり500件 | 残高に応じます |
| webhookのペイロード | `"environment": "sandbox"` | `"environment": "live"` |
| 抽出データとステータス | 選択したシナリオによってシミュレートされます | 実際の撮影内容から導出されます |
| 撮影されたメディア | **実際に保存されます**。ライブセッションと全く同様です | 保存されます |

> **Warning:** sandboxは、書類、セルフィー、ライブネス動画、住所証明ファイルなど、撮影したメディアをライブセッションと全く同じように保存します。**結果**はシミュレートされますが、アップロード自体は実際に行われるため、実際の本人確認書類や実際の個人情報ではなく、フローが提供するサンプル書類とテストデータを使用してください。

結果がピクセル内容に一切依存しないため、意図的に悪い写真を使っても、sandboxでは拒否になりません。結果を決めるのはシナリオです。

## 結果を選ぶ

セッション作成時に`sandbox_scenario`としてシナリオのスラッグを渡すか、テスト担当者に選ばせることもできます。ホスト型フローのsandboxセッションでは、撮影開始前にカード内の**シナリオピッカー**が表示され、アップロードコンポーネントの下にサンプル書類のストリップと、常時表示される「テストデータのみ」バナーも表示されます。

シナリオは、実際に対応が必要な結果をカバーしています。

| テストしたい内容 | シナリオ |
|---|---|
| すべて承認 | `approve` |
| 期限切れの書類 | `decline_document_expired` |
| 読み取り不能な書類 | `decline_could_not_recognize_document` |
| MRZチェックサムの失敗 | `decline_mrz_validation` |
| 最低年齢未満 | `decline_minimum_age` |
| 顔照合スコアが低すぎる | `decline_face_match_low_similarity` |
| ライブネスへのなりすまし攻撃 | `decline_liveness_attack` |
| AML制裁／PEPヒット | `decline_aml_hit` |
| ブロック済みIPアドレス | `decline_ip_blocklist` |
| 住所証明の住所不一致 | `decline_poa_address_mismatch` |
| NFCチップの整合性チェック失敗 | `decline_nfc_chip_not_verified` |
| データベース検証で該当なし | `decline_database_no_match` |
| 手動レビューが必要（AML） | `review_aml_possible_match` |
| 手動レビューが必要（顔照合が境界値） | `review_face_match_borderline` |
| 手動レビューが必要（住所の部分一致） | `review_poa_partial_match` |
| KYB登記情報の不一致 | `decline_kyb_registry_mismatch` |

`review_*`シナリオは、拒否レベルの入力を用意しなくても、コンソールのレビューキュー、`In Review`のwebhook、レビュアーによる承認や再提出依頼といった、手動レビューの流れ全体を確認できるように用意されています。

> **Tip:** シナリオとマジックバリューの最新カタログは、API自体の`GET /v1/sandbox/scenarios/`から取得できます。ここに記載のスラッグが古く見える場合は、エンドポイントの内容を信頼してください。完全なリファレンス: [sandboxテスト](https://docs.didit.me/integration/sandbox-testing)。

## 自分のコード側で両者を見分ける

すべてのwebhookには`environment`フィールドがあり、`"sandbox"`または`"live"`のいずれかです。キーから環境を推測しようとするのではなく、このフィールドで分岐すれば、テストセッションを実際の顧客のものと取り違えることはありません。

## sandboxでできないこと

- 実在する企業の実際の登記データは返しません。sandboxのKYBはモック化された登記レスポンスを使用します。
- 実際のSMSやメールは送信しません。電話番号確認とメールアドレス確認はモック化されているため、sandboxで実際のメッセージ配信性をプレビューすることはできません。
- 月次のプランクレジットを消費しません。これは同時に、sandboxの実行が残りのクレジットについて何も教えてくれないことも意味します。

## 実際のテスト検証が必要な場合

特定の国のデータベースサービスが利用可能かの確認や、特定キャリアへのSMS配信の確認など、本来ライブ呼び出しが必要なケースもあります。その場合はsandboxではなく、ライブアプリケーションへの少額のチャージが必要です。まずサポートに連絡し、そのサービスがアカウントで実際に有効になっているかを確認してから支出するようにしてください。
