Z Zise Developers

为会员独占绑定一份快捷 KYC

POST /v1/kyc/quick scope: kyc:write
代会员调用 · 必带 x-on-behalf-of 需 x-idempotency-key

代会员调用。已有匹配绑定则 200 复用、不扣费;否则从资料池认领一份并收取一次资料费,默认 10 USDT(平台扣会员,下游扣商户预付,商户成本按已配置费率执行)。同一会员最多 5 份。新分配必须传 email,该完整邮箱不得被任何普通 KYC、快捷资料池或历史档案使用过。邮箱忽略大小写和首尾空格;Gmail +别名 保留。复用已有绑定无需传新邮箱。

传 card_product_id 按该卡产品的国家/证件匹配;也可以只传country + identity_type。

L0 会员无需先通过本人 L1 即可绑定;已通过真实 L1 / L2 的会员也可以绑定。快捷资料只用于符合条件的卡产品,不会覆盖本人实名档案或改变原有实名等级,也不能替代个人速汇或 L2 认证要求。新分配与复用响应的 binding.identity_issue_country 均为绑定快捷资料的证件签发国家(两位国家代码;历史资料未填写时为空字符串),与查询已绑列表保持一致。显式绑定后,把返回的 binding.id 作为 quick_kyc_binding_id 同时传给GET /v1/cards/products/{id}/quote 与 POST /v1/cards/applications。两个请求都必须代同一会员调用;要求 L2 的卡产品不能通过快捷绑定绕过认证。开卡申请 POST /v1/cards/applications 在无真实 L1 时会自动走同一套复用/分配;新分配须传 quick_kyc_email。普通实名待审核时不会自动切换,要使用快捷资料应传 quick_kyc_binding_id 明确选择。

字段类型必填说明
x-idempotency-key string 必填
x-on-behalf-of string 必填

请求体

字段类型必填说明
email string 可选 新分配必填,未被任何 KYC 使用过的完整邮箱
card_product_id string 可选
country string 可选
identity_type string 可选

响应

200复用已有匹配绑定
{
  "reused": true,
  "remaining": 4,
  "binding": {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "identity_type": "passport",
    "identity_issue_country": "HK",
    "nationality": "HK",
    "address_country": "HK",
    "created_at": "2026-09-05T06:12:00.000Z"
  }
}
201新分配并已扣费
{
  "reused": false,
  "remaining": 4,
  "binding": {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "identity_type": "passport",
    "identity_issue_country": "HK",
    "nationality": "HK",
    "address_country": "HK",
    "created_at": "2026-09-05T06:12:00.000Z"
  }
}
400quick_kyc_disabled · quick_kyc_limit · quick_kyc_exhausted · quick_kyc_unpaid · invalid_request · member_context_required
404member_not_found
409idempotency_key_reused · idempotency_in_progress
请求
curl -X POST 'https://api.zinfra.vip/v1/kyc/quick' \
  -H 'x-auth-token: Bearer $TOKEN' \
  -H 'x-on-behalf-of: $MEMBER_ID' \
  -H 'x-idempotency-key: $IDEMPOTENCY_KEY' \
  -H 'content-type: application/json' \
  -d '{
    "card_product_id": "cpd_visa_virtual_usd",
    "email": "member+quick@example.com"
  }'
const res = await fetch("https://api.zinfra.vip/v1/kyc/quick", {
  method: "POST",
  headers: {
    "x-auth-token": "Bearer $TOKEN",
    "x-on-behalf-of": "$MEMBER_ID",
    "x-idempotency-key": "$IDEMPOTENCY_KEY",
    "content-type": "application/json",
  },
  body: JSON.stringify({
    "card_product_id": "cpd_visa_virtual_usd",
    "email": "member+quick@example.com"
  }),
});
// 金额按字符串读,别让它变成 number
const data = await res.json();
import requests

res = requests.post(
    "https://api.zinfra.vip/v1/kyc/quick",
    headers={
        "x-auth-token": "Bearer $TOKEN",
        "x-on-behalf-of": "$MEMBER_ID",
        "x-idempotency-key": "$IDEMPOTENCY_KEY",
        "content-type": "application/json",
    },
    json={
      "card_product_id": "cpd_visa_virtual_usd",
      "email": "member+quick@example.com"
    },
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()
req, _ := http.NewRequest("POST", "https://api.zinfra.vip/v1/kyc/quick",
    strings.NewReader(`{
  "card_product_id": "cpd_visa_virtual_usd",
  "email": "member+quick@example.com"
}`))
req.Header.Set("x-auth-token", "Bearer $TOKEN")
req.Header.Set("x-on-behalf-of", "$MEMBER_ID")
req.Header.Set("x-idempotency-key", "$IDEMPOTENCY_KEY")
req.Header.Set("content-type", "application/json")
res, err := http.DefaultClient.Do(req)
// 金额字段用 string 接,不要 float64
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://api.zinfra.vip/v1/kyc/quick"))
    .header("x-auth-token", "Bearer $TOKEN")
    .header("x-on-behalf-of", "$MEMBER_ID")
    .header("x-idempotency-key", "$IDEMPOTENCY_KEY")
    .header("content-type", "application/json")
    .method("POST", HttpRequest.BodyPublishers.ofString("""
{
  "card_product_id": "cpd_visa_virtual_usd",
  "email": "member+quick@example.com"
}
"""))
    .build();
// 金额字段用 String / BigDecimal,不要 double
$ch = curl_init('https://api.zinfra.vip/v1/kyc/quick');
curl_setopt_array($ch, [
  CURLOPT_CUSTOMREQUEST => 'POST',
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HTTPHEADER => [
    'x-auth-token: Bearer $TOKEN',
    'x-on-behalf-of: $MEMBER_ID',
    'x-idempotency-key: $IDEMPOTENCY_KEY',
    'content-type: application/json',
  ],
  CURLOPT_POSTFIELDS => <<<'JSON'
{
  "card_product_id": "cpd_visa_virtual_usd",
  "email": "member+quick@example.com"
}
JSON,
]);
$res = curl_exec($ch);
// 金额用 bcmath / 字符串,不要 floatval
200
{
  "reused": true,
  "remaining": 4,
  "binding": {
    "id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "identity_type": "passport",
    "identity_issue_country": "HK",
    "nationality": "HK",
    "address_country": "HK",
    "created_at": "2026-09-05T06:12:00.000Z"
  }
}