魔签系统 Mochain

主题授权签发 · 域名绑定 · 到期管理 · 版本分发,一套接口跑通商业闭环。

运行环境自检

项目状态
PHP 版本8.2.33
ZipArchive 扩展已启用
主题包目录可写/www/wwwroot/mochain/uploads/

签名算法

授权校验与版本检测两个接口都要带 HMAC-SHA256 签名;下载接口用一次性令牌,不签名。

  1. 取参与签名的参数(不含 sign
  2. 按参数名 ksort 排序
  3. http_build_query 拼接
  4. sign = hash_hmac('sha256', 拼接串, api_key)
  5. timestamp 与服务器时间差不得超过 ±300 秒
$params = [
    'license_code' => 'AB12-CD34-EF56-GH78',
    'domain'       => 'client-site.com',
    'theme'        => 'MyTheme',
    'timestamp'    => time(),
];
ksort($params);
$params['sign'] = hash_hmac('sha256', http_build_query($params), $api_key);
$url = 'https://sq.zixk.cn/api/license.php?' . http_build_query($params);

接口列表

GET/POST授权校验

https://sq.zixk.cn/api/license.php

参数说明
license_code授权码
domain客户站点域名(HTTP_HOST)
theme主题标识(与后台一致)
timestampUnix 时间戳
sign签名

域名规则:主域(不带 www)本身、www.主域 与自动登记的最多 3 个子域都在授权范围内。

GET/POST版本检测

https://sq.zixk.cn/api/version.php,在授权校验参数基础上多传 current_version(同样参与签名)。

返回 has_update / min_version / force_update / changelog,有新版本或触发强制升级时下发 download_token

GET主题包下载

https://sq.zixk.cn/api/download.php?token={download_token},返回 zip 流,令牌一次性有效,响应头带 X-Download-Sha256

错误码

code含义
200成功
400参数不完整 / 缺少签名 / 令牌格式错误
401时间戳过期 / 授权已过期 / 令牌已使用或过期
403签名失败 / 授权已禁用 / 域名不匹配 / 域名被封禁
404授权码不存在 / 无已发布版本 / 主题包不存在
429触发 IP 限流
500服务端异常
503服务器维护中

主题包打包规范

zip 根必须是一层「主题名」目录,主题文件收拢在该目录内,目录内需直接包含 functions.php

MyTheme-1.2.0.zip
└── MyTheme/
    ├── index.php
    ├── functions.php
    └── ...

文件散在 zip 根、套多层目录、含 ../.auth/.htaccess 条目的包会被服务端拒绝。

魔签系统 Mochain · 接口密钥请在后台「授权设置」查看,切勿泄露。