外站接入官方文档
本文档供所有外部站点/程序接入本站,实现授权检测、程序更新、支付认证、支付列表、盗版入库、远程广告等功能。接口统一为 HTTP GET/POST,无签名(盗版入库除外),数据按约定格式加解密。
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更新
}
GET 更新程序
通过检测授权返回的 file 字段(下载链接)即可下载更新包。客户端直接访问该链接,即可获得更新 zip 包。
https://auth.axywl.com/download?down=加密串&rand=随机数
其中 down 为:对字符串 ver\turl\tauthcode\tapp_uid\texpiry(多版本链追加 \t目标build)用密钥 auths!! 做 AuthCode 加密后 base64。下载端会校验授权与有效期(10 分钟内有效)。
流程建议
- 携带
ver调用/check - 若返回
file非空,则提示用户更新,并跳转该下载链接 - 下载得到
update.zip,覆盖旧文件即可
GET 支付认证
外站支付接口发起收款前,调用本接口校验其接入的支付接口域名是否已在本站认证白名单内,防止被钓鱼/伪造支付接口造成资金损失。
https://auth.axywl.com/pay/check?act=check&domain=支付接口域名
参数
| 参数 | 必填 | 说明 |
|---|---|---|
| act | 是 | 固定 check |
| domain | 是 | 待认证的支付接口域名 |
响应
{
"code": 0,
"msg": "检测通过",
"data": { "passed": true }
}
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 | 否 | 后台账号信息(可选) |
对外入参 → 后台详情页字段对应关系
上报参数入库后,在后台「盗版列表」点击某行的「查看」,详情页即展示对应字段(数据库/后台密码均加密存储、取用透明解密,入库时间固定为北京时间):
| 上报入参 | 入库字段 | 详情页展示 |
|---|---|---|
| url | url | 执行链接 |
| site | site | 所属应用 |
| user | db_user | 数据库账号 |
| pwd | db_pass(加密) | 数据库密码 |
| dbname | db_name | 数据库名 |
| authcode | authcode | 授权码 |
| admin_user | admin_user | 后台账号 |
| admin_pass | admin_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=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=授权有效),请以上述各表为准。