授权验证 API 接口文档(开发者)

更新于 2026-09-25 20:34

授权验证 API

软件客户端通过以下接口完成激活与验证。所有接口均为 POST,请求体为 application/json。

激活设备

POST /api/v1/activate
{
  "license_key": "XXXX-XXXX-XXXX-XXXX",
  "machine_code": "设备机器码",
  "product_slug": "panassistant",
  "device_name": "可选,设备名称"
}

成功返回:

{
  "code": 0,
  "msg": "ok",
  "data": {
    "status": 1,
    "product": "panassistant",
    "trial": false,
    "license_key": "XXXX-XXXX-XXXX-XXXX",
    "expires_at": 1767196000,
    "max_devices": 1,
    "server_time": 1735689600,
    "sig": "hmac-sha256 签名"
  }
}

校验授权

POST /api/v1/verify
{ 同激活接口参数 }

解绑设备

POST /api/v1/deactivate
{ "license_key": "...", "machine_code": "..." }

响应签名验证

sig = hash_hmac('sha256', license_key|machine_code|product|status|expires_at|server_time, license_secret)

客户端可用签名确认响应来自本服务器,防止伪造。license_secret 可在管理后台"系统设置"中查看。

软件套装授权

若授权码来自套装(打包出售的商品),product_slug 可传套装内任意一款软件的 slug,服务器会自动匹配:

  • 响应中 bundle = true,covered 数组列出套装包含的全部软件 slug
  • product 字段返回客户端请求的软件 slug,sig 同样基于该值计算
  • 传套装外软件的 slug 会返回"该授权码不适用于此软件"

试用授权

用户在软件详情页可自助领取一次试用授权(软件是否开放试用、试用天数由后台"产品管理"设置)。试用授权与正式授权走同一套接口,仅多两个标识字段:

  • 响应 data.trial = true 表示这是试用授权
  • 同时给出 data.buy_url(该软件的购买页)与 data.remaining_days(剩余天数)

试用到期后,verify 与 activate 都会失败,返回码 code = 6,响应额外带 trial / trial_ended / buy_url,例如:

{
  "code": 6,
  "msg": "试用期已结束(2026-09-24 到期),购买正式授权后可继续使用",
  "data": { "valid": false, "trial": true, "expires_at": 1758643200 },
  "trial": true,
  "trial_ended": true,
  "buy_url": "https://你的域名/products/panassistant"
}

建议客户端据此提示"试用已结束,请购买正式授权"并打开 buy_url。注意区分:正式授权到期时 verify 返回 code = 6 且 msg 为"授权已过期",activate 返回 code = 1,且不带 trial 字段。

其他与该授权相关的返回码:code = 4 已被禁用、code = 5 已被吊销、code = 3 设备未激活、code = 2 绑定设备数已达上限。