授权服务 · 接口文档

登录管「你是谁」,授权管「你能用到哪天」——两件事分开,客户端每次启动都问一次授权,所以你这边改天数立即生效。

进入管理后台

通用约定

项目说明
地址POST /api.php?a=登录,或 POST /api/Login.php(两种都行)
格式请求:JSON 或表单;响应:{"code":"200","msg":"...","data":{...}}
code200 成功 / 400 参数错 / 401 未授权 / 403 设备不匹配 / 409 冲突 / 429 限流
登录态登录返回 token,后续带 token 参数或 Token 请求头

1. 注册 a=register

POST /api.php?a=register
{"username":"test01","password":"123456","machine":"ABC-123"}

2. 登录 + 授权校验 a=login

POST /api.php?a=login
{"username":"test01","password":"123456","machine":"ABC-123"}

→ {"code":"200","msg":"登录成功",
   "token":"9f2c...",
   "state":"active",              // active 有效 / expired 已到期
   "account":{"username":"test01","days_left":29,"expire_str":"2026-12-02 10:00:00","zones":[...]}}

机器码绑定:首次登录自动绑定,之后换机器返回 403 设备不匹配,后台可一键解绑。

3. 授权查询 / 心跳 a=query

POST /api.php?a=query
{"token":"9f2c...","machine":"ABC-123"}

→ {"code":"200","msg":"授权有效","active":true,"account":{...}}

4. 卡密兑换 / 续费 a=card

POST /api.php?a=card
{"token":"9f2c...","code":"ABCD-EFGH-IJKL-MNOP"}

→ {"code":"200","msg":"兑换成功,已续 30 天","days":30,"days_left":59,"expire_at":1795...}

5. 客户端配置 a=config

GET /api/GetConfig.php
→ {"code":"200","msg":"获取成功","data":{"site_name":"...","notice":"...","version":"4.2.2","register":true}}

6. 其它

接口说明
a=logout注销 token
a=passwd改密码:{token, old, password}

客户端接入示例(C#)

using var http = new HttpClient();
var body = new StringContent(
    JsonSerializer.Serialize(new { username = "test01", password = "123456", machine = MachineCode() }),
    Encoding.UTF8, "application/json");
var res  = await http.PostAsync("http://你的域名/api/Login.php", body);
var json = JsonDocument.Parse(await res.Content.ReadAsStringAsync()).RootElement;

if (json.GetProperty("code").GetString() == "200")
{
    var token  = json.GetProperty("token").GetString();
    var days   = json.GetProperty("account").GetProperty("days_left").GetInt32();
    var active = json.GetProperty("state").GetString() == "active";
    // active == false → 提示"授权到期,请续费",不放行主功能
}

易语言接入:用「网页_访问S」POST 这段 JSON,取回 code 与 days_left 做判断即可。