设备验证模块

设备激活、凭证获取、设备信息/额度查询、服务器时间与公开统计

模块类型:system | 基础路径:/api/v2(无模块名前缀)| 鉴权:none / 设备 APIKey

跳转支付

项目内容
APIGET /api/v2/verify/:appname
鉴权none
说明生成设备 remark 并 302 跳转到爱发电收银台(自动填写备注)

参数:

参数位置必填说明
appnamepath是应用名(^[a-zA-Z][a-zA-Z0-9_]{0,63}$)
dataquery是需 URL 编码,格式 设备名.设备ID.唯一ID.时间戳,4 段以 . 分隔;各段 ≤255 字符、无控制字符,设备ID/唯一ID 非空
planOrderquery否如果应用有多档,可以使用此参数指定档位,默认为0的整数(JSON索引)
numquery否购买的份数(多用于计费类应用),正整数,默认 1

data 的第 4 段时间戳在此接口可传任意值,服务端不做校验

返回: 302 Redirect 到爱发电收银台(Location: <afdianUrl>&remark=...),无 JSON body。

错误: 400 data 缺失/格式错误;404 应用不存在;500 应用未配置支付链接或私钥。


验证鉴权

项目内容
APIGET /api/v2/verifyCheck/:appname
鉴权none
说明获取签名后的设备 APIKey

参数:

参数位置必填说明
appnamepath是应用名
dataquery是同发起支付,4 段;时间戳 为客户端当前 Unix 秒,与服务器差须 ≤300 秒
typequery否传 free 表示申请免费激活(仅 free-* 计费模式应用支持)

申请免费版必须携带 type=free;时间戳超出 ±300 秒会返回 401「请求已过期」。

成功 200:

{
  "status": 200,
  "result": {
    "APIKey": "<64 位设备密钥>",
    "signature": "<对 APIKey 的 RSA-SHA256 签名(base64)>"
  }
}
  • signature 用应用私钥签名,客户端可用内置应用公钥离线校验授权
  • 每次调用都会轮换该设备的 APIKey,客户端应以最新返回为准。

错误:

  • 400 data 缺失 / 格式错误;
  • 401 请求已过期 / 设备未验证(未支付且非免费激活)/ 设备被封禁或已过期;
  • 409 设备唯一标识冲突(重复数据);
  • 404 应用不存在。

设备信息

项目内容
APIPOST /api/v2/getInfo/:appname
鉴权设备 APIKey(noQuota,不扣费)
说明设备自查状态、计费模式与剩余额度

参数:

参数位置必填说明
appnamepath是应用名
Keybody是设备 API Key(或 ?key=)
UTCoffsetbody否订阅制用于到期时间本地化,小时数(-24~24)

公共字段:

{
  "id": "1",
  "deviceID": "ABC123",
  "DeviceName": "设备1",
  "onlyID": "unique-id",
  "regdate": "2025-01-01 00:00:00",
  "userType": "normal",
  "billingMode": "normal",
  "userUrl": "..."
}

按计费模式追加字段:

billingMode追加字段
subscribe(订阅制)expiredAt:到期时间 "YYYY-MM-DD HH:MM:SS"(受 UTCoffset 影响);订阅期内不限量
usage / free-usage(按量制)remainingAmount:剩余余额(字符串)
normal / free-limit(买断/次数制)ALLRequests、UseRequests、FreeRequests:总额 / 已用 / 剩余(字符串)
free-share(免费共享池)免费用户取共享计数器的 ALLRequests/UseRequests/FreeRequests;付费用户取本设备

错误: 401 缺少鉴权 / Key 无效 / 设备被封禁或过期;404 设备或应用不存在。


获取服务器时间

项目内容
APIPOST /api/v2/getTime
鉴权none
说明获取服务器当前时间(可用于校准 data 时间戳)

无参数

返回:

{
  "status": 200,
  "result": {
    "timestamp": 1717728000,
    "time": "2025-06-07T00:00:00.000Z"
  }
}

公开统计

面向终端用户的公开设备统计,无需鉴权。

全部应用设备数

项目内容
APIGET /api/v2/apps/stats
鉴权none

返回:

{
  "status": 200,
  "result": {
    "total": "3",
    "applist": [
      { "appname": "Eternal", "total": "1024" },
      { "appname": "WearPost", "total": "256" }
    ]
  }
}

单应用设备统计

项目内容
APIGET /api/v2/apps/:appname/stats
鉴权none

返回:

{
  "status": 200,
  "result": {
    "appname": "Eternal",
    "total": "1024",
    "banned": "3",
    "free": "120",
    "device": [ { "name": "MiBand", "total": "300" } ]
  }
}

统计数值均为字符串。错误:400 应用名非法;404 应用不存在。

大纲