logo 驰遥科技 文档中心
文档 /接口与集成 /授权 API
反馈纠错

授权 API

授权 API

供客户系统(协会/商城/外贸)验证授权使用。

一、验证授权

POST /api/license/verify
Content-Type: application/json

请求

{
  "license": "XH-2026-DEMO-0001",
  "domain": "demo.xiehui.com",
  "product": "xiehui",
  "version": "1.0.0"
}

成功响应

{
  "code": 0,
  "data": {
    "valid": true,
    "plan": "pro",
    "domain_matched": "demo.xiehui.com",
    "expire_at": "2027-11-06 00:00:00",
    "days_left": 365,
    "server_time": "2026-11-06 08:00:00",
    "token": "base64(json)",
    "signature": "base64(rsa签名)"
  }
}

错误码

| code | 含义 | |---|---| | 1001 | 授权码不存在 | | 1002 | 授权已过期 | | 1003 | 域名不匹配 | | 1004 | 授权已吊销 | | 1005 | 产品不匹配 |

二、防绕过机制

授权站返回的 token 是 JSON 的 base64,signature 是私钥签名。

客户系统必须:

  1. 用内置公钥验签 token
  2. 验签通过才信任
  3. 不要只信网络返回的 valid: true(可能被中间人伪造)
$ok = openssl_verify($token, base64_decode($signature), $publicKey, OPENSSL_ALGO_SHA256) === 1;

三、公钥获取

GET /api/keys
{
  "code": 0,
  "data": {
    "primary":   { "name": "key-2026", "public_key": "-----BEGIN PUBLIC KEY-----..." },
    "secondary": { "name": "key-2025", "public_key": "-----BEGIN PUBLIC KEY-----..." }
  }
}

客户系统内置主备两把公钥,验签时先主后备,换密钥不影响老客户。

四、离线授权

POST /api/license/offline

请求:

{
  "license": "XH-2026-DEMO-0001",
  "domain": "intranet.local",
  "fingerprint": "可选机器指纹"
}

响应:返回 base64 的 license.dat 文件内容,客户系统本地验签后离线可用。

五、版本查询

GET /api/version/latest?product=xiehui&current=1.0.0
{
  "code": 0,
  "data": {
    "latest": "1.6.0",
    "has_update": true,
    "changelog": "· 仪表盘改版\n· ...",
    "download_url": "https://.../api/version/download/12",
    "package_hash": "sha256...",
    "package_sign": "base64签名"
  }
}

六、下载更新包

GET /api/version/download/{id}?license=xxx&domain=xxx

需授权验证通过才返回文件。

七、调用示例(PHP)

$resp = Http::timeout(10)->post('https://cy.yunfenxiang.net/api/license/verify', [
    'license' => config('license.code'),
    'domain'  => request()->getHost(),
    'product' => 'xiehui',
]);

$data = $resp->json('data');

// 验签
$pub = config('license.public_key');
$ok = openssl_verify($data['token'], base64_decode($data['signature']), $pub, OPENSSL_ALGO_SHA256);

if ($ok === 1 && $data['valid']) {
    // 授权有效
}

下一篇:客户系统集成