总裁授权系统 · 官方文档

外站接入官方文档

本文档供所有外部站点/程序接入本站,实现授权检测、程序更新、支付认证、支付列表、盗版入库、远程广告等功能。接口统一为 HTTP GET/POST,无签名(盗版入库除外),数据按约定格式加解密。

目录
  1. 检测授权(/check)
  2. 更新程序(/download)
  3. 支付认证(/pay/check?act=check)
  4. 支付列表(/pay/check?act=list)
  5. 盗版入库(/ajax/block)
  6. 接入远程广告(/ajax/notice)
  7. 数据加解密说明(AuthCode)
  8. 完整接入示例代码
  9. 常见错误码对照表

GET 检测授权

外站程序在运行时回调本接口,验证当前站点域名是否已授权,并可顺带检测是否有新版本。客户端需对响应做解密(密钥为应用的 auth_key)。

请求

// 拼接后直接访问即可
https://auth.axywl.com/check?url=你的域名&authcode=授权码&app_uid=应用ID或auth_key&ver=当前版本号(可选)

参数

参数必填说明
url是当前程序部署的域名(不带头部 http)
authcode是授权码(客户程序 authcode.php 中 $authcode)
app_uid是应用ID(数字ID或应用的 auth_key 均可)
ver否当前 Build 版本号,携带后返回版本更新信息

响应

返回 {"data":"base64字符串"}。对 data 先 base64 解码,再用应用 auth_key 做 AuthCode 解密,得到 JSON。响应分两种形态:

① 不带 ver(仅检测授权):

{
    "code": 1,              // 1=授权有效; -1=未授权
    "authcode": "授权码",     // 授权时返回
    "name": "应用名"          // 授权时返回
}

② 携带 ver(检测授权 + 版本更新):

{
    "code": 1,              // 1=有新版本; 0=已是最新; -1=未授权
    "msg": "提示信息",        // 更新/未授权提示
    "ver": "1.0.0",           // 最新版本显示名
    "version": 2,             // 最新 Build 号
    "uplog": "本次更新内容",   // 更新内容
    "uplogs": "更新日志",      // 更新日志
    "file": "下载链接",        // 更新包下载地址(有新版本时非空)
    "sql": ["sql语句..."]     // 可选的SQL更新
}
授权有效时 code=1;未授权 code=-1 且 msg 为未授权提示;若应用关闭验证(auth_enabled=0)则直接放行。本地环境 localhost/127.0.0.1 自动放行并返回可解析的 code=1,因此在本机以 localhost 部署外站测试时,生成的授权代码可直接通过,不会报「云端服务器链接失败」。

GET 更新程序

通过检测授权返回的 file 字段(下载链接)即可下载更新包。客户端直接访问该链接,即可获得更新 zip 包。

https://auth.axywl.com/download?down=加密串&rand=随机数

其中 down 为:对字符串 ver\turl\tauthcode\tapp_uid\texpiry(多版本链追加 \t目标build)用密钥 auths!! 做 AuthCode 加密后 base64。下载端会校验授权与有效期(10 分钟内有效)。

流程建议

  1. 携带 ver 调用 /check
  2. 若返回 file 非空,则提示用户更新,并跳转该下载链接
  3. 下载得到 update.zip,覆盖旧文件即可

GET 支付认证

外站支付接口发起收款前,调用本接口校验其接入的支付接口域名是否已在本站认证白名单内,防止被钓鱼/伪造支付接口造成资金损失。

https://auth.axywl.com/pay/check?act=check&domain=支付接口域名

参数

参数必填说明
act是固定 check
domain是待认证的支付接口域名

响应

{
    "code": 0,
    "msg": "检测通过",
    "data": { "passed": true }
}
code=0 通过;code=-1 表示该接口不安全或已被封禁。当后台未开启支付切换校验(switchpay=0)时直接放行。

GET 支付列表

获取本站当前启用的全部支付接口列表,供外站收款时选择可用通道。

https://auth.axywl.com/pay/check?act=list

响应

