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

sandboxはアプリケーションごとのモードで、すべてのプロバイダーがモック化され、何も課金されず、必要な検証結果を承認・拒否・審査中のいずれにでも強制できます。

Short answer

sandboxは本番アプリケーション内の切り替えスイッチではなく、アプリケーションに設定するモードです。sandboxモードの2つ目のアプリケーションを作成し、そのAPIキーを使うと、すべてのチェックがモック化され、何も課金されず、望む結果を自由に強制できます。本番用のアプリケーションしか見当たらない場合は、sandbox用のアプリケーションを作成する必要があります。モードはアプリケーションごとに選択します。

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

#sandboxはアプリケーションのモード

ここが、ほとんどの人がつまずくポイントです。ライブとsandboxは、同じ組織内の別々のアプリケーションであり、テストトラフィックと本番データが混ざることはありません。各アプリケーションには、liveまたはsandboxのいずれかのモードがあります。

DiditコンソールのAPIキーページ。各キーは1つのアプリケーションに属する
  1. キーは1つのアプリケーションに属します。sandboxアプリのキーは本番セッションに触れられません。
  2. 本番用のキーを再利用するのではなく、テスト用に別のキーを作成してください。
キーはアプリケーションごとに存在するため、sandboxのキーが本番データに届くことはありません。
  1. 2つ目のアプリケーションを作成する

    コンソールの上部にあるアプリケーション切り替えを開き、新しいアプリケーションを作成します。モードとしてsandboxを選択してください。

  2. そのアプリケーションのAPIキーを使う

    sandboxアプリケーションを選択した状態で、API & WebhooksからAPIキーを取得します。本番アプリケーションに独立した「テスト用キー」があるわけではありません。キー自体が環境そのものです。

  3. その中でワークフローを構築する

    sandboxアプリケーションは独自のワークフローを持ちます。テストしたいフローを再構築(またはコピー)してください。

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

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

Note

コンソールに本番用のアプリケーションしか表示されず、sandboxを追加する方法がない場合は、組織向けにsandboxアプリケーション作成を有効化するようサポートに依頼してください。これはアカウントレベルの設定であり、あなたの設定が間違っているわけではありません。

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

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

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テスト

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

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

#sandboxでできないこと

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

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

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