Skip to content

统一心跳验证 POST

只传 statecode,服务端自动识别是单码卡密心跳用户账号心跳还是QQ登录心跳并做对应处理。适合 SDK 侧不想为不同登录方式维护多个心跳接口的场景。

请求方法: POST  Content-Type: application/x-www-form-urlencoded

💡 SDK 快速接入

官方 SDK 已支持此接口,您可以直接使用 SDK 一键调用,无需手动处理加密和签名。

对接示例也已支持此接口

SDK 调用示例

python
# 拿到登录时返回的 statecode 后, 定期心跳
result = verify.heartbeat_any(statecode)
if result['success']:
    print("心跳成功")
javascript
const result = await verify.heartbeatAny(statecode);
if (result.success) console.log('心跳成功');
java
T3Verify.T3Result result = verify.heartbeatAny(statecode);
if (result.success) System.out.println("心跳成功");
csharp
var result = verify.HeartbeatAny(statecode);
if (result.Success) Console.WriteLine("心跳成功");
php
$result = $verify->heartbeatAny($statecode);
if ($result['success']) echo "心跳成功\n";

识别逻辑

  1. 先反查 t3data_heart(单码心跳表),命中即视为单码卡密心跳,更新对应卡密的 line_time
  2. 否则反查 t3data_hearts(用户/QQ 心跳表),命中即更新对应账号的 line_time
  3. 都没命中返回"登录状态不存在"。

请求参数

参数类型必填说明
statecodestring必填登录状态码(32 位,登录接口下发)
tnumber条件必填秒级 Unix 时间戳
sstring条件必填请求签名
safe_codestring可选数据验证码

成功响应

jsonc
{
  "code": "200",
  "msg": "心跳验证成功"
}
txt
心跳验证成功

错误列表

业务错误

错误消息原因
状态码不可为空未传 statecode
状态码不存在statecode 长度不是 32 位
登录状态不存在服务器找不到匹配的 statecode(单码 + 用户/QQ 两张表都没有)
登录状态失效已被其它设备顶号

通用错误

错误消息原因
程序未开启 / 接口未开启程序或接口未启用
时间戳参数不可为空开启时间戳验证但未传 t
验证数据已失效,请重试时间戳校验失败
签名参数不可为空开启签名验证但未传 s
签名有误签名校验失败

顶号处理

接收到 登录状态失效 时应引导用户根据登录方式重新登录(单码登录 / 用户登录 / 用户QQ登录),并使用新拿到的 statecode 继续心跳。

兼容性建议

新 SDK 建议直接用本接口。老的 3 个心跳接口(单码心跳 / 用户心跳 / QQ凭证心跳)仍然可用,只是 SDK 侧要多分几个方法。

T3 网络验证 WebAPI 开发文档