只需四步即可完成接入:
在授权详情中绑定程序部署的域名或服务器 IP,只有绑定的目标才能通过验证。
将对应语言的 SDK 引入你的项目,填入 app_id、app_secret 与授权码,即可在程序启动时完成校验;还可调用更新接口检查新版本。
app_id 与 app_secret,各自管理套餐、卡密、授权与版本。客户端只需使用对应应用的信息即可。<?php
require 'sdk/php/AuthClient.php';
// 参数:授权码, 应用密钥, 接口地址, 超时, 应用标识
$client = new AuthClient('你的授权码', '你的APP_SECRET', 'https://auth.chipzx.com/api/license.php', 10, 'app_xxxxxxxx');
$res = $client->verify([
'domain' => $_SERVER['HTTP_HOST'], // 或填写服务器 IP
'cache_ttl' => 300, // 5 分钟内复用结果
]);
if ($res['status'] !== 1) {
exit('授权校验失败:' . $res['msg']);
}
// 可选:检查在线更新
$up = $client->checkUpdate('1.0.0');
if (!empty($up['data']['has_update'])) {
// 提示用户升级……
}
// 校验通过,继续执行业务逻辑……
我们为常见语言提供了开箱即用的接入 SDK,均已内置签名、时间戳与缓存逻辑,直接引入即可使用。
sdk/ 目录随系统一起部署到服务器根目录,或自行打包分发。每个语言的 README.md 内含完整用法与编译说明。POST https://auth.chipzx.com/api/license.phpContent-Type: application/x-www-form-urlencoded
| 参数 | 必填 | 说明 |
|---|---|---|
app_id | 建议 | 应用标识,形如 app_xxxxxxxx。多应用模式下建议传入;留空时按授权归属自动反查 |
license_key | 是 | 授权码 |
domain | 见说明 | 当前访问域名,与 ip 至少填写其一 |
ip | 见说明 | 服务器公网 IP,与 domain 至少填写其一 |
timestamp | 是 | 当前 Unix 时间戳(秒),服务端容差 ±300 秒 |
nonce | 是 | 随机字符串,建议 16 位,防重放 |
sign | 是 | 请求签名,算法见下节。验证接口签名参与字段:app_id、domain、ip、license_key、nonce、timestamp(APP SECRET 不参与签名原串的参数部分,仅作为末尾密钥) |
{
"code": 1000,
"status": 1,
"msg": "授权有效",
"data": {
"license_key": "CZX-XXXX-XXXX-XXXX",
"app_id": 1,
"app_name": "示例应用",
"product_id": 1,
"bind_domain": "example.com",
"bind_ip": "1.2.3.4",
"status": 1,
"active_at": "2026-01-01 00:00:00",
"expire_at": "2026-12-31 23:59:59",
"remain": "剩余 364 天",
"is_forever": false,
"server_time": "2026-01-01 12:00:00",
"sign": "A1B2C3..." // 数据签名,防篡改
},
"server_time": "2026-01-01 12:00:00",
"timestamp": 1767225600
}
code 为 1000(首次验证返回 1001)时表示授权有效;其余值均为失败,详见「返回码」。签名用于防篡改,规则如下(与主流支付网关一致,便于各语言实现):
sign 外的所有请求参数;k1=v1&k2=v2&… 的字符串;&key=APP_SECRET(该应用的应用密钥);sign。// 示例:app_id=app_demo0001、license_key=L1、domain=demo.com、ip=1.2.3.4、
// timestamp=1700000000、nonce=n1
// 去空排序拼接后:
app_id=app_demo0001&domain=demo.com&ip=1.2.3.4&license_key=L1&nonce=n1×tamp=1700000000&key=你的APP_SECRET
// 取 MD5 转大写:
sign = MD5(上面的字符串).toUpperCase()
// ---------- PHP ----------
$params = ['app_id'=>$aid,'license_key'=>$lic,'domain'=>$dom,'ip'=>$ip,'timestamp'=>time(),'nonce'=>$n];
ksort($params);
$params = array_filter($params, fn($v) => $v !== '' && $v !== null);
$sign = strtoupper(md5(http_build_query($params).'&key='.$appSecret));
// ---------- Python ----------
params = {'app_id':aid,'license_key':lic,'domain':dom,'ip':ip,'timestamp':int(time.time()),'nonce':n}
params = {k: v for k, v in params.items() if v not in ('', None)}
raw = '&'.join('%s=%s' % (k, params[k]) for k in sorted(params))
sign = hashlib.md5((raw + '&key=' + app_secret).encode()).hexdigest().upper()
// ---------- C ----------
// 依次拼接 app_id、domain、ip、license_key、nonce、timestamp(空值省略),
// 末尾追加 "&key=APP_SECRET",调用 czx_md5_upper 转大写
| Code | 含义 | 处理建议 |
|---|---|---|
1000 |
授权有效 | 验证成功,可正常放行程序 |
1001 |
授权已激活 | 首次激活成功,有效期自此刻起算 |
2001 |
参数缺失/格式错误 | 请检查请求参数是否完整、类型正确 |
2002 |
签名校验失败 | 请核对 APP SECRET 与签名拼接顺序(含大小写) |
2003 |
请求过于频繁 | 达到频率限制,请降低调用频率或稍后重试 |
2004 |
应用不存在或已停用 | 请核对 app_id,或到后台启用该应用 |
3001 |
授权码不存在 | 授权码(卡密/订单号)有误或已被删除 |
3002 |
授权已封禁 | 请联系售后核查封禁原因 |
3003 |
授权已过期 | 请续费或更换新的授权 |
3004 |
授权未激活 | 授权尚未首次激活(一般不会直接返回) |
3005 |
授权不属于该应用 | 请使用该授权所属应用的 app_id 与密钥 |
3006 |
列入盗版黑名单 | 该授权/域名/IP 命中风控黑名单,请联系售后 |
4001 |
域名未绑定 | 请在用户控制台为该授权添加此域名 |
4002 |
IP 未绑定 | 请在用户控制台为该授权添加此 IP |
4003 |
域名数量超限 | 已达套餐允许的域名绑定上限 |
4004 |
修改次数超限 | 已达套餐允许的域名修改次数上限 |
5001 |
系统内部错误 | 服务端异常,请稍后重试或联系技术支持 |
请依次核对:① APP SECRET 是否与开发者设置中该应用的密钥完全一致(区分大小写);② 参数排序是否为 ASCII 升序;③ 是否剔除了空值参数;④ 末尾是否追加了 &key=APP_SECRET;⑤ MD5 结果是否转为大写。建议直接使用官方 SDK,避免手写签名出错。
说明请求携带的 app_id 有误,或该授权属于另一个应用。请到「开发者设置」复制该授权所属应用的 APP ID 与 APP SECRET 再发起请求;若未传 app_id,系统会按授权归属自动识别,一般不会出现该错误。
该授权、域名或 IP 命中了风控黑名单。常见原因:域名/IP 与绑定严重不符、签名反复校验失败(疑似篡改)、接口被高频滥用。可到用户中心查看,或提交工单由管理员核实后移出。
登录用户中心,在「我的授权」中为该授权添加程序实际部署/访问时的域名或服务器公网 IP。注意域名不要带 http:// 前缀与端口号。
可绑定数量与修改次数由你购买的套餐决定,超出后需升级套餐或另购授权。具体额度见 授权套餐 页。
授权自首次验证成功(激活)之日起算,而非购买之日。因此你可以提前囤卡,部署上线时再激活,不浪费时长。
有。为防止滥用,系统对单授权/IP 的调用频率做了限制(默认约每分钟 60 次)。正常业务通常应本地缓存验证结果(如缓存 6~24 小时)后再调用,SDK 已内置缓存逻辑。
建议:① 使用离线授权码进行本地 RSA 验签,避免关键逻辑暴露;② 对验证结果做完整性校验;③ 代码混淆/加壳;④ 不要把 APP SECRET 以明文硬编码在可被轻易读取的位置。系统内置盗版入库与盗版跟踪,会记录域名不符、IP 不符、签名篡改、暴力枚举、接口滥用等异常行为供管理员处置。详见各 SDK 的 README「防破解建议」。
管理员在后台「应用与授权 → 版本与更新」为应用发布版本记录后,客户端调用更新接口(SDK 中的 checkUpdate() / check_update() / czx_check_update())即可获得最新版本号、更新说明、下载地址与 SHA256。版本比较按段数值进行(1.2.0 < 1.10.0),并支持「强制更新」标记。
易支付异步回调存在极少数延迟或丢包可能。若超过 5 分钟仍未到账,可在「我的订单」中查看订单状态,或 提交工单 并附上订单号,我们会在核实后手动补单。