Z Zise Developers

提交个人线(POBO)开户申请

POST /v1/remit/vp/applications scope: remittances:write
代会员调用 · 必带 x-on-behalf-of x-idempotency-key

个人线要求会员名下有一个 active 的上游子账户;没有就在下单那一刻回 remit_vp_account_required。这条端点是开通它的入口

前置条件

  • 会员 L1 已通过
  • 会员 L2 已通过
  • 该会员没有已开通的个人线子账户
字段类型必填说明
x-on-behalf-of string 必填 代哪个会员申请。
x-idempotency-key string 必填 UUID v4。

请求体

无字段。会员完全由 x-on-behalf-of 决定。

响应

200已经在审 —— 返回同一张申请单,reused: true
{
  "id": "vpa_12",
  "status": "reviewing",
  "reused": true
}
201已提交
{
  "id": "vpa_12",
  "status": "reviewing"
}
400kyc_required 差 L1 或 L2(不区分是哪一级)· state_invalid 已经开通过,或我方的开户协议还没配好
403insufficient_scoperemittances:write
404member_not_found

深入说明

申请 ≠ 开户

这里只是提交申请。真正的开户由我方运营执行,会在上游创建一个不可撤销的实体(上游既没有删除也没有 update/resubmit 接口)——那一步不在你手里,也不会因为调了这条端点而自动发生。

前置:L1 + L2 都要通过

差任一级回 kyc_required不区分差哪一级 —— 用GET /v1/kyclevell2_status 判断)。

重复提交是安全的

已经在审时返回同一张申请单200 + reused: true),不会排第二次队。已经开通过则回 400 state_invalid

请求
curl -X POST 'https://api.zise.com/v1/remit/vp/applications' \
  -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 '{}'
const res = await fetch("https://api.zise.com/v1/remit/vp/applications", {
  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({}),
});
// 金额按字符串读,别让它变成 number
const data = await res.json();
import requests

res = requests.post(
    "https://api.zise.com/v1/remit/vp/applications",
    headers={
        "x-auth-token": "Bearer $TOKEN",
        "x-on-behalf-of": "$MEMBER_ID",
        "x-idempotency-key": "$IDEMPOTENCY_KEY",
        "content-type": "application/json",
    },
    json={},
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()
req, _ := http.NewRequest("POST", "https://api.zise.com/v1/remit/vp/applications",
    strings.NewReader(`{}`))
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.zise.com/v1/remit/vp/applications"))
    .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("""
{}
"""))
    .build();
// 金额字段用 String / BigDecimal,不要 double
$ch = curl_init('https://api.zise.com/v1/remit/vp/applications');
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'
{}
JSON,
]);
$res = curl_exec($ch);
// 金额用 bcmath / 字符串,不要 floatval
200
{
  "id": "vpa_12",
  "status": "reviewing",
  "reused": true
}