跳到主要内容
机器翻译

本页面使用机器翻译。如有任何不一致之处,请参阅英文文档

地址检查

Crypto2B 允许客户端系统在对任意加密货币地址执行操作之前,检查该地址的风险等级(AML)。典型场景是在创建提现请求之前,检查用户在提现表单中输入的地址。

检查是异步执行的。客户端系统通过调用 /addressChecks/create API 注册一次检查,并通过以下两种方式之一获取结果:

  1. 处理来自 Crypto2B 的带有检查结果的回调(参见回调)。
  2. 使用相同的参数再次调用 /addressChecks/create API,直到收到结果。

地址检查流程

操作顺序

  1. 用户在客户端系统中输入地址,例如用于提现。
  2. 客户端系统向 Crypto2B 发送地址检查请求,指定币种、传输协议和地址。
  3. Crypto2B 验证请求参数、客户的限制条件以及是否有足够资金支付检查费用,注册该检查,并返回其标识符 checkId,状态为 Pending
  4. Crypto2B 执行地址检查并确定其风险等级。
  5. 检查完成后,Crypto2B 从客户余额中扣除检查费用,并将检查状态置为 Completed
  6. 如果客户端系统使用回调机制,Crypto2B 会发送带有检查结果的回调。
  7. 否则,客户端系统使用相同的参数重复该请求,并获取状态为 Completed 的结果。
  8. 客户端系统根据 amlRiskGrade 风险等级决定是否接受该地址。

请求

POST /api/v1/addressChecks/create

参数类型是否必填描述
currencyShortNamestring币种简称,例如 USDT
transportProtocolstring传输协议,例如 Tron
addressstring待检查的地址,不超过 200 个字符
{
"currencyShortName": "USDT",
"transportProtocol": "Tron",
"address": "TJYeasypBnB2x5hLTpYPQZ6YR9ZL3hLj6b"
}

响应

检查已注册或正在进行 — 202 Accepted

{
"data": {
"checkId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Pending",
"amlRiskGrade": null,
"description": null,
"fromCache": null
}
}

检查完成 — 200 OK

{
"data": {
"checkId": "550e8400-e29b-41d4-a716-446655440000",
"status": "Completed",
"amlRiskGrade": "Low",
"description": "Exchange wallet",
"fromCache": true
}
}
字段描述
checkId唯一的检查标识符
status检查状态:PendingCompleted
amlRiskGrade地址风险等级(参见字典)。仅当状态为 Completed 时才会填充
description基于检查结果的地址描述(如有)
fromCache如果返回的是之前获取的结果,则为 true(参见重复检查

错误

HTTP 代码错误代码描述
400请求参数校验错误,包括指定币种和协议下的地址格式无效
400INVALID_CURRENCY未找到该币种,或该币种在指定协议下不受支持
400INVALID_TRANSPORT_PROTOCOL未找到该传输协议
402INSUFFICIENT_BALANCE客户余额不足以支付检查费用
422OPERATION_RESTRICTED该客户不可使用地址检查功能
422TARIFF_NOT_FOUND未为该客户配置资费方案

检查状态

状态描述
Pending检查已注册,正在进行中
Completed检查成功完成,已获取风险等级,并已收取费用
Error检查因错误而失败,不收取费用
Unknown无法确定检查结果,例如指定币种不支持该检查,不收取费用
信息

ErrorUnknown 状态仅通过回调传递。如果在此类检查之后重复该请求,Crypto2B 会注册一次新的检查,并返回带有新 checkId202 Accepted

重复检查

成功检查的结果会保存 10 分钟。在此时间内,使用相同币种、协议和地址重复请求:

  • 若检查仍在进行中 — 返回带有相同 checkId202 Accepted;不会创建新的检查;
  • 若检查已完成 — 返回带有已保存结果的 200 OK,且 fromCache: true;不会再次收取费用。

超过 10 分钟后,该请求将注册一次新的检查,并收取相应费用。

提示

如果客户端系统不使用回调,建议每隔几秒重复一次请求,直到收到 200 OK。响应中 checkId 发生变化,意味着上一次检查以错误结束,并已注册了一次新的检查。

检查费用

每次成功完成检查,都会从客户余额中扣除一笔以美元计价的固定费用,其金额由客户的资费方案决定(参见计费)。

  • 检查以 Completed 状态完成时收取费用。
  • 费用从客户的稳定币余额(USDT 或 USDC)中按扣费时的汇率扣除。扣费的金额和币种会在回调中发送。
  • 如果两种稳定币余额均不足,请求将被拒绝,返回代码 402
  • 状态为 ErrorUnknown 的检查不收取费用。
  • 地址检查的扣费会显示在个人账户的操作列表中。

回调

如果为客户配置了回调 URL,当检查以任意最终状态完成时(CompletedErrorUnknown),Crypto2B 会发送回调。

{
"data": {
"type": "AddressCheck",
"checkId": "550e8400-e29b-41d4-a716-446655440000",
"address": "TJYeasypBnB2x5hLTpYPQZ6YR9ZL3hLj6b",
"status": "Completed",
"amlRiskGrade": "Low",
"description": "Exchange wallet",
"currency": "USDT",
"protocol": "Tron",
"feeAmount": 0.5,
"feeCurrencyShortName": "USDT",
"timestamp": "2024-01-15T10:30:00Z",
"errorCode": null,
"errorMessage": null
}
}
字段描述
type操作类型:AddressCheck
checkId检查标识符
address被检查的地址
status检查状态:CompletedErrorUnknown
amlRiskGrade地址风险等级。仅当状态为 Completed 时才会填充
description基于检查结果的地址描述(如有)
currency币种简称
protocol传输协议
feeAmountfeeCurrencyShortName 指定的币种收取的费用金额。如果未收取费用则为 null
feeCurrencyShortName收取费用所使用的币种
timestamp回调生成的日期和时间(ISO 8601)
errorCodeErrorUnknown 状态对应的错误代码
errorMessageErrorUnknown 状态对应的错误描述

回调错误代码

代码状态描述
INSUFFICIENT_BALANCEError扣费时客户余额不足以支付检查费用
ANTIFRAUD_ERRORError执行检查时发生错误
ANTIFRAUD_INVALID_RESULTUnknown检查已完成,但未能确定风险等级
CURRENCY_NOT_SUPPORTEDUnknown指定币种或协议不支持地址检查
INTERNAL_ERRORError内部处理错误
备注

对于地址检查回调,唯一性由 typecheckId 的组合确定,而不像其他操作那样由 typeid 确定。