{
    "code": 0,
    "count": 2,
    "msg": "",
    "data": [
        { "id": 1, "name": "支付宝", "domain": "api.alipay.com", "qq": "10001" }
    ]
}

GET 盗版入库

当外站检测到某站点疑似盗版(未经授权运行),可回调本接口提交盗版信息入库,供站长在后台「盗版列表」处理。

https://auth.axywl.com/ajax/block?url=盗版域名&authcode=授权码&site=站点名&user=DB用户(可选)&pwd=DB密码(可选)&dbname=DB名(可选)&admin_user=后台用户(可选)&admin_pass=后台密码(可选)

参数

参数必填说明
url是疑似盗版站点域名
authcode是该站使用的授权码
site是站点名称
user / pwd / dbname否数据库连接信息(可选,便于站长取证)
admin_user / admin_pass否后台账号信息(可选)

对外入参 → 后台详情页字段对应关系

上报参数入库后,在后台「盗版列表」点击某行的「查看」,详情页即展示对应字段(数据库/后台密码均加密存储、取用透明解密,入库时间固定为北京时间):

上报入参入库字段详情页展示
urlurl执行链接
sitesite所属应用
userdb_user数据库账号
pwddb_pass(加密)数据库密码
dbnamedb_name数据库名
authcodeauthcode授权码
admin_useradmin_user后台账号
admin_passadmin_pass(加密)后台密码
—reported_at入库时间
若该域名已是正版授权,将返回「该域名是正版授权!」而不会入库。该功能受后台 addblock 开关控制。

GET 接入远程广告

可在您的站点/程序中直接调用本站的远程广告接口,实时拉取后台「远程广告」里发布的广告内容(标题、跳转链接、内容、发布时间),用于展示推广信息。

https://auth.axywl.com/ajax/notice

参数

本接口无需携带任何参数,直接 GET/POST 访问即可,返回全部启用的远程广告。返回字段说明:

字段说明
id广告 ID
title广告标题
domain广告跳转链接
content广告内容
date广告发布时间

响应

{
    "code": 1,
    "msg": "ok",
    "data": [
        {
            "id": "1",
            "title": "测试标题",
            "domain": "http://demo.example.com",
            "content": "测试内容",
            "date": "2026-08-10 12:00:00"
        }
    ]
}

PHP 写法示例

$data = json_decode(file_get_contents('https://auth.axywl.com/ajax/notice'), true);
foreach ($data['data'] as $ad) {
    echo $ad['title'];      // 标题
    echo $ad['domain'];     // 跳转链接
    echo $ad['content'];    // 内容
    echo $ad['date'];       // 发布时间
}
// 若 data 为空数组,说明后台暂未发布广告,可自行隐藏该模块
该接口始终返回 code=1,业务上以 data 是否为空数组判断有无广告。若您的程序需要「无广告时隐藏」的逻辑,可直接判断 count($data['data']) > 0。

数据加解密说明(AuthCode)

检测授权接口的响应体需要解密。解密流程:base64_decode(data) → 用应用 auth_key 做 AuthCode DECODE → 得到 JSON 字符串。AuthCode 为 discuz 风格对称加密,客户端需内置同名函数 xf_authcode:

function xf_authcode($string, $operation = 'DECODE', $key = '', $expiry = 0) {
    $ckey_length = 4;
    $key = md5($key);
    $keya = md5(substr($key, 0, 16));
    $keyb = md5(substr($key, 16, 16));
    $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length) : substr(md5(microtime()), -$ckey_length)) : '';
    $cryptkey = $keya . md5($keya . $keyc);
    $key_length = strlen($cryptkey);
    $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0) . substr(md5($string . $keyb), 0, 16) . $string;
    $string_length = strlen($string);
    $result = '';
    $box = range(0, 255);
    $rndkey = array();
    for ($i = 0; $i <= 255; $i++) { $rndkey[$i] = ord($cryptkey[$i % $key_length]); }
    for ($j = $i = 0; $i < 256; $i++) {
        $j = ($j + $box[$i] + $rndkey[$i]) % 256;
        $tmp = $box[$i]; $box[$i] = $box[$j]; $box[$j] = $tmp;
    }
    for ($a = $j = $i = 0; $i < $string_length; $i++) {
        $a = ($a + 1) % 256;
        $j = ($j + $box[$a]) % 256;
        $tmp = $box[$a]; $box[$a] = $box[$j]; $box[$j] = $tmp;
        $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
    }
    if ($operation == 'DECODE') {
        if (((int)substr($result, 0, 10) == 0 || (int)substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26) . $keyb), 0, 16)) {
            return substr($result, 26);
        }
        return '';
    }
    return $keyc . str_replace('=', '', base64_encode($result));
}

