账户中心 › Webhook
会员状态
会员建档成功、或商户级停用状态发生变化时发送。
事件类型
| 事件 | 什么时候发 |
|---|---|
member.created | 会员建档成功 |
member.suspended | 商户级停用状态变化(停用与恢复共用这一条) |
投递约定
- 我方向你配置的端点发
POST,application/json,超时 10 秒。 - 回任意 2xx 即视为收到。 非 2xx 或超时会按退避重投。
- 请求头四个:
content-type·z-signature·z-event-id·z-event-type。 - 按
z-event-id去重 —— 同一条事件可能到达多次。
事件体只带 ID 与状态
没有金额、没有资产代码、没有卡号的任何片段、没有风控原因。这不是省字节 ——
webhook 端点是你的服务,我方没有办法保证它的传输与存储;
而 GET /v1/<资源>/{id} 那条路径上有 API Key、scope、
代理会员三层校验。要详情就拿 data.id 回查,
别指望从事件体里读出金额来记账。
逐条
member.created
会员建档成功什么时候发
POST /v1/members 真的新建了一行会员(返回 201)那一刻。幂等命中(同一个 external_member_id 已存在,返回 200)不发 ——否则你每次重试注册都会收到一条「新会员」。⚠ status_version 恒为 0:会员行上没有状态机版本。这一条一个会员只发一次,没有第二条可以乱序。
事件体
{
"event_id": "evt_2f1c8a9b4d7e4c1fa0b3e5d6c7a8b901",
"event_type": "member.created",
"created_at": "2026-08-12T09:30:00Z",
"merchant_id": "acme",
"livemode": true,
"data": {
"object": "member",
"id": "4b7c1e02-9a3d-4f18-8c55-2d61ab0f9e77",
"external_member_id": "u_88123",
"status": "normal",
"status_version": 0
}
}member.suspended
商户级停用状态变化(停用与恢复共用这一条)什么时候发
POST /v1/members/{id}/suspend 真的改动了 merchant_status 之后。恢复也发这一条,带 status: normal —— 方向靠 status 区分。给恢复另造一条事件会让「这个人现在能不能用」需要看两条事件流才答得出。这一位只影响该会员在你这边的可用性,平台级封禁是另一套、你看不到。⚠ status_version 恒为 0,而这一条会来第二次(停用 → 恢复 → 再停用)。所以这里是全部事件里唯一真的要按 created_at 排序的地方 ——别写「version 相等就跳过」,那会让恢复那条被丢掉,你这边的人永远解不开。
事件体
{
"event_id": "evt_7c93a1d05e6b4a2f9d81c4e0f2a37b56",
"event_type": "member.suspended",
"created_at": "2026-08-12T10:02:11Z",
"merchant_id": "acme",
"livemode": true,
"data": {
"object": "member",
"id": "4b7c1e02-9a3d-4f18-8c55-2d61ab0f9e77",
"external_member_id": "u_88123",
"status": "suspended",
"status_version": 0
}
}验签
验签方式与所有事件一致,见 Webhook 概览; 可以用签名调试器逐字符比对签名串。