换绑账号邮箱 —— 换一张托管屏链接
商户自身
需
x-idempotency-key
把 hosted_url 交给终端用户。他在我方页面上填新地址,我方向新旧两个地址各发一个验证码,两个都填对才换。
── 为什么不是一个 PATCH 字段 ──邮箱是这个会员在我方唯一的强认证因子 —— 他没有我方的密码(建号时写的是随机占位串)、没有通行密钥、没有受信设备。
一个能直接改邮箱的写口,意味着你可以把任意会员的因子改指到你自己的信箱,之后随时替他过强认证:拿走卡密、新增提现地址。那是一条完整的账号接管路径,所以这件事只能由终端用户在我方域内完成。
两道码各自证明一件事:
- 新地址那道 —— 他确实拥有这个新邮箱(防止绑到打错字的地址上,之后永久失联);
- 当前地址那道 —— 他确实是这个账号的主人。
⚠ 换绑成功会吊销该会员在我方的全部会话、受信设备与通行密钥。对你没有直接影响(你的会员本来就不用我方的会话),但如果你在自己那侧缓存过他的邮箱,记得刷新。
⚠ 新地址已被平台上其他人占用时,用户会在那一页上看到提示 ——这个端点本身不做占用检查(在签票这一步做等于给你一个邮箱探测器)。
链接一次性、绑会员、24 小时。
路径参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
id |
string | 必填 | 会员标识。二选一:我方发的 mem_<uuid>,或你自己的
external_member_id。没有回落 —— 以 mem_ 开头的外部号会被
当成我方 id 解析。 |
请求头
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
x-idempotency-key |
string | 必填 |
响应
201票据已签发
{
"id": "kyc_2e7f90b1c4a34d58ae3b6f2019c7d845",
"hosted_url": "https://api.zise.com/hosted/email/kyc_2e7f90b1c4a34d58ae3b6f2019c7d845",
"expires_at": 1786000000
}400
member_not_found 会员不存在或不属于你 · idempotency_key_required请求
curl -X POST 'https://api.zise.com/v1/members/{id}/email-sessions' \
-H 'x-auth-token: Bearer $TOKEN' \
-H 'x-idempotency-key: $IDEMPOTENCY_KEY'const res = await fetch("https://api.zise.com/v1/members/{id}/email-sessions", {
method: "POST",
headers: {
"x-auth-token": "Bearer $TOKEN",
"x-idempotency-key": "$IDEMPOTENCY_KEY",
},
});
// 金额按字符串读,别让它变成 number
const data = await res.json();import requests
res = requests.post(
"https://api.zise.com/v1/members/{id}/email-sessions",
headers={
"x-auth-token": "Bearer $TOKEN",
"x-idempotency-key": "$IDEMPOTENCY_KEY",
},
)
# 金额用 Decimal(str(...)),不要 float
data = res.json()req, _ := http.NewRequest("POST", "https://api.zise.com/v1/members/{id}/email-sessions",
nil)
req.Header.Set("x-auth-token", "Bearer $TOKEN")
req.Header.Set("x-idempotency-key", "$IDEMPOTENCY_KEY")
res, err := http.DefaultClient.Do(req)
// 金额字段用 string 接,不要 float64HttpRequest req = HttpRequest.newBuilder()
.uri(URI.create("https://api.zise.com/v1/members/{id}/email-sessions"))
.header("x-auth-token", "Bearer $TOKEN")
.header("x-idempotency-key", "$IDEMPOTENCY_KEY")
.method("POST", HttpRequest.BodyPublishers.noBody())
.build();
// 金额字段用 String / BigDecimal,不要 double$ch = curl_init('https://api.zise.com/v1/members/{id}/email-sessions');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'x-auth-token: Bearer $TOKEN',
'x-idempotency-key: $IDEMPOTENCY_KEY',
],
]);
$res = curl_exec($ch);
// 金额用 bcmath / 字符串,不要 floatval
201
{
"id": "kyc_2e7f90b1c4a34d58ae3b6f2019c7d845",
"hosted_url": "https://api.zise.com/hosted/email/kyc_2e7f90b1c4a34d58ae3b6f2019c7d845",
"expires_at": 1786000000
}