概述
欢迎使用 猎鹰API 对接接口。本文档面向第三方开发者,提供完整的接口说明、参数定义和示例代码,帮助您快速完成系统集成。
app_key 和 app_secret2. 按本文档实现 HMAC-SHA256 签名
3. 调用接口完成对接
系统支持同步和异步两种下单模式,可根据业务场景灵活选择。
基础地址
https://lieyingtg.com/openapi/v1
所有接口路径均基于此基础地址。请求方式统一为 POST,参数通过 JSON Body 传递。
鉴权签名
每个请求必须携带以下 4 个 HTTP Header:
| Header | 类型 | 说明 |
|---|---|---|
| X-Api-Key | string | 分配的公钥(app_key) |
| X-Api-Sign | string | HMAC-SHA256 签名值 |
| X-Api-Timestamp | string | Unix 时间戳(秒),有效期 ±60 秒 |
| X-Api-Nonce | string | 16 位字母数字随机串,防重放(120 秒内不可重复) |
签名算法
- 将请求 Body 中的参数按 key 字母升序排列
- 使用
http_build_query拼接为查询字符串 - 拼接
×tamp=xxx&nonce=xxx - 使用
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 . '×tamp=' . $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}×tamp={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)
• 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 |
• 多个 IP 用英文逗号分隔,如:
1.2.3.4,5.6.7.8• 发送「清除」可取消白名单限制
回调地址(可选)
异步模式下单时,如果配置了回调地址,订单完成/失败后系统会主动 POST 通知到您的服务器,无需反复轮询。
| 配置项 | 说明 |
|---|---|
| 是否必须 | 否,不设置则需通过 /order/query 轮询订单状态 |
| 格式要求 | http(s):// 开头的完整 URL |
| 推送方式 | POST JSON,包含签名可验证真实性 |
• 发送完整 URL,如:
https://your-site.com/api/callback• 发送「清除」可取消回调(改为轮询模式)
错误码
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| 1001 | 缺少鉴权参数 / 签名校验失败 / nonce 格式无效 | 检查签名算法和参数 |
| 1002 | API Key 无效或已禁用 / 账户已禁用 | 联系管理员确认密钥状态 |
| 1003 | 请求已过期(timestamp 超出 60 秒) | 检查服务器时间同步 |
| 1004 | 重复请求(nonce 已使用) | 每次请求生成新的 nonce |
| 1005 | IP 不在白名单 | 在机器人「设置IP白名单」中添加您的服务器IP,或发送「清除」取消白名单限制 |
| 1006 | 请求频率超限 | 降低请求频率或联系调整限额 |
| 2001 | 参数错误 | 检查请求参数格式 |
| 2002 | 商品不存在 / 价格异常 | 确认商品 ID 有效 |
| 2003 | 库存不足 / 发货失败 | 稍后重试或减少数量 |
| 2004 | 余额不足 | 充值后重试 |
| 2005 | 订单不存在 / 订单状态异常 | 检查订单号 |
| 2006 | 文件已过期或不存在 | 文件仅保留 24 小时 |
| 5000 | 系统内部错误 | 稍后重试 |
获取分类列表
获取所有已启用的商品分类。
请求参数
无需参数(空 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"
}
获取商品列表
获取指定分类下的商品列表,支持分页。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| 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
}
}
商品详情
获取单个商品的详细信息,包括实时库存和购买限制。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| 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
}
}
搜索商品
按关键词搜索商品名称,支持模糊匹配。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| keyword必填 | string | 搜索关键词,最长 50 字符 |
| page可选 | int | 页码,默认 1 |
| page_size可选 | int | 每页条数,默认 20,最大 50 |
响应示例
{
"code": 0,
"data": {
"list": [
{
"product_id": 3,
"name": "美国账号 - 协议直登",
"price": "3.00",
"stock": 89,
"category_id": 1
}
],
"total": 1,
"page": 1,
"page_size": 20
}
}
创建订单
创建购买订单。支持同步和异步两种模式,通过 mode 参数控制。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| product_id必填 | int | 商品 ID |
| quantity可选 | int | 购买数量,默认 1,范围 1-500 |
| mode可选 | string | sync(默认)或 async |
• 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"
}
}
• 如果发货失败(库存不足等),系统会自动退款至余额
• 异步模式下,如果队列服务异常,系统会自动降级为同步模式处理
查询订单
根据订单号查询订单状态。异步订单需轮询此接口获取最终结果。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| 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 | 已失败 | 发货失败,已自动退款 |
下载文件
下载订单对应的交付文件。订单状态必须为 completed。
请求参数
| 参数 | 类型 | 说明 |
|---|---|---|
| order_no必填 | string | 订单号 |
响应
成功时返回文件流(application/octet-stream),文件名为 {order_no}.txt 或 {order_no}.zip。
订单列表
获取当前账户的 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
}
}
查询余额
查询当前账户的余额和累计统计。
请求参数
无需参数(空 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 超时风险 | 大单可能超时 | 无超时风险 |
| 失败处理 | 接口直接返回失败+退款 | 自动退款,可通过回调通知 |
异步订单处理流程
轮询建议
- 轮询间隔建议 3~5 秒,不要过于频繁
- 当
status变为completed或failed时停止轮询 - 如果配置了回调地址,系统会主动推送结果,无需轮询
回调通知
异步模式下,如果您配置了回调地址(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 字段,用于验证通知来源的真实性。验证步骤:
- 从回调数据中取出
sign字段 - 将剩余字段按 key 升序排列,拼接为查询字符串
- 使用您的
app_secret计算 HMAC-SHA256 - 比对计算结果与
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 {
// 签名无效,忽略此回调
}
• 建议通过
/order/query 二次确认订单状态后再执行后续业务• 验签可防止伪造回调攻击您的系统
猎鹰API v1.0 · 如有疑问请联系技术支持