> ## Documentation Index
> Fetch the complete documentation index at: https://docs.didit.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Travel Rule सैंडबॉक्स परीक्षण गाइड

> Didit Test VASP के विरुद्ध सैंडबॉक्स में हर Travel Rule परिणाम जाँचें: स्वीकृत, अस्वीकृत, नाम मेल नहीं, पहुँच से बाहर, टाइमआउट और स्व-होस्टेड वॉलेट।

सैंडबॉक्स एप्लिकेशन केवल एक प्रतिपक्ष, प्लैटफ़ॉर्म में निर्मित Didit Test VASP, के साथ Travel Rule डेटा का आदान-प्रदान करता है। यह वास्तविक प्रतिपक्ष को संभालने वाले उसी कोड के माध्यम से आपके निर्देशानुसार हर ट्रांसफ़र का उत्तर देता है, ताकि लाइव होने से पहले आप एक्सचेंज की हर स्थिति, टाइमलाइन प्रविष्टि और webhook देख सकें। सैंडबॉक्स में आपके द्वारा भेजी गई कोई भी चीज़ Didit से बाहर नहीं जाती। किसी नेटवर्क, ईमेल प्राप्तकर्ता या Didit के किसी अन्य ग्राहक से कभी संपर्क नहीं किया जाता और कोई शुल्क नहीं लिया जाता।

## शुरू करने से पहले

1. किसी **सैंडबॉक्स** एप्लिकेशन की API कुंजी का उपयोग करें। लाइव एप्लिकेशन टेस्ट VASP तक कभी नहीं पहुँचते।
2. कानूनी नाम के साथ Travel Rule चालू करें:

```bash theme={null}
curl -X PUT https://verification.didit.me/v3/travel-rule/settings/ \
  -H "x-api-key: YOUR_SANDBOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"is_enabled": true, "legal_name": "Example CASP Sandbox"}'
```

3. वैकल्पिक रूप से किसी webhook गंतव्य को `travel_rule.status.updated` के लिए सब्सक्राइब करें। सैंडबॉक्स इसे `"environment": "sandbox"` चिह्नित करके भेजता है।

## Didit Test VASP

`GET /v1/sandbox/scenarios/` टेस्ट VASP की प्रोफ़ाइल और उसके `travel_rule` ऑब्जेक्ट में मौजूद हर परिदृश्य लौटाता है, ताकि आपके टेस्ट ट्रिगर मानों को हार्ड-कोड करने के बजाय उन्हें पढ़ सकें:

| फ़ील्ड | मान |
| - | - |
| `legal_name` | `Didit Test VASP` |
| `lei` | `DIDITESTVASP00000001`, सही प्रारूप में, लेकिन पंजीकृत नहीं |
| `jurisdiction` | `GB` |
| `compliance_email` | `didit.test` के अंतर्गत एक पता, जिस पर कभी मेल नहीं भेजा जाता |
| `travel_address` | `.test` होस्ट के अंतर्गत एक Travel Address, जो कभी पहुँच में नहीं होता |
| `network_codes` | टेस्ट कोड, जिन पर कभी कॉल नहीं किया जाता |
| `default_scenario` | `accept` |
| `inbound_scenarios` | `["accept", "name_mismatch"]` |

हर मान टेस्ट डेटा है। टेस्ट VASP किसी भी Travel Rule नेटवर्क का सदस्य नहीं है, और सैंडबॉक्स का कोई भी परिणाम यह नहीं दिखाता कि किसी असली प्रतिपक्ष या नेटवर्क तक पहुँचा जा सकता है।

## आउटबाउंड परिदृश्य

सैंडबॉक्स एप्लिकेशन का हर आउटबाउंड `travelRule` ट्रांसफ़र, जिसे आदान-प्रदान की ज़रूरत है, टेस्ट VASP के पास जाता है। परिणाम लाभार्थी वॉलेट पते से चुनें (केस मायने नहीं रखता), या `Didit Test VASP <suffix>` के रूप वाले लाभार्थी नाम से। दोनों सेट होने पर वॉलेट को प्राथमिकता मिलती है। दोनों में से कुछ भी न हो, या तालिका में सूचीबद्ध न होने वाला प्रत्यय हो, तो ट्रांसफ़र पूरा हो जाता है (`accept`)।

जिस ट्रांसफ़र को आदान-प्रदान की ज़रूरत नहीं, वह कभी टेस्ट VASP तक नहीं पहुँचता: आपके `threshold_amount` से कम राशि वाला, आपके उपयोगकर्ता के अपने सत्यापित वॉलेट पर जाने वाला, और वह जिसका प्रतिपक्ष वॉलेट आपने स्व-होस्टेड घोषित किया है। आप या आपके अंतिम उपयोगकर्ता ने डायरेक्टरी से हाथ से जो प्रतिपक्ष VASP चुना है, उसे उन्हीं रूटों से आंका जाता है जिनसे एक लाइव एप्लिकेशन इसे आंकता है: जब उसकी प्रविष्टि में कोई रूट हो (एक सत्यापित `TRP` endpoint, एक नेटवर्क जिस पर आपका एप्लिकेशन भेजता है, या एक अनुपालन संपर्क), तो ट्रांसफ़र टेस्ट VASP के पास जाता है। जब कोई रूट न हो, तो ट्रांसफ़र `COUNTERPARTY_VASP_NOT_FOUND` पर समाप्त होता है, जैसा लाइव एप्लिकेशन पर होता।