完整接入示例代码(PHP)

// 1. 检测授权
$domain   = 'https://auth.axywl.com';              // 授权站地址(含协议)
$app_uid  = '你的应用ID或auth_key';
$auth_key = '应用授权密钥';
$authcode = '客户授权码';

$resp = json_decode(file_get_contents($domain . "/check?url=" . $_SERVER['HTTP_HOST']
    . "&authcode=" . $authcode . "&app_uid=" . $app_uid . "&ver=" . $curBuild), true);

$auth = json_decode(xf_authcode(base64_decode($resp['data']), 'DECODE', $auth_key), true);
if ($auth['code'] == 1) {
    // 已授权,若有新版本则处理 $auth['file'] 更新
    if (!empty($auth['file'])) { // 提示并跳转更新 }
} else {
    // 未授权,提示 $auth['msg'],可调用盗版入库
    @file_get_contents($domain . "/ajax/block?url=" . $_SERVER['HTTP_HOST']
        . "&authcode=" . $authcode . "&site=" . $siteName);
}

// 2. 支付认证 + 支付列表
$check = json_decode(file_get_contents($domain . "/pay/check?act=check&domain=" . $payDomain), true);
$list  = json_decode(file_get_contents($domain . "/pay/check?act=list"), true);

// 3. 拉取远程广告
$ads = json_decode(file_get_contents($domain . "/ajax/notice"), true);
foreach ($ads['data'] as $ad) {
    echo $ad['title'] . ' -> ' . $ad['domain'];   // 展示广告标题与跳转链接
}

常见错误码对照表

以下为各接口返回的 code 字段与常见 msg 含义对照,供接入排查使用。

检测授权(/check)

code含义常见 msg
1授权有效返回 authcode / name(已授权)
1有新版本(携带 ver 且版本落后时)「发现可更新版本!」并返回下载 file 链接
0已是最新版本(携带 ver 时)「您使用的已是最新版本!当前版本:x.x.x (Build N)」
-1未授权 / 应用异常「当前域名未授权,请联系管理员获取授权!」
-1应用不存在「应用不存在!」(见下方注意)
-1应用已下架「应用已下架!」
检测授权 code 特殊说明:「已授权」与「有新版本」均返回 code=1,区分看是否携带 file 字段;code=0 表示版本已最新(仅携带 ver 时出现)。另外「应用不存在」时数据用 传入的 app_uid 作为加密密钥(此时查不到应用、取不到真实 auth_key),客户端用真实 auth_key 解密会得到空串——这属正常现象,语义上仍代表应用不存在。

支付认证(/pay/check?act=check)

code含义常见 msg
0检测通过「检测通过」
-1缺少参数「缺少 domain 参数」
-1接口不安全「检测到此接口不安全,请使用认证的支付接口,避免资金损失!」
-1接口已封禁「该接口已被封禁!」
-1未知操作「未知的 act 参数」

盗版入库(/ajax/block)

code含义常见 msg
0提交成功 / 已更新「提交成功」等
-4功能已关闭「该功能已关闭!」
-1参数不完整「检测提交信息不完整!」
-1正版授权「该域名是正版授权!」
-1数据未变化「已是最新数据!」
约定:统一返回结构为 {"code":0,"msg":"...","data":...},其中 code=0 表示成功,code=-1 表示失败。检测授权接口的 code 含义稍有不同(1=授权有效),请以上述各表为准。