始める前に
- サンドボックスアプリケーションのAPIキーを使用してください。本番環境のアプリケーションがテスト用VASPに到達することはありません。
- 法人名を指定して、トラベルルールを有効にします。
- 必要に応じて、Webhookの送信先を
travel_rule.status.updatedに登録します。サンドボックスでは、"environment": "sandbox"が設定されたこのイベントが配信されます。
Didit Test VASP
GET /v1/sandbox/scenarios/は、テスト用VASPのプロファイルと、travel_ruleオブジェクト内のすべてのシナリオを返します。そのため、テストではトリガー値をハードコードせずに読み取ることができます。
すべての値はテストデータです。テスト用VASPはいずれのトラベルルールネットワークのメンバーでもありません。サンドボックスでのどの結果も、実際の取引相手やネットワークに到達できることを示すものではありません。
アウトバウンドシナリオ
情報交換が必要なサンドボックスアプリケーションのアウトバウンドtravelRule取引は、すべてテスト用VASPに送られます。受取人のウォレットアドレス(大文字・小文字は区別されません)、またはDidit Test VASP <suffix>形式の受取人名で選択します。両方が設定されている場合は、ウォレットが優先されます。どちらも指定されていない場合、または表にないサフィックスの場合、送金は完了します(accept)。
やり取りを必要としない送金が、テスト用VASPに到達することはありません。具体的には、threshold_amount未満の送金、ユーザー本人の検証済みウォレットへの送金、取引相手のウォレットをセルフホスト型と申告した送金です。あなたまたはエンドユーザーがディレクトリから手動で選択した取引相手VASPは、本番環境のアプリケーションが持つルートに基づいて判断されます。そのエントリにルート(検証済みのTRPエンドポイント、あなたのアプリケーションが送信に使用するネットワーク、またはコンプライアンス連絡先)がある場合、送金はテスト用VASPに送られます。ルートがない場合は、本番環境のアプリケーションと同様に、送金はCOUNTERPARTY_VASP_NOT_FOUNDで終了します。
railはTEST_VASPとなり、送金一覧では受取人VASPとしてDidit Test VASPが表示されます。travel_rule.status.updatedのWebhookで追跡するか、GET /v3/transactions/{transaction_id}/で取得してください。
name_mismatchは、送信した受取人名とテスト用VASPが応答する名義人名を、受取人のエンティティタイプに対応する名前ルール(matching_rules.individual.nameまたはmatching_rules.company.name。設定するまではname_matching_strictnessに従います)で比較します。送金と、その判定を行ったタイムラインエントリには、name_match(compared_with: "counterparty_vasp"付き)と、mismatched_fields: ["name"]を含むdata_matchが記録されます。not_reachableは、再試行中は送金をAWAITING_COUNTERPARTYのままにし、delivery.statusをRETRYING、last_errorをtest VASP is not answeringとした後、COUNTERPARTY_VASP_NOT_REACHABLEにします。その後、{"action": "resend"}を送信すると再度実行できます。self_hostedでは、テスト用VASPがウォレットはセルフホスト型であると応答します。ウォレット所有権ウィジェット(auto_wallet_verificationが有効な間はあなた用に発行されます)、または{"confirmed": true}を指定したPOST .../travel-rule/ownership/で証明を記録してください。ウォレットは受取人の名前でアドレス帳に追加され、名前の一致によって送金が判定されます。一致すれば送金は完了し、ウォレットは検証済みになります。{"confirmed": false}の場合、送金は却下されます。
テストVASPからの受信送金
受信側をテストするには、POST /v3/travel-rule/test-vasp/inbound/でテストVASPから送金を送らせます。アプリケーション自身のアドレス帳にあるウォレットを1つ指定してください。この送金は実際の送金と同じ受信経路で、アドレス帳、所有権モード、名前のルールに照らして判定されます。
201レスポンスには、transaction_id、txn_id、scenario、travel_rule_status、detail、test_vasp: true、およびtravel_rule送金が含まれます。本番アプリケーションでは400("The Didit Test VASP is only available on sandbox applications.")が返され、それ以外のscenarioでは400、トラベルルールが無効なアプリケーションでは409が返されます。
判定待ちの送金は、実際の送金と同様に
POST .../travel-rule/ownership/で判定します。{"confirmed": true}で完了し、{"confirmed": false}で却下されます。
POST /v3/transactions/で自分で報告した入金は、テストVASPが送ったものではありません。送金元VASPを待つAWAITING_COUNTERPARTYのままとなり、そのタイムラインには上記のエンドポイントが示されます。confirmation_timeout_hoursの経過後に期限切れになるまで、Webhookは送信されません。本番アプリケーションと同様に、POST /v3/travel-rule/inbound/では引き続き入金後の登録をアドレス帳に照らして確定できます。
サンドボックスでのWebhook
サンドボックスアプリケーションでは、ステータスが変わるたびにtravel_rule.status.updatedが"environment": "sandbox"を含む形で送信されます。テストVASPが応答した送金には、さらにrail: "TEST_VASP"、test_vasp: true、test_vasp_scenarioが含まれます。それ以外のサンドボックスの動作はサンドボックスでのトランザクションモニタリングの説明どおりです。ルールは評価されず、transaction.createdとtransaction.status.updatedは送信されず、何も請求されません。
サンドボックスでは証明されないこと
- 実際の取引相手、ネットワークのメンバーシップ、またはDiditの公開TRPホストが機能すること。これらにはいずれも接続されません。
- ネットワークの認証情報が有効であること。接続済みのメンバーシップは、最初の本番環境でのやり取りによって証明されます。
- 実際のVASPのディレクトリルート。サンドボックスアプリケーションでは、すべてのルートが
reason: sandbox_application付きでunavailableとなり、すべての行がreachable: falseとなります。