| परिदृश्य | नाम प्रत्यय | वॉलेट (ETH) | कहाँ समाप्त होता है |
| - | - | - | - |
| `accept` | कोई नहीं | `0xc00c4cd93ff83953ce3347b33656d68ab8f35cfb` | `COMPLETED`, फिर जब आप `payment_txn_id` रिपोर्ट करें तो `FINISHED` |
| `decline` | `Decline` | `0x7694c5b0213859ef409107853a36ff7c85835f18` | `COUNTERPARTY_VASP_GENERAL_DECLINE` |
| `name_mismatch` | `Name Mismatch` | `0x501b7a0886e31f516aaf54fa99107d2377bd2d3e` | `COUNTERPARTY_MISMATCHED_DATA`, आपके नाम नियम पर (`NONE` के साथ यह पूरा हो जाता है) |
| `not_reachable` | `Not Reachable` | `0xf0e986c1a1c3ae41629bf5cdcee0a67dd1eb0cce` | वास्तविक पुनः प्रयास शेड्यूल (30 सेकंड, फिर 2, 10, 30 और 60 मिनट; कुल लगभग एक घंटा 45 मिनट) के बाद `COUNTERPARTY_VASP_NOT_REACHABLE`, फिर से भेजा जा सकता है |
| `timeout` | `Timeout` | `0xb63a1b1d4bee82d109332187cbf5b657eb7da498` | एक-मिनट की समय-सीमा पार होने के बाद पहली जाँच पर `EXPIRED`, यानी लगभग 15 मिनट के भीतर; फिर आपका `timeout_outcome` लागू होता है |
| `self_hosted` | `Self Hosted` | `0x33dcc2a7e69cf965f7f4eaf6ba657bcb078a2b65` | `UNCONFIRMED_OWNERSHIP`, फिर वॉलेट का स्वामित्व प्रमाण दर्ज होने पर `COMPLETED` |

```bash theme={null}
curl -X POST https://verification.didit.me/v3/transactions/ \
  -H "x-api-key: YOUR_SANDBOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "transaction_id": "sbx-tr-accept-001",
    "transaction_category": "travelRule",
    "transaction_details": {
      "direction": "outbound",
      "action_type": "transfer",
      "amount": "0.25",
      "currency": "ETH",
      "currency_kind": "crypto"
    },
    "subject": { "entity_type": "individual", "vendor_data": "user-042", "full_name": "Jane Doe" },
    "travel_rule_details": {
      "status": "AWAITING_COUNTERPARTY",
      "beneficiary_data": {
        "wallet_address": "0xc00c4cd93ff83953ce3347b33656d68ab8f35cfb",
        "name": "Carlos Ruiz"
      }
    }
  }'
```

ट्रांसफ़र का `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 से जवाब दिलवाता है कि वॉलेट स्व-होस्टेड है। प्रमाण [वॉलेट स्वामित्व विजेट](https://docs.didit.me/hi/transaction-monitoring/wallet-ownership-widget.md) से दर्ज करें (जो `auto_wallet_verification` चालू होने पर आपके लिए बनता है), या [`POST .../travel-rule/ownership/`](https://docs.didit.me/hi/management-api/travel-rule/confirm-ownership) से `{"confirmed": true}` के साथ। वॉलेट लाभार्थी के नाम से आपकी एड्रेस बुक में जुड़ जाता है, और नाम मिलान ट्रांसफ़र का निर्णय करता है। मिलान होने पर ट्रांसफ़र पूरा हो जाता है और वॉलेट सत्यापित चिह्नित होता है। `{"confirmed": false}` इसे अस्वीकार करता है।

## टेस्ट VASP से इनबाउंड ट्रांसफ़र

प्राप्त करने वाली ओर का परीक्षण करने के लिए, टेस्ट VASP से `POST /v3/travel-rule/test-vasp/inbound/` कॉल करके आपको एक ट्रांसफ़र भेजने को कहें। अपने एप्लिकेशन के किसी एक [एड्रेस-बुक](https://docs.didit.me/hi/transaction-monitoring/travel-rule.md#वॉलेट-पता-पुस्तिका) वॉलेट का नाम दें: ट्रांसफ़र का फ़ैसला उसी इनबाउंड पथ से होता है जिससे वास्तविक ट्रांसफ़र का फ़ैसला होता है, यानी आपकी एड्रेस बुक, आपके स्वामित्व मोड और आपके नाम नियमों के आधार पर।

```bash theme={null}
curl -X POST https://verification.didit.me/v3/travel-rule/test-vasp/inbound/ \
  -H "x-api-key: YOUR_SANDBOX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "beneficiary_wallet_address": "0xYourDepositWallet",
    "scenario": "accept",
    "reference": "sbx-inbound-001"
  }'
