账户状态 API 是 TD 系统的一个关键功能,旨在确保获取用户身份信息的准确性和及时性。
通过账户状态 API,我们能够准确识别更加狡猾的欺诈者,这些欺诈者巧妙地运用正常身份和行为,以规避关键业务节点的检测,从而欺骗系统。仅凭单一的业务行为判断往往难以揭示欺诈者的真实意图。
此外,账户状态 API 的应用将提高我们对正常用户偶发异常行为的准确识别能力,从而在降低误报率的同时提升用户转化率。我们在一般业务节点对用户进行无感知的数据上报,并在关键业务节点做出决策。这种设计有助于减少对用户的干扰,提升用户体验。
通过账户状态 API ,我们能够确保 TD 系统始终获取到最新的用户身份信息,进而提升系统的安全性和可靠性。
API 方式
Base URL
- 中国节点:https://cn-event.apitd.net/account/v3
- 美国节点:https://us-event.apitd.net/account/v3
- 新加坡节点:https://sg-event.apitd.net/account/v3
- 欧洲节点:https://de-event.apitd.net/account/v3
API
URL | 请求方式 | Content-Type | 输出格式 | 字符集 |
---|---|---|---|---|
api-base-url?partner_code=xxx&partner_key=xxx | POST | application/json | JSON | UTF-8 |
示例:https://cn-event.apitd.net/account/v3?partner_code=test_code&partner_key=test_key
认证参数
字段 | 类型 | 含义 | 建议 | 备注 |
---|---|---|---|---|
partner_code | String | 合作方标识 | 必须 | 由 TD 分配 |
partner_key | String | 合作方密钥 | 必须 | 由 TD 分配 |
请求参数
一次完整的请求参数通常由两部分字段组成:
- 基础字段:这些字段包含了与请求本身相关的基本信息,旨在确保请求的合法性和安全性。
- 业务事件字段:这些字段与账户状态有关,例如注册、登录等业务事件。通过这些字段,我们能够传递与特定业务事件相关的数据,如账户手机信息、账户邮箱、个人资料等。
将基础字段和业务事件字段结合起来,构成了一次完整的请求参数。这样的设计使得我们能够有效地传递和处理与账户状态相关的业务事件数据,确保账户信息的准确性和安全性。
基础字段
字段 | 类型 | 含义 | 建议 | 备注 |
---|---|---|---|---|
channel | String | 渠道标识 | 必须 | 由 TD 分配 |
session_id | String | 会话 ID | 必须 | 会话 ID 是网站服务器为特定用户在访问期间分配的唯一标识,通常可以用 Cookie、表单字段或 URL 的形式存储 |
account_id | String | 账户 ID | 条件必须:当账户注册(创建)后必须 | 当账户不存在时可不传 |
event_time | String | 业务事件真实发生时间 | 必须 | 符合 ISO 8601 标准,格式 YYYY-MM-DDTHH:mm:ss.sssZ ,例如 2021-10-12T14:20:50.521+07:00 |
event_type | String | 业务事件类别 | 必须 | 枚举值: register:注册 login:登录 modify:个人信息变更 |
terminal | Terminal | 终端信息 | 必须 | |
ext | Ext | 扩展信息 | 建议 | 与 TD 约定好的扩展信息 |
业务事件字段
我们的 API 设计限制了每次请求只能涉及一个业务事件的数据。这意味着您无法同时发起多个不同的业务事件数据请求,例如注册和登录。
为了确保数据的准确性和系统的可靠性,我们建议您按照业务事件的独立性,分别发送业务事件请求。通过单独处理每个业务事件,我们能够更好地管理和跟踪数据的处理过程,避免混淆和冲突。
遵守这一规则将有助于提高系统的性能和可靠性,并确保每个业务事件都能得到正确处理。如果您需要同时处理多个不同的业务事件,我们建议您分别发送独立的请求,以确保数据的完整性和一致性。
请求示例
以注册事件为例
{
"channel": "test",
"session_id": "abc0123456789",
"account_id": "123456789",
"event_time": "2021-10-12T14:20:50.521+07:00",
"event_type": "register",
"terminal": {
"black_box": "aGPH1658920283672ropYaFxT7",
"ip": "210.20.10.33"
},
"ext": {
"ext_book_id": "LFOUHOFHOHFNOUH",
"ext_book_num": 10
},
"account": {
"account_id": "123456789",
"register_time": "2021-10-12T14:20:50.521+07:00",
"login_time": "2021-10-12T14:25:50.521+07:00",
"phone": {
"country_code": 86,
"phone_number": "18700001111"
},
"email": "[email protected]"
},
"profile": {
"person": {
"name": {
"first_name": "三",
"middle_name": "",
"last_name": "张",
"nickname": "HZhang"
},
"sex": "male",
"birthdate": "1998-01-01"
},
"address": {
"country": "CN",
"region": "浙江省",
"city": "杭州市",
"district": "余杭区",
"detail": "文一西路海创园 18 幢",
"zip_code": "310000"
},
"education": "master",
"profession": "XXX",
"annual_income": {
"currency": "CNY",
"amount_local": 680000,
"amount_usd": 100000,
"amount_cny": 680000
}
},
"invite": {
"inviter_id": "567890",
"inviter_phone": {
"country_code": 86,
"phone_number": "18700001112"
},
"invite_code": "NOHHD",
"invite_medium": "WeChat"
}
}
响应参数
字段 | 类型 | 含义 | 建议 | 备注 |
---|---|---|---|---|
code | Integer | API 状态码 | 必须 | |
message | String | 状态信息 | 必须 | 在 API 异常状态下会输出具体的异常原因 |
sequence_id | String | 响应唯一码 | 必须 | 用于跟踪每次请求记录的唯一标识 |
API 状态码
code | 含义 |
---|---|
200 | 成功 |
9001 | {字段名}为空 |
9002 | {字段名}参数校验错误 |
9003 | {字段名}参数长度或者大小超过1024 |
9004 | black_box或ip至少存在一个 |
9200 | 系统异常 |
9201 | 未知异常 |
9202 | content-type不合法 |
响应示例
{
"code": 200,
"message": "",
"sequence_id": "1648777165770866F82AC7F326307055"
}