概述

欢迎使用 猎鹰API 对接接口。本文档面向第三方开发者,提供完整的接口说明、参数定义和示例代码,帮助您快速完成系统集成。

对接流程 1. 联系管理员获取 app_keyapp_secret
2. 按本文档实现 HMAC-SHA256 签名
3. 调用接口完成对接

系统支持同步异步两种下单模式,可根据业务场景灵活选择。

基础地址

https://lieyingtg.com/openapi/v1

所有接口路径均基于此基础地址。请求方式统一为 POST,参数通过 JSON Body 传递。

鉴权签名

每个请求必须携带以下 4 个 HTTP Header:

Header类型说明
X-Api-Keystring分配的公钥(app_key)
X-Api-SignstringHMAC-SHA256 签名值
X-Api-TimestampstringUnix 时间戳(秒),有效期 ±60 秒
X-Api-Noncestring16 位字母数字随机串,防重放(120 秒内不可重复)

签名算法

  1. 将请求 Body 中的参数按 key 字母升序排列
  2. 使用 http_build_query 拼接为查询字符串
  3. 拼接 &timestamp=xxx&nonce=xxx
  4. 使用 app_secret 作为密钥,计算 HMAC-SHA256

签名示例(PHP)

$appKey    = 'ak_xxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$appSecret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
$timestamp = (string) time();
$nonce     = bin2hex(random_bytes(8)); // 16位随机串

// 请求参数
$params = [
    'product_id' => 1,
    'quantity'   => 5,
    'mode'       => 'sync',
];

// 1. 按 key 升序
ksort($params);

// 2. 构建查询字符串
$paramString = http_build_query($params);

// 3. 拼接 timestamp 和 nonce
$signString = $paramString . '&timestamp=' . $timestamp . '&nonce=' . $nonce;

// 4. HMAC-SHA256 签名
$sign = hash_hmac('sha256', $signString, $appSecret);

// 发送请求
$ch = curl_init('https://lieyingtg.com/openapi/v1/order/create');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_POSTFIELDS     => json_encode($params),
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Content-Type: application/json',
        'X-Api-Key: ' . $appKey,
        'X-Api-Sign: ' . $sign,
        'X-Api-Timestamp: ' . $timestamp,
        'X-Api-Nonce: ' . $nonce,
    ],
]);
$response = curl_exec($ch);

签名示例(Python)

import hashlib, hmac, time, random, string, requests, urllib.parse

app_key = 'ak_xxxxxxxxxxxxxxxxxxxxxxxxxxxx'
app_secret = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
timestamp = str(int(time.time()))
nonce = ''.join(random.choices(string.ascii_letters + string.digits, k=16))

params = {
    'product_id': 1,
    'quantity': 5,
    'mode': 'sync',
}

# 1. 按 key 升序
sorted_params = dict(sorted(params.items()))

# 2. 构建查询字符串
param_string = urllib.parse.urlencode(sorted_params)

# 3. 拼接 timestamp 和 nonce
sign_string = f"{param_string}&timestamp={timestamp}&nonce={nonce}"

# 4. HMAC-SHA256 签名
sign = hmac.new(app_secret.encode(), sign_string.encode(), hashlib.sha256).hexdigest()

headers = {
    'Content-Type': 'application/json',
    'X-Api-Key': app_key,
    'X-Api-Sign': sign,
    'X-Api-Timestamp': timestamp,
    'X-Api-Nonce': nonce,
}
resp = requests.post('https://lieyingtg.com/openapi/v1/order/create', json=params, headers=headers)
注意事项 • 签名计算仅使用 Body 参数,不包含 Header 中的鉴权字段
• timestamp 与服务器时间偏差超过 60 秒将被拒绝
• 同一 nonce 在 120 秒内不可重复使用

响应格式

所有接口统一返回 JSON,HTTP 状态码始终为 200,通过 code 字段判断业务结果:

{
    "code": 0,           // 0 = 成功,非0 = 错误码
    "message": "success", // 结果描述
    "data": { ... },      // 业务数据(成功时返回)
    "request_id": "req_aB3xK9mNpQ2r" // 请求追踪ID
}

安全配置

IP 白名单(可选)

您可以为 API Key 设置 IP 白名单,限制只有指定 IP 才能调用接口。