```

| फ़ील्ड | विवरण |
| - | - |
| `beneficiary_wallet_address` | आवश्यक, अधिकतम 128 अक्षर। अपने किसी एड्रेस-बुक वॉलेट का उपयोग करें: कोई भी अन्य वॉलेट `ON_HOLD` में दर्ज होता है। |
| `scenario` | `accept` (डिफ़ॉल्ट): टेस्ट VASP वॉलेट के अपने धारक का नाम देता है। `name_mismatch`: वह ऐसे व्यक्ति का नाम देता है जिससे कोई धारक सहमत नहीं है। |
| `chain`, `amount`, `currency` | वैकल्पिक। डिफ़ॉल्ट `ETH`, `1` और `ETH` हैं। |
| `reference` | वैकल्पिक, अधिकतम 128 अक्षर। वही `reference` दोबारा भेजने पर पहला उत्तर (`201`) लौटता है और कुछ नया दर्ज नहीं होता। |

`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` मिलता है, और जिस एप्लिकेशन पर Travel Rule बंद है उसे `409` मिलता है।

| आपकी वॉलेट प्रविष्टि | `accept` | `name_mismatch` |
| - | - | - |
| उस चेन पर कोई प्रविष्टि नहीं | `ON_HOLD` | `ON_HOLD` |
| आपके [स्वामित्व मोड](https://docs.didit.me/hi/transaction-monitoring/travel-rule.md#स्वामित्व-सत्यापन-मोड) के लिए स्वामित्व सिद्ध नहीं | `UNCONFIRMED_OWNERSHIP` | `UNCONFIRMED_OWNERSHIP` |
| सत्यापित | `COMPLETED` जब `inbound_auto_accept` चालू हो, अन्यथा `ON_HOLD` | `COUNTERPARTY_MISMATCHED_DATA` (नाम नियम `NONE` पर, `accept` की तरह) |

प्रतीक्षा कर रहे ट्रांसफ़र का फ़ैसला [`POST .../travel-rule/ownership/`](https://docs.didit.me/hi/management-api/travel-rule/confirm-ownership) से करें, ठीक वैसे जैसे एक वास्तविक ट्रांसफ़र का करते हैं: `{"confirmed": true}` उसे पूरा करता है और `{"confirmed": false}` उसे अस्वीकार करता है।

`POST /v3/transactions/` से आपके द्वारा स्वयं रिपोर्ट किया गया जमा वह नहीं है जो टेस्ट VASP ने भेजा हो: वह अपने प्रेषक VASP के उत्तर की प्रतीक्षा में `AWAITING_COUNTERPARTY` रहता है, और उसकी टाइमलाइन ऊपर दिए गए एंडपॉइंट का नाम लेती है। `confirmation_timeout_hours` के बाद समाप्त होने तक यह कोई webhook नहीं भेजता। [`POST /v3/travel-rule/inbound/`](https://docs.didit.me/hi/management-api/travel-rule/register-inbound) अब भी डिपॉज़िट के बाद के पंजीकरण का आपकी एड्रेस बुक के विरुद्ध निपटारा करता है, जैसा एक लाइव एप्लिकेशन पर होता है।

## सैंडबॉक्स में webhook

`travel_rule.status.updated` सैंडबॉक्स एप्लिकेशनों के लिए हर स्थिति परिवर्तन पर `"environment": "sandbox"` के साथ ट्रिगर होता है। जिस ट्रांसफ़र का उत्तर टेस्ट VASP ने दिया हो, उसमें `rail: "TEST_VASP"`, `test_vasp: true` और `test_vasp_scenario` भी होते हैं। सैंडबॉक्स का बाकी व्यवहार वैसा ही रहता है जैसा [सैंडबॉक्स में लेन-देन निगरानी](https://docs.didit.me/hi/integration/sandbox-testing.md#सैंडबॉक्स-में-लेन-देन-निगरानी) में बताया गया है: नियमों का मूल्यांकन नहीं होता, `transaction.created` और `transaction.status.updated` नहीं भेजे जाते, और कोई बिलिंग नहीं होती।

## सैंडबॉक्स क्या सिद्ध नहीं करता

* कि कोई वास्तविक प्रतिपक्ष, कोई नेटवर्क सदस्यता, या Didit का सार्वजनिक TRP होस्ट काम करता है। इनमें से किसी से संपर्क नहीं किया जाता।
* कि आपके नेटवर्क क्रेडेंशियल वैध हैं। कनेक्टेड सदस्यता उसके पहले लाइव आदान-प्रदान से सिद्ध होती है।
* वास्तविक VASP के [डायरेक्टरी](https://docs.didit.me/hi/transaction-monitoring/travel-rule.md#डायरेक्टरी) रूट। सैंडबॉक्स एप्लिकेशन पर हर रूट `reason: sandbox_application` के साथ `unavailable` दिखता है, और हर पंक्ति `reachable: false` दिखाती है।

हर रेल आज प्रोडक्शन में किस तक पहुँचती है, यह जानने के लिए [Travel Rule नेटवर्क](https://docs.didit.me/hi/transaction-monitoring/travel-rule-networks.md) देखें।


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.