开始之前
- 使用 沙盒应用的 API 密钥。生产环境的应用永远不会连接到测试 VASP。
- 使用法定名称开启 Travel Rule:
- 可选地为 Webhook 目标订阅
travel_rule.status.updated。沙盒会投递该事件,并标记"environment": "sandbox"。
Didit Test VASP
GET /v1/sandbox/scenarios/ 会返回测试 VASP 的资料以及其 travel_rule 对象中的所有场景,因此你的测试可以读取触发值,而无需硬编码。
所有值均为测试数据。测试 VASP 不是任何 Travel Rule 网络的成员,沙盒中的任何结果都不表明真实的交易对手或网络可以被访问。
出站场景
沙盒应用中每一笔需要交换的出站travelRule 交易都会发送到测试 VASP。通过收款人地址(不区分大小写)或格式为 Didit Test VASP <suffix> 的收款人名称来选择结果;两者都设置时,以钱包为准。两者都未设置,或后缀不在下表中,转账将完成(accept)。
无需交换的转账永远不会到达测试 VASP:低于你的 threshold_amount 的转账、发往你用户自己已验证钱包的转账,以及你声明为自托管的交易对手钱包的转账。你或你的终端用户从目录中手动选择的交易对手 VASP,会按正式应用所采用的路由进行判断:若其条目具有路由(已验证的 TRP endpoint、你的应用所使用的网络,或合规联系人),转账将发送到测试 VASP;若没有路由,转账将以 COUNTERPARTY_VASP_NOT_FOUND 结束,与正式应用的行为一致。
rail 为 TEST_VASP,转账列表中将 Didit Test VASP 列为收款方 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")以及data_match,其中mismatched_fields: ["name"]。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开启时为你生成)或POST .../travel-rule/ownership/并附带{"confirmed": true}记录证明:该钱包会以收款人名称添加到你的地址簿中,名称比对结果决定转账。匹配则完成转账并将钱包标记为已验证;{"confirmed": false}则拒绝该转账。
测试 VASP 的入站转账
要测试接收端,请让测试 VASP 通过POST /v3/travel-rule/test-vasp/inbound/ 向您发送一笔转账。指定您应用自有地址簿中的一个钱包:该笔转账由与真实转账相同的入站流程决定,并依据您的地址簿、所有权模式和姓名规则进行判定。
成功时(
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。
对于等待中的转账,请使用
POST .../travel-rule/ownership/ 进行决定,方式与真实转账相同:{"confirmed": true} 会完成转账,{"confirmed": false} 会拒绝转账。
您通过 POST /v3/transactions/ 自行报告的存款并非测试 VASP 发出的:它会保持 AWAITING_COUNTERPARTY 状态,等待其发起方 VASP,其时间线会指向上述端点。它在 confirmation_timeout_hours 到期后才会触发 Webhook,到期前不会触发任何 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 的目录路由:在沙盒应用上,每条路由都会显示
unavailable,并带有reason: sandbox_application,每一行都为reachable: false。