配置项说明
是否必须,不设置则允许所有 IP 调用
最大数量最多 5 个 IP 地址
格式要求标准 IPv4 地址,如 1.2.3.4
设置方式 • 在主站 Telegram 机器人中,点击「申请 API Key」→「🛡 设置IP白名单」
• 多个 IP 用英文逗号分隔,如:1.2.3.4,5.6.7.8
• 发送「清除」可取消白名单限制

回调地址(可选)

异步模式下单时,如果配置了回调地址,订单完成/失败后系统会主动 POST 通知到您的服务器,无需反复轮询。

配置项说明
是否必须,不设置则需通过 /order/query 轮询订单状态
格式要求http(s):// 开头的完整 URL
推送方式POST JSON,包含签名可验证真实性
设置方式 • 在主站 Telegram 机器人中,点击「申请 API Key」→「🔗 设置回调地址」
• 发送完整 URL,如:https://your-site.com/api/callback
• 发送「清除」可取消回调(改为轮询模式)

错误码

错误码说明处理建议
1001缺少鉴权参数 / 签名校验失败 / nonce 格式无效检查签名算法和参数
1002API Key 无效或已禁用 / 账户已禁用联系管理员确认密钥状态
1003请求已过期(timestamp 超出 60 秒)检查服务器时间同步
1004重复请求(nonce 已使用)每次请求生成新的 nonce
1005IP 不在白名单在机器人「设置IP白名单」中添加您的服务器IP,或发送「清除」取消白名单限制
1006请求频率超限降低请求频率或联系调整限额
2001参数错误检查请求参数格式
2002商品不存在 / 价格异常确认商品 ID 有效
2003库存不足 / 发货失败稍后重试或减少数量
2004余额不足充值后重试
2005订单不存在 / 订单状态异常检查订单号
2006文件已过期或不存在文件仅保留 24 小时
5000系统内部错误稍后重试

获取分类列表

POST /categories

获取所有已启用的商品分类。

请求参数

