NATSotp.ticket.consume消费已验证工单

下游服务(identity / profile)在落库前回源消费 verifyTicket,确保绑定目标与工单一致;消费一次性。

Request Payload

消息格式:JSON

NameData TypeRequiredDescription
verifyTicketIdstringYes已验证工单
expectedTargetstringYes下游要落库的目标(手机号 / 邮箱),不一致即拒绝
scenestringYes预期用途:register / bind / login
type RequestBody = {
  /** 已验证工单 */
  verifyTicketId: string
  /** 下游要落库的目标(手机号 / 邮箱),不一致即拒绝 */
  expectedTarget: string
  /** 预期用途:register / bind / login */
  scene: string
}
{
  "verifyTicketId": "otv_3d81fa09c2476b5e",
  "expectedTarget": "chen.lin@example.com",
  "scene": "register"
}

Response Payload

回复使用统一信封 {id, code, messages, result},其 result:

NameData TypeRequiredDescription
consumedbooleanYes是否消费成功
channelstringYes通道
targetstringYes已验证的目标
type ResponseBody = {
  /** 是否消费成功 */
  consumed: boolean
  /** 通道 */
  channel: string
  /** 已验证的目标 */
  target: string
}
{
  "consumed": true,
  "channel": "email",
  "target": "chen.lin@example.com"
}

Response Code

回复使用统一信封 {id, code, messages, result},其 code 字段:

code Meaning Notes
0 成功 消费已验证工单
2202 工单无效 已消费或目标 / 用途不匹配

Examples

{ "verifyTicketId": "otv_3d81fa09c2476b5e", "expectedTarget": "chen.lin@example.com", "scene": "register" }
{
  "id": "01JD8SVDH9S5U2VR",
  "code": 0,
  "messages": [],
  "result": { "consumed": true, "channel": "email", "target": "chen.lin@example.com" }
}

Remarks

消费与下游落库之间由调用方保证事务边界(先消费后落库,失败由调用方重试整个业务操作)。