超神科技授权系统 · 对接文档返回官网客户登录

授权系统 API 对接文档

本文面向需要接入「超神授权系统」的软件程序。接入方只需实现授权校验、可选在线更新和安全上报,不需要访问授权服务器后台。

概览

项目值
生产环境地址https://hncs.top
数据格式JSON,UTF-8
校验方式授权码 + 域名 + 安装指纹
返回格式{"code":0,"msg":"ok","data":{}}
成功code = 0
业务失败code = 1,具体看 status / msg
所有接口都应使用 HTTPS。授权接口不需要登录客户中心,客户端使用 license.key 即可。

接入流程

  1. 客户购买授权后,下载安装包;服务端会把 license.key 放入安装包的 app/config/license.key。
  2. 程序启动时读取 license.key,取出授权码、授权服务器地址、产品编码和公钥。
  3. 首次调用 /api/verify,服务端绑定域名与安装指纹,并从绑定时间开始计算到期。
  4. 后续启动时继续校验;校验通过后用服务端返回的 token 与本地公钥验签。
  5. 需要在线更新时调用 /api/update/check,下载前校验 SHA256。

license.key

文件为纯文本 KEY=VALUE 格式:

LICENSE_KEY=YE3KBVNNA2YRYWSAFHDGAGTT
LICENSE_SERVER=https://hncs.top
PRODUCT=hhcx
LICENSE_PUBLIC_KEY_BASE64=LS0tLS1CRUdJTiBQVUJMSUMgS0VZLS0tLS0...
字段说明
LICENSE_KEY授权码,服务端会去横线并转大写
LICENSE_SERVER授权服务器根地址,必须是 HTTPS
PRODUCT产品编码,必须与授权产品一致
LICENSE_PUBLIC_KEY_BASE64RSA 公钥,base64 编码,用于验签

授权校验

POST /api/verify

https://hncs.top/api/verify

请求

{
  "license_key": "YE3KBVNNA2YRYWSAFHDGAGTT",
  "domain": "app.example.com",
  "fingerprint": "cb2501937038d27b",
  "version": "1.0.0"
}
字段必填说明
license_key是授权码;旧域名模式可为空
domain是当前站点域名,不带协议
fingerprint是稳定的安装指纹,建议 16 位以上
version否当前程序版本

成功响应

{
  "code": 0,
  "msg": "ok",
  "data": {
    "status": "active",
    "expire_at": "2026-11-21 13:31:34",
    "days_left": 30,
    "grace_days": 7,
    "issued_at": 1792562000,
    "token": "RSA-SHA256 签名..."
  }
}

常见失败

status说明
not_found授权不存在或域名未绑定
domain_mismatch授权码已绑定其他域名
fingerprint_mismatch安装指纹与首次绑定不一致
expired授权已过期
rate_limited请求过于频繁
首次校验成功后,域名和指纹会永久绑定;重装站点、重装系统或换服务器导致指纹变化时,需要客户提交“重置指纹”申请,不是授权丢失。

在线更新

POST /api/update/check

https://hncs.top/api/update/check
{
  "product": "hhcx",
  "channel": "stable",
  "current_version": "1.0.0",
  "license_key": "YE3KBVNNA2YRYWSAFHDGAGTT",
  "domain": "app.example.com",
  "fingerprint": "cb2501937038d27b"
}
{
  "code": 0,
  "msg": "ok",
  "data": {
    "product": "hhcx",
    "latest_version": "1.0.1",
    "has_update": true,
    "changelog": "更新说明",
    "package_url": "https://hncs.top/api/update/download?token=...",
    "sha256": "e8e1c921...",
    "size": 362,
    "is_force": false,
    "license_expire_at": "2026-11-21 13:31:34"
  }
}
下载后必须计算 SHA256 并与 sha256 比对;不一致时不得安装。更新包只覆盖程序代码,不会覆盖 license.key、config.php、storage/ 等文件。

安全上报

POST /api/security/beacon

https://hncs.top/api/security/beacon

用于上报本地授权检查失败、token 无效、检测到绕过等安全事件。请求使用 HMAC-SHA256 签名。

{
  "license_key": "YE3KBVNNA2YRYWSAFHDGAGTT",
  "domain": "app.example.com",
  "fingerprint": "cb2501937038d27b",
  "event": "license_check_missing",
  "detail": "license.key missing",
  "version": "1.0.0",
  "ts": 1792562000,
  "sign": "hmac-sha256-hex"
}

签名串:

license_key|domain|fingerprint|event|detail|ts

HMAC 密钥为去横线、转大写后的授权码;domain 使用规范化后的小写域名。签名正确且未重复时返回 recorded: true。

错误码

code说明
0成功
1业务错误,看 msg / status
403签名错误、无权限或页面令牌过期
404授权/资源不存在
429请求频率过高,按 Retry-After 重试
500服务器内部错误,记录日志并联系授权方

PHP 校验示例

$keyFile = __DIR__ . '/config/license.key';
$cfg = parse_ini_file($keyFile, false, INI_SCANNER_RAW);
$payload = [
    'license_key' => $cfg['LICENSE_KEY'],
    'domain' => $_SERVER['HTTP_HOST'],
    'fingerprint' => $fingerprint,
    'version' => '1.0.0',
];
$ch = curl_init(rtrim($cfg['LICENSE_SERVER'], '/') . '/api/verify');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload),
    CURLOPT_TIMEOUT => 10,
    CURLOPT_SSL_VERIFYPEER => true,
]);
$body = curl_exec($ch);
$http = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$res = json_decode($body, true);
if ($http !== 200 || !$res || $res['code'] !== 0) {
    // 授权失败:锁定后台或提示续费
}

注意事项