无需参数(空 Body {}

响应示例

{
    "code": 0,
    "message": "success",
    "data": [
        {
            "category_id": 1,
            "name": "美国账号",
            "name_en": "US Accounts",
            "product_count": 12
        },
        {
            "category_id": 2,
            "name": "英国账号",
            "name_en": "UK Accounts",
            "product_count": 8
        }
    ],
    "request_id": "req_xK9mN3pQ2rBv"
}

获取商品列表

POST /products

获取指定分类下的商品列表,支持分页。

请求参数

参数类型说明
category_id必填int分类 ID
page可选int页码,默认 1,最大 100
page_size可选int每页条数,默认 20,最大 50

响应示例

{
    "code": 0,
    "data": {
        "list": [
            {
                "product_id": 1,
                "name": "美国账号 - 直登",
                "price": "2.50",
                "stock": 156,
                "category_id": 1
            }
        ],
        "total": 12,
        "page": 1,
        "page_size": 20
    }
}

商品详情

POST /product/detail

获取单个商品的详细信息,包括实时库存和购买限制。

请求参数

参数类型说明
product_id必填int商品 ID

响应示例

{
    "code": 0,
    "data": {
        "product_id": 1,
        "name": "美国账号 - 直登",
        "price": "2.50",
        "stock": 156,
        "category_id": 1,
        "category_name": "美国账号",
        "min_purchase": 1,
        "max_purchase": 156
    }
}

创建订单

POST /order/create 同步 异步

创建购买订单。支持同步异步两种模式,通过 mode 参数控制。

请求参数

参数类型说明
product_id必填int商品 ID
quantity可选int购买数量,默认 1,范围 1-500
mode可选stringsync(默认)或 async
模式选择建议sync:适合小批量购买(≤50个),等待发货完成后返回结果,一次调用完成全流程
async:适合大批量购买,立即返回订单号,后台异步处理,通过轮询或回调获取结果

同步模式响应

{
    "code": 0,
    "data": {
        "order_no": "API20260703142530AB12CD",
        "mode": "sync",
        "product_name": "美国账号 - 直登",
        "quantity": 5,
        "unit_price": "2.50",
        "total_amount": "12.50",
        "status": "completed",
        "balance_after": "187.50"
    }
}

异步模式响应

{
    "code": 0,
    "data": {
        "order_no": "API20260703142530AB12CD",
        "mode": "async",
        "product_name": "美国账号 - 直登",
        "quantity": 200,
        "unit_price": "2.50",
        "total_amount": "500.00",
        "status": "processing",
        "message": "订单已提交,正在处理中。请通过 /order/query 查询结果",
        "balance_after": "0.00"
    }
}
重要说明 • 扣款在创建订单时即时完成,余额立即扣除
• 如果发货失败(库存不足等),系统会自动退款至余额
• 异步模式下,如果队列服务异常,系统会自动降级为同步模式处理

查询订单

POST /order/query

根据订单号查询订单状态。异步订单需轮询此接口获取最终结果。

请求参数

参数类型说明
order_no必填string订单号,最长 32 字符

响应示例

{
    "code": 0,
    "data": {
        "order_no": "API20260703142530AB12CD",
        "status": "completed",      // processing | completed | failed
        "quantity": 200,
        "total_amount": "500.00",
        "has_download": true,
        "created_at": "2026-07-03 14:25:30"
    }
}

订单状态说明

状态值含义说明
processing处理中异步订单正在后台处理
completed已完成发货成功,可下载文件
failed已失败发货失败,已自动退款

下载文件

POST /order/download

下载订单对应的交付文件。订单状态必须为 completed

请求参数

参数类型说明
order_no必填string订单号

响应

成功时返回文件流(application/octet-stream),文件名为 {order_no}.txt{order_no}.zip

文件有效期 交付文件自订单创建起保留 24 小时,过期后无法下载。请及时获取文件。

订单列表

POST /orders

获取当前账户的 API 订单列表,支持分页和状态筛选。

请求参数

参数类型说明
page可选int页码,默认 1,最大 100
page_size可选int每页条数,默认 20,最大 50
status可选string状态筛选:processing / completed / failed

响应示例

{
    "code": 0,
    "data": {
        "list": [
            {
                "order_no": "API20260703142530AB12CD",
                "status": "completed",
                "quantity": 5,
                "total_amount": "12.50",
                "created_at": "2026-07-03 14:25:30"
            }
        ],
        "total": 42,
        "page": 1,
        "page_size": 20
    }
}

查询余额

POST /balance

查询当前账户的余额和累计统计。

请求参数

无需参数(空 Body {}

响应示例

{
    "code": 0,
    "data": {
        "balance": "187.50",
        "total_recharge": "500.00",
        "total_consume": "312.50",
        "account": "user@example.com"
    }
}

异步下单说明

mode=async 时,系统会立即返回订单号,后台队列异步处理发货。适用于大批量采购场景。

同步 vs 异步对比

对比项同步模式 (sync)异步模式 (async)
响应时间等待发货完成(可能数秒~数十秒)立即返回(毫秒级)
适用场景小批量购买(≤50个)大批量采购(数百~数千个)
结果获取接口直接返回轮询 /order/query 或等待回调
HTTP 超时风险大单可能超时无超时风险
失败处理接口直接返回失败+退款自动退款,可通过回调通知

异步订单处理流程

POST /order/create 立即返回 order_no 后台队列处理 完成/失败

轮询建议

回调通知

异步模式下,如果您配置了回调地址(callback_url),订单处理完成后系统会主动 POST 通知到您的服务器。设置方式参见上方「安全配置」章节。

回调数据格式

{
    "event": "order.completed",   // order.completed 或 order.failed
    "order_no": "API20260703142530AB12CD",
    "status": "completed",        // completed 或 failed
    "message": "success",
    "quantity": 200,
    "total_amount": "500.00",
    "timestamp": 1751529930,
    "sign": "a1b2c3d4e5f6..."      // HMAC-SHA256 签名
}

验证回调签名

回调数据中包含 sign 字段,用于验证通知来源的真实性。验证步骤:

  1. 从回调数据中取出 sign 字段
  2. 将剩余字段按 key 升序排列,拼接为查询字符串
  3. 使用您的 app_secret 计算 HMAC-SHA256
  4. 比对计算结果与 sign 是否一致
// PHP 验签示例
$data = $_POST;
$receivedSign = $data['sign'];
unset($data['sign']);

ksort($data);
$signString = http_build_query($data);
$expectedSign = hash_hmac('sha256', $signString, $appSecret);

if (hash_equals($expectedSign, $receivedSign)) {
    // 签名验证通过,可信任此回调
    // 请返回 HTTP 200 表示已收到
} else {
    // 签名无效,忽略此回调
}
最佳实践 • 收到回调后请尽快返回 HTTP 200,系统不会重复推送
• 建议通过 /order/query 二次确认订单状态后再执行后续业务
• 验签可防止伪造回调攻击您的系统

猎鹰API v1.0 · 如有疑问请联系技术支持