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":"0xYourSandboxWallet","scenario":"accept","reference":"demo-001"}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.transactions.travel_rule.trigger_test_vasp_inbound(
beneficiary_wallet_address="0xYourSandboxWallet",
scenario="accept",
amount="1",
reference="demo-001",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.transactions.travelRule.triggerTestVaspInbound({
beneficiary_wallet_address: "0xYourSandboxWallet",
scenario: "accept",
amount: "1",
reference: "demo-001",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Transactions.TravelRule.TriggerTestVASPInbound(ctx, didit.TravelRuleTestVASPInboundRequest{
BeneficiaryWalletAddress: "0xYourSandboxWallet",
Scenario: didit.Some(didit.TravelRuleTestVASPInboundRequestScenario("accept")),
Amount: didit.String("1"),
Reference: didit.String("demo-001"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.TravelRuleTestVaspInboundRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.transactions().travelRule().triggerTestVaspInbound(TravelRuleTestVaspInboundRequest.builder()
.beneficiaryWalletAddress("0xYourSandboxWallet")
.scenario(TravelRuleTestVaspInboundRequest.Scenario.of("accept"))
.amount("1")
.reference("demo-001")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->transactions->travelRule->triggerTestVaspInbound([
'beneficiary_wallet_address' => '0xYourSandboxWallet',
'scenario' => 'accept',
'amount' => '1',
'reference' => 'demo-001',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.transactions.travel_rule.trigger_test_vasp_inbound(
beneficiary_wallet_address: "0xYourSandboxWallet",
scenario: "accept",
amount: "1",
reference: "demo-001"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Transactions.TravelRule.TriggerTestVaspInboundAsync(new TravelRuleTestVaspInboundRequest
{
BeneficiaryWalletAddress = "0xYourSandboxWallet",
Scenario = new TravelRuleTestVaspInboundRequestScenario("accept"),
Amount = "1",
Reference = "demo-001",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"txn_id": "<string>",
"scenario": "<string>",
"travel_rule_status": "<string>",
"detail": "<string>",
"test_vasp": true,
"travel_rule": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "AWAITING_COUNTERPARTY",
"direction": "INBOUND",
"rail": "INTERNAL",
"protocol": "<string>",
"ivms_version": "ivms101.2023",
"required": true,
"ownership_confirmed": true,
"deadline_at": "2023-11-07T05:31:56Z",
"timeline": [
{
"status": "<string>",
"at": "2023-11-07T05:31:56Z",
"detail": "<string>",
"name_match": {
"score": 50,
"matched": true,
"method": "none",
"strictness": "NONE",
"compared_with": "wallet_holder",
"transfer_name": "<string>",
"compared_name": "<string>",
"matched_names": [
"<string>"
],
"mismatched_names": [
"<string>"
]
},
"reason": "<string>"
}
],
"counterparty_vasp": {
"name": "<string>",
"lei": "<string>",
"dd_score": 123,
"dd_score_breakdown": {},
"dd_assessed_at": "2023-11-07T05:31:56Z"
},
"originator_data": {},
"beneficiary_data": {},
"name_match": {
"score": 50,
"matched": true,
"method": "none",
"strictness": "NONE",
"compared_with": "wallet_holder",
"transfer_name": "<string>",
"compared_name": "<string>",
"matched_names": [
"<string>"
],
"mismatched_names": [
"<string>"
]
},
"data_match": {
"matched": true,
"mismatched_fields": [
"name"
],
"fields": {}
},
"mismatched_fields": [
"<string>"
],
"data_unmasked": {
"at": "2023-11-07T05:31:56Z",
"reason": "ownership_confirmed",
"actor": "<string>"
},
"data_masked": true,
"created_at": "2023-11-07T05:31:56Z",
"delivery": {
"kind": "SEND",
"status": "QUEUED",
"rail": "INTERNAL",
"attempts": 1,
"last_error": "email undeliverable",
"next_attempt_at": "2023-11-07T05:31:56Z",
"delivered_at": "2023-11-07T05:31:56Z"
},
"discovery": [
{
"step": "internal_address_book",
"outcome": "match",
"reason": "<string>",
"vasp": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rail": "<string>",
"at": "2023-11-07T05:31:56Z"
}
],
"reason": "<string>",
"next_actions": [
{
"action": "select_counterparty_vasp",
"url": "<string>"
}
],
"chain_details": {
"chain": "<string>",
"shape": "utxo",
"originator": {
"address": "<string>",
"memo": "<string>",
"source": "declared"
},
"beneficiary": {
"address": "<string>",
"memo": "<string>",
"source": "declared"
},
"utxo": {
"inputs": [
{
"address": "<string>",
"amount": "0.0125",
"txid": "<string>",
"vout": 1
}
],
"outputs": [
{
"address": "<string>",
"amount": "0.0125",
"txid": "<string>",
"vout": 1
}
],
"change_output_indexes": [
123
],
"beneficiary_output_index": 123
},
"lightning": {},
"warnings": [
"declared_originator_not_an_input"
],
"not_applicable_reason": "LIGHTNING_NO_PAYEE_IDENTIFIER"
}
}
}{}{
"detail": "<string>"
}触发测试 VASP 入站转账 API
仅限沙盒:让 Didit 测试 VASP 向您的应用发起一笔入站 Travel Rule 转账,验证您自己的决策、收件箱和股权结构流程。
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":"0xYourSandboxWallet","scenario":"accept","reference":"demo-001"}'from didit import Didit
# Reads DIDIT_API_KEY.
client = Didit()
result = client.transactions.travel_rule.trigger_test_vasp_inbound(
beneficiary_wallet_address="0xYourSandboxWallet",
scenario="accept",
amount="1",
reference="demo-001",
)
print(result)import Didit from "@didit-protocol/sdk-node";
// Reads DIDIT_API_KEY.
const didit = new Didit();
const result = await didit.transactions.travelRule.triggerTestVaspInbound({
beneficiary_wallet_address: "0xYourSandboxWallet",
scenario: "accept",
amount: "1",
reference: "demo-001",
});
console.log(result);ctx := context.Background()
// Reads DIDIT_API_KEY.
client := didit.NewClient()
result, err := client.Transactions.TravelRule.TriggerTestVASPInbound(ctx, didit.TravelRuleTestVASPInboundRequest{
BeneficiaryWalletAddress: "0xYourSandboxWallet",
Scenario: didit.Some(didit.TravelRuleTestVASPInboundRequestScenario("accept")),
Amount: didit.String("1"),
Reference: didit.String("demo-001"),
})
if err != nil {
log.Fatal(err)
}
fmt.Printf("%+v\n", result)import me.didit.Didit;
import me.didit.types.TravelRuleTestVaspInboundRequest;
// Reads DIDIT_API_KEY.
Didit client = new Didit();
var result = client.transactions().travelRule().triggerTestVaspInbound(TravelRuleTestVaspInboundRequest.builder()
.beneficiaryWalletAddress("0xYourSandboxWallet")
.scenario(TravelRuleTestVaspInboundRequest.Scenario.of("accept"))
.amount("1")
.reference("demo-001")
.build());
System.out.println(result);<?php
require 'vendor/autoload.php';
use Didit\DiditClient;
// Reads DIDIT_API_KEY.
$didit = new DiditClient();
$result = $didit->transactions->travelRule->triggerTestVaspInbound([
'beneficiary_wallet_address' => '0xYourSandboxWallet',
'scenario' => 'accept',
'amount' => '1',
'reference' => 'demo-001',
]);
print_r($result->toArray());require "didit"
# Reads DIDIT_API_KEY.
didit = Didit::Client.new
result = didit.transactions.travel_rule.trigger_test_vasp_inbound(
beneficiary_wallet_address: "0xYourSandboxWallet",
scenario: "accept",
amount: "1",
reference: "demo-001"
)
puts result.to_husing System;
using System.Text.Json;
using Didit;
// Reads DIDIT_API_KEY.
using var client = new DiditClient();
var result = await client.Transactions.TravelRule.TriggerTestVaspInboundAsync(new TravelRuleTestVaspInboundRequest
{
BeneficiaryWalletAddress = "0xYourSandboxWallet",
Scenario = new TravelRuleTestVaspInboundRequestScenario("accept"),
Amount = "1",
Reference = "demo-001",
});
Console.WriteLine(JsonSerializer.Serialize(result));{
"transaction_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"txn_id": "<string>",
"scenario": "<string>",
"travel_rule_status": "<string>",
"detail": "<string>",
"test_vasp": true,
"travel_rule": {
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "AWAITING_COUNTERPARTY",
"direction": "INBOUND",
"rail": "INTERNAL",
"protocol": "<string>",
"ivms_version": "ivms101.2023",
"required": true,
"ownership_confirmed": true,
"deadline_at": "2023-11-07T05:31:56Z",
"timeline": [
{
"status": "<string>",
"at": "2023-11-07T05:31:56Z",
"detail": "<string>",
"name_match": {
"score": 50,
"matched": true,
"method": "none",
"strictness": "NONE",
"compared_with": "wallet_holder",
"transfer_name": "<string>",
"compared_name": "<string>",
"matched_names": [
"<string>"
],
"mismatched_names": [
"<string>"
]
},
"reason": "<string>"
}
],
"counterparty_vasp": {
"name": "<string>",
"lei": "<string>",
"dd_score": 123,
"dd_score_breakdown": {},
"dd_assessed_at": "2023-11-07T05:31:56Z"
},
"originator_data": {},
"beneficiary_data": {},
"name_match": {
"score": 50,
"matched": true,
"method": "none",
"strictness": "NONE",
"compared_with": "wallet_holder",
"transfer_name": "<string>",
"compared_name": "<string>",
"matched_names": [
"<string>"
],
"mismatched_names": [
"<string>"
]
},
"data_match": {
"matched": true,
"mismatched_fields": [
"name"
],
"fields": {}
},
"mismatched_fields": [
"<string>"
],
"data_unmasked": {
"at": "2023-11-07T05:31:56Z",
"reason": "ownership_confirmed",
"actor": "<string>"
},
"data_masked": true,
"created_at": "2023-11-07T05:31:56Z",
"delivery": {
"kind": "SEND",
"status": "QUEUED",
"rail": "INTERNAL",
"attempts": 1,
"last_error": "email undeliverable",
"next_attempt_at": "2023-11-07T05:31:56Z",
"delivered_at": "2023-11-07T05:31:56Z"
},
"discovery": [
{
"step": "internal_address_book",
"outcome": "match",
"reason": "<string>",
"vasp": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rail": "<string>",
"at": "2023-11-07T05:31:56Z"
}
],
"reason": "<string>",
"next_actions": [
{
"action": "select_counterparty_vasp",
"url": "<string>"
}
],
"chain_details": {
"chain": "<string>",
"shape": "utxo",
"originator": {
"address": "<string>",
"memo": "<string>",
"source": "declared"
},
"beneficiary": {
"address": "<string>",
"memo": "<string>",
"source": "declared"
},
"utxo": {
"inputs": [
{
"address": "<string>",
"amount": "0.0125",
"txid": "<string>",
"vout": 1
}
],
"outputs": [
{
"address": "<string>",
"amount": "0.0125",
"txid": "<string>",
"vout": 1
}
],
"change_output_indexes": [
123
],
"beneficiary_output_index": 123
},
"lightning": {},
"warnings": [
"declared_originator_not_an_input"
],
"not_applicable_reason": "LIGHTNING_NO_PAYEE_IDENTIFIER"
}
}
}{}{
"detail": "<string>"
}授权
您的应用 API 密钥,可在 Business Console 的“开发者 -> API 密钥”中获取。主密钥拥有完整访问权限。指定名称的密钥可设置作用域:针对每个资源设为无权限、只读或读写,限定于特定工作流或已通过的会话、限定于 IP 地址列表,以及设置到期日期。401 表示密钥错误、已撤销或已过期;403 表示未发送密钥、密钥无权访问该资源或操作,或请求来自其 IP 列表之外的地址;在会话路由上返回 404 表示该会话不在该密钥允许的工作流或状态范围内。没有媒体访问权限的密钥获取到的图片、视频和 PDF URL 将为 null;没有会话写入权限的密钥获取到的会话链接和 token 将为 null。请参阅 https://docs.didit.me/console/api-keys。
请求体
目标钱包地址。Didit Test VASP 会向其发送资金,并根据资产所在链与您的钱包地址簿进行匹配。没有匹配条目的钱包也会被接受,入向交易将记为 ON_HOLD。
Didit Test VASP 声明的收款人身份。accept 声明持有人本人的姓名;name_mismatch 声明任何持有人均不认可的姓名。决策本身始终由您做出。
accept, name_mismatch 资产所在的区块链网络。
以十进制字符串表示的金额。
资产代码。
可选的幂等性密钥。使用相同值重试将返回首次调用所创建的转账。
响应
入账转账已记录并作出决策。使用相同的 reference 重复请求将返回相同的响应体。
入账转账的 Didit 交易 UUID。
Didit 生成的 txn_id。
运行的场景。
您的应用自身决策解析出的状态。
转账最终判定为该状态的原因。
始终为 true:发送方为 Didit Test VASP。
所有权确认以及完成/取消 endpoint 返回的完整转账对象。当入站转账的钱包所有权未确认时,交易对手的 originator_data 和 beneficiary_data 会被掩码返回(保留每个单词的首字母;钱包、链以及 VASP 路由保持可读),且 data_masked 为 true。
Show child attributes
Show child attributes