Overview
欢迎使用 IPFast 文档, IPFast 是一个专业的基础网络与云计算平台。
基础网络
基础网络为您提供高质量的住宅代理和静态住宅代理服务, 主要包含以下两大核心产品:
住宅代理(Residential Proxy)
住宅代理服务提供来自真实住宅 IP 的代理,具有以下特点:
- 全球覆盖:支持全球多个国家和地区的 IP
- 动态切换:支持自动切换 IP,避免被封禁
- 高度定制:可根据国家、州/省、城市进行精确定位
- 通道管理:支持创建多个独立通道,便于业务隔离
- 实时监控:提供详细的流量统计和使用报告
数据中心代理(Datacenter Proxy)
数据中心服务提供来自数据中心集群的代理,具有以下特点:
- 全球覆盖:支持全球多个国家和地区的 IP
- 动态切换:支持自动切换 IP,避免被封禁
- 高度定制:可根据国家、州/省、城市进行精确定位
- 通道管理:支持创建多个独立通道,便于业务隔离
- 实时监控:提供详细的流量统计和使用报告
静态住宅代理(Static Residential Proxy)
静态住宅代理提供固定的住宅 IP 地址,特别适合需要稳定 IP 的场景:
- 固定 IP:提供长期稳定的固定 IP 地址
- 高可用性:保证 IP 地址的长期可用性
- 商户管理:支持商户白名单功能
- 灵活订阅:支持按需订阅和续费
- IP 更换:支持在需要时更换 IP 地址
云计算
云计算也包含以下两大核心产品:
轻量服务器(Container VPS)
轻量服务器业务特性除了具有静态住宅IP的特性外,还允许用户安装少量轻量级的软件,具有以下特点:
- 静态 IP:类似于静态住宅IP的网络特性表现
- 支持登录:支持用户SSH登录服务器后台
- 软件安装:允许用户安装少量轻量级的软件
- 资源隔离:硬件资源隔离,便于业务隔离
- 实时监控:提供详细的流量统计和使用报告
独享服务器(待上线)
独享服务器业务特性除了具有轻量服务器的特性外,实现了所有的硬件资源独享,具有以下特点:
- 静态 IP:类似于静态住宅IP的网络特性表现
- 支持登录:支持用户SSH登录服务器后台
- Windows:支持Windows操作系统
- 资源隔离:硬件资源全隔离,便于业务高负载使用
- 实时监控:提供详细的流量统计和使用报告
快速开始
技术支持
如果您在使用过程中遇到任何问题,或需要了解更多信息,请通过以下方式联系我们:
- 在线客服:通过网站聊天窗口
- 技术文档:本站点提供详细的 API 文档和使用指南
我们致力于为您提供最优质的代理服务和技术支持。
认证方式
IPFast API 使用 API Key 进行认证。每个请求都需要在 HTTP Header 中包含您的 API Key。
API Key 认证
在每个 API 请求的 Header 中添加CODE和TOKEN字段:
--header 'x-merchant-token: CODE'
--header 'x-merchant-code: TOKEN'
示例:
fetch('/api/ipft/simple/check', {
headers: {
'x-merchant-token': 'YOU TOKEN',
'x-merchant-code': 'YOU CODE'
}
})
示例输出:
{"msg":"验证成功,欢迎使用","code":200}
获取 API Key
- 登录您的 IPFast 账户
- 进入控制面板的 API 设置页面
- 生成新的 API Key

安全建议
- 请妥善保管您的 API Key,不要泄露给他人
- 定期更换 API Key 以提高安全性
- 不要在客户端代码中硬编码 API Key
- 如果怀疑 API Key 泄露,请立即重新生成
动态 IP
动态 IP 核心接口说明。
开放接口与文档
与控制台请求一致的 URL、请求头(x-merchant-token、x-merchant-code)即可通过开放 API 调用。订单创建、列表与支付见 订单服务。
服务目录
套餐与下单
子账号管理
- 获取子账号列表
- 查询子账号基础信息
- 查询子账号流量余额
- 按子账号查询剩余/总量/已用流量(MB)
- 创建子账号
- 创建动态子账号
- 编辑子账号(流量)
- 调整子账号分配流量
- 删除子账号(回收)
- 回收子账号并退回套餐可分配流量
地区与导出
订单服务
获取流量套餐列表
查询动态流量套餐,用于下单页展示可选套餐。
接口信息
GET /client/ip/dynamics/planConfig
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| capacity | 否 | String | 套餐流量容量(GB) |
| title | 否 | String | 套餐标题关键字 |
| pageNum | 否 | Long | 页码,默认 1 |
| pageSize | 否 | Long | 每页条数 |
请求示例
const response = await fetch('/client/ip/dynamics/planConfig?pageNum=1&pageSize=10', {
method: 'GET',
headers: {
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
}
})
const result = await response.json()
响应示例
{
"total": 2,
"rows": [
{
"id": 101,
"title": "Dynamic 50GB",
"capacity": 50,
"price": 399,
"discount": 1,
"days": 30,
"status": "Y"
}
],
"code": 200,
"msg": "查询成功"
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| total | Long | 符合条件的总记录数 |
| rows | Array | 当前页的套餐列表 |
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
| rows[].id | Long | 套餐配置 ID,下单时作为 configPlanId |
| rows[].title | String | 套餐标题 |
| rows[].capacity | Number | 流量容量(GB) |
| rows[].price | Number | 价格 |
| rows[].discount | Number | 折扣相关数值(以实际业务为准) |
| rows[].days | Integer | 有效天数 |
| rows[].status | String | 上架状态,Y 表示可用 |
注意事项
- 接口仅返回可用套餐。
- 返回体不包含
tenantId、merchantId、tenantPrice、createTime、updateTime。 - 常用字段为
id/title/capacity/price/discount/days/status。
获取套餐详情
查询当前账号的动态流量套餐详情,用于展示总流量、剩余流量、到期时间等信息。
接口信息
GET /client/plan/detail
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
请求参数
无
请求示例
const response = await fetch('/client/plan/detail', {
method: 'GET',
headers: {
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
}
})
const result = await response.json()
响应示例
{
"code": 200,
"msg": "操作成功",
"data": {
"id": 1001,
"merchantId": 20001,
"planType": "residential",
"planTrafficGb": 50,
"planResidueTrafficGb": 30,
"expirationDate": "2026-12-31 00:00:00",
"expired": 0,
"createTime": "2026-01-01 10:00:00",
"updateTime": "2026-04-01 12:00:00"
}
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | Integer | 业务状态码,成功一般为 200 |
| msg | String | 提示信息 |
| data | Object | 当前商户的订阅计划;无计划时为 null |
| data.id | Long | 计划记录 ID |
| data.merchantId | Long | 商户 ID(与令牌对应商户一致) |
| data.planType | String | 计划类型,如 residential(住宅)、datacenter(数据中心) |
| data.planTrafficGb | Number | 套餐总流量(GB) |
| data.planResidueTrafficGb | Number | 剩余可分配流量(GB) |
| data.expirationDate | String | 套餐到期时间 |
| data.expired | Integer | 是否过期:0 否,1 是 |
| data.createTime | String | 创建时间 |
| data.updateTime | String | 更新时间 |
下单流量套餐
创建动态流量订单,返回订单号用于后续支付。
接口信息
POST /client/order/addDynamics
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
| Content-Type | 是 | string | application/json |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| configPlanId | 是 | Long | 动态套餐配置 ID |
请求示例
const response = await fetch('/client/order/addDynamics', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
},
body: JSON.stringify({
configPlanId: 101
})
})
const result = await response.json()
响应示例
{
"msg": "下单成功",
"code": 200,
"data": "N2026040100012345678"
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
| data | String | 新创建的订单号,用于跳转支付或查询订单 |
注意事项
- 本接口只创建待支付订单并返回订单号,不涉及支付方式;支付时在 订单支付 中指定方式(例如余额支付可传
BALANCE)。 - 订单数量固定为 1,货币固定为
CNY,流量容量以套餐配置为准。 - 后端会校验套餐是否可用,并按套餐价格计算订单金额。
- 下单后需要调用支付接口完成支付。
查询流量分配订单
查询当前商户分配流量记录。用于核对套餐/流量曾向哪些子账号做过分配及分配量、时间。
接口信息
GET /client/plan/order/allocations
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| pageNum | 否 | Integer | 页码 |
| pageSize | 否 | Integer | 每页数量 |
列表按 create_time 倒序(最新在前)。
响应示例
{
"total": 2,
"rows": [
{
"account_id": "384940",
"plan_traffic_gb": 100.00,
"create_time": "2025-07-22 11:19:40"
},
{
"account_id": "384941",
"plan_traffic_gb": 50.5,
"create_time": "2025-07-21 09:00:00"
}
],
"code": 200,
"msg": "查询成功"
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| total | Long | 总记录数 |
| rows | Array | 当前页数据 |
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
| rows[].account_id | String | 业务子账号ID |
| rows[].plan_traffic_gb | Number | 该笔分配的计划流量(GB) |
| rows[].create_time | String | 创建时间,yyyy-MM-dd HH:mm:ss |
代码示例
fetch('/client/plan/order/allocations?pageNum=1&pageSize=20', {
method: 'GET',
headers: {
'x-merchant-token': 'your_token',
'x-merchant-code': 'your_code'
}
})
.then((r) => r.json())
.then((data) => console.log(data));
创建子账号
创建动态子账号。
接口信息
POST /client/dynamics/account
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
| Content-Type | 是 | string | application/json |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| label | 是 | String | 子账号备注/标题 |
| account | 是 | String | 子账号登录名 |
| password | 是 | String | 子账号密码 |
| trafficLimit | 否 | Integer | 分配流量(GB),仅支持正整数,不传默认 1 |
请求示例
const response = await fetch('/client/dynamics/account', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
},
body: JSON.stringify({
label: '业务A账号',
account: 'demo_sub_user_01',
password: 'demo_pass_01',
trafficLimit: 2
})
})
const result = await response.json()
响应示例
{
"msg": "操作成功",
"code": 200
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
注意事项
trafficLimit仅支持正整数(如 1、2、3)。- 创建前需确保账号有可用流量套餐。
获取子账号列表
查询动态子账号列表。
接口信息
GET /client/dynamics/account/list
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| pageNum | 否 | Integer | 页码 |
| pageSize | 否 | Integer | 每页数量 |
| account | 否 | String | 账号关键字 |
| status | 否 | String | 状态 |
响应示例
{
"total": 1,
"rows": [
{
"accountId": "384940",
"account": "account1234",
"status": "active",
"poolType": "standard",
"trafficLimit": 1000,
"remarks": null,
"createTime": "2025-07-22 11:19:40"
}
],
"code": 200,
"msg": "查询成功"
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| total | Long | 总记录数 |
| rows | Array | 当前页子账号列表 |
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
| rows[].accountId | String | 子账号在平台上的 ID(部分接口入参使用) |
| rows[].account | String | 子账号登录名 |
| rows[].status | String | 状态 |
| rows[].poolType | String | 池类型 |
| rows[].trafficLimit | Number | 分配流量上限(GB) |
| rows[].remarks | String | 备注(可能为 null) |
| rows[].createTime | String | 创建时间 |
查询子账号流量余额
查询指定子账号的动态 IP 流量余额(剩余、总量、已用等)。
接口信息
GET /client/dynamics/account/balance/info
请求头
| 参数名 | 类型 | 描述 |
|---|---|---|
| x-merchant-token | String | 商户令牌 |
| x-merchant-code | String | 商户代码 |
请求参数
| 参数名 | 必选 | 类型 | 描述 |
|---|---|---|---|
| accountId | 否 | String | 子账号 ID(与 获取子账号列表 中的 accountId 一致)。不传或为空时,返回当前商户下所有子账号的流量余额列表。 |
| pageNum | 否 | Integer | 页码(与项目分页约定一致,默认 1)。 |
| pageSize | 否 | Integer | 每页条数(默认与系统分页配置一致)。 |
响应示例
{
"total": 1,
"rows": [
{
"accountId": "816219",
"balance": 326999.978943,
"balanceFormat": "326999.98 MB",
"balanceTotal": 327000.000000,
"balanceTotalFormat": "327000.00 MB",
"balanceUsed": 0.021057,
"balanceUsedFormat": "0.02 MB"
}
],
"code": 200,
"msg": "查询成功"
}
代码示例
// 单个子账号余额
fetch('/client/dynamics/account/balance/info?accountId=816219', {
method: 'GET',
headers: {
'x-merchant-token': 'your_token',
'x-merchant-code': 'your_code'
}
})
.then(response => response.json())
.then(data => console.log(data));
// 当前商户全部子账号余额(分页)
fetch('/client/dynamics/account/balance/info?pageNum=1&pageSize=10', {
method: 'GET',
headers: {
'x-merchant-token': 'your_token',
'x-merchant-code': 'your_code'
}
})
.then(response => response.json())
.then(data => console.log(data));
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| total | Long | 总记录数 |
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
| rows | Array | 余额明细列表 |
| rows[].accountId | String | 子账号 ID |
| rows[].balance | Number | 剩余流量(MB) |
| rows[].balanceFormat | String | 剩余流量(展示用格式化字符串) |
| rows[].balanceTotal | Number | 总流量(MB) |
| rows[].balanceTotalFormat | String | 总流量(展示用) |
| rows[].balanceUsed | Number | 已使用流量(MB) |
| rows[].balanceUsedFormat | String | 已使用流量(展示用) |
查询接入点
查询账号可用的接入点列表。
接口信息
GET /client/dynamics/account/endpoint/info
请求头
| 参数名 | 类型 | 描述 |
|---|---|---|
| x-merchant-token | String | 商户令牌 |
| x-merchant-code | String | 商户代码 |
请求参数
| 参数名 | 必选 | 类型 | 描述 |
|---|---|---|---|
| accountId | 是 | Long | 用户账号ID |
代码示例
fetch('/client/dynamics/account/endpoint/info?accountId=1', {
method: 'GET',
headers: {
'x-merchant-token': 'your_token',
'x-merchant-code': 'your_code'
}
})
.then(response => response.json())
.then(data => console.log(data));
响应示例
{
"total": 1,
"rows": [
{
"accountId": "384933",
"endpointHost": "gate-us.host.io",
"endpointPort": 13233,
"supportedProtocol": "http"
}
],
"code": 200,
"msg": "查询成功"
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| total | Long | 总记录数 |
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
| rows | Array | 接入点列表 |
| rows[].accountId | String | 子账号 ID |
| rows[].endpointHost | String | 接入点主机 |
| rows[].endpointPort | Integer | 接入点端口 |
| rows[].supportedProtocol | String | 支持的协议(如 http、socks5 等) |
编辑子账号(流量)
编辑动态子账号信息,重点用于调整分配流量,支持按 GB 调整总流量。
接口信息
PUT /client/dynamics/account
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
| Content-Type | 是 | string | application/json |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| accountId | 是 | String | 子账号账号ID |
| trafficLimit | 否 | Integer | 新总流量(GB),仅支持正整数 |
请求示例
const response = await fetch('/client/dynamics/account', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
},
body: JSON.stringify({
accountId: "y3i8cknw",
trafficLimit: 8
})
})
const result = await response.json()
响应示例
{
"msg": "操作成功",
"code": 200
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
注意事项
trafficLimit仅支持正整数(如 1、2、3)。
删除子账号(回收)
回收(删除)当前商户下的动态子账号:解除占用并按规则退回未使用流量至套餐可分配额度。
接口信息
DELETE /client/dynamics/account/{accountIds}
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
路径参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| accountIds | 是 | String | 子账号 accountId(与列表、详情中字段一致)。多个时在同一路径段内用英文逗号分隔,例如 id1,id2 |
请求示例
const accountId = 'y3i8cknw'
const response = await fetch('/client/dynamics/account/' + encodeURIComponent(accountId), {
method: 'DELETE',
headers: {
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
}
})
const result = await response.json()
响应示例
{
"msg": "操作成功",
"code": 200
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
获取可用地区
根据动态子账号查询可用地区树。
接口信息
GET /client/dynamics/region/countries
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| accountId | 是 | Long | 子账号 ID |
请求示例
const response = await fetch('/client/dynamics/region/countries?accountId=123', {
method: 'GET',
headers: {
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
}
})
const result = await response.json()
响应示例
{
"msg": "操作成功",
"code": 200,
"data": [
{
"countryCode": "US",
"countryName": "United States",
"states": [
{
"stateCode": "CA",
"stateName": "California",
"cities": [
{
"cityCode": "LosAngeles",
"cityName": "Los Angeles"
}
]
}
]
}
]
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
| data | Array | 国家列表,每项含下级州/城市 |
| data[].countryCode | String | 国家代码 |
| data[].countryName | String | 国家名称 |
| data[].states | Array | 州/省列表 |
| data[].states[].stateCode | String | 州/省代码 |
| data[].states[].stateName | String | 州/省名称 |
| data[].states[].cities | Array | 城市列表 |
| data[].states[].cities[].cityCode | String | 城市代码 |
| data[].states[].cities[].cityName | String | 城市名称 |
注意事项
- 接口返回国家/州/城市树,前端可按需展开为三级下拉。
导出代理串
导出接口用于批量生成代理串。
接口信息
POST /client/ip/dynamics/exportIp
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
| Content-Type | 是 | string | application/json |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| accountId | 是 | String | 动态账号ID |
| endpointHost | 是 | String | 接入点 Host |
| endpointPort | 是 | String | 接入点 Port |
| count | 是 | Integer | 导出数量(1-1000) |
| formatType | 是 | Integer | 0~3 |
| countryCode | 否 | String | 国家 |
| stateCode | 否 | String | 州/省 |
| cityCode | 否 | String | 城市 |
| sessionCode | 否 | String | 会话标识(可用于 sticky 类需求) |
| sessionTime | 否 | String | 会话时长 |
请求示例
const response = await fetch('/client/ip/dynamics/exportIp', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
},
body: JSON.stringify({
accountId: '816222',
endpointHost: 'as.example.net',
endpointPort: '2333',
count: 3,
formatType: 3
})
})
const result = await response.json()
响应示例
{
"msg": "操作成功",
"code": 200,
"data": [
"host:port:username:password"
]
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| code | Integer | 业务状态码 |
| msg | String | 提示信息 |
| data | Array | 代理串列表(每项为字符串),格式与 formatType 一致(如 host:port:user:pass) |
静态代理
静态代理服务提供固定IP地址的代理解决方案,支持多国家地区的IP资源,具有高稳定性和独享性特点。
服务目录
IP管理
订单管理
主要特点
- 固定的IP地址资源
- 稳定可靠的网络质量
- 多区域IP资源支持
- 完善的订单管理系统
- 便捷的支付流程
- 详细的使用文档
快速开始
-
查看IP资源
- 使用IP位置查询功能浏览可用资源
- 选择合适的IP地址
-
购买服务
- 通过下单功能选择所需IP
- 确认订单信息
- 完成支付流程
-
管理IP
- 使用IP列表查询功能管理已购IP
- 监控IP使用状态
- 及时续费或升级服务
ip列表查询
查询已购买的静态IP列表。
接口信息
GET /client/ip/pool/item/merchantIpList
请求头
| 参数名 | 类型 | 描述 |
|---|---|---|
| x-merchant-token | String | 商户令牌 |
| x-merchant-code | String | 商户代码 |
请求参数
| 参数名 | 必选 | 类型 | 描述 |
|---|---|---|---|
| ip | 否 | String | IP |
| status | 否 | Integer | IP状态:1-已生效, 2-已过期 3-已退订 |
| type | 否 | Integer | IP类别:0广播 1原生 |
| ipCategory | 否 | String | IP属性:HOST-住宅, IDC-机房 |
| orderNo | 否 | String | 订单号 |
| pageSize | 否 | Integer | 每页显示记录数 |
| pageNum | 否 | Integer | 当前页码 |
代码示例
/client/ip/pool/item/merchantIpList?ip=156.252&status=1&type=1&pageSize=1
响应示例
{
"total": 58,
"rows": [
{
"createBy": null,
"createTime": "2025-03-24 20:22:31",
"updateBy": null,
"updateTime": "2025-03-24 23:26:14",
"remark": null,
"id": 147,
"poolId": 1,
"merchantId": 1,
"lastOrderId": 176,
"sourceCode": null,
"sourceName": null,
"account": "justinka",
"password": "34372766",
"port": "2340",
"ip": "156.252.8.76",
"protocolse": null,
"effectiveDatetime": "2025-03-24",
"expireDatetime": "2025-05-23",
"status": 1,
"type": 1,
"ipCategory": "HOST",
"continent": "Asia",
"countryCode": "VN",
"location": "",
"bandwidth": 10,
"hot": "N"
}
],
"code": 200,
"msg": "查询成功"
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | Long | 记录ID |
| account | String | 账号 |
| password | String | 密码 |
| port | String | 端口 |
| ip | String | IP地址 |
| effectiveDatetime | String | 生效时间 |
| expireDatetime | String | 到期时间 |
| status | Integer | 状态:1-已生效, 2-已过期 3-已退订 |
| type | Integer | IP类别 0广播 1原生 |
| ipCategory | String | IP属性 HOST住宅 IDC机房 |
| continent | String | 大洲 |
| countryCode | String | 国家代码 |
| location | String | 位置 |
| bandwidth | Integer | 带宽规格(Mbps),如 5、10 |
可购地区列表查询
查询可购买地区IP数量
接口信息
GET /client/ip/pool/regionalAvailableIps
请求头
| 参数名 | 类型 | 描述 |
|---|---|---|
| x-merchant-token | String | 商户令牌 |
| x-merchant-code | String | 商户代码 |
请求参数
| 参数名 | 必选 | 类型 | 描述 |
|---|---|---|---|
| type | 否 | Integer | IP类别 0广播 1原生 |
| ipCategory | 否 | String | IP属性 IDC机房 HOST住宅 |
| continents | 否 | Array[String] | 州列表 |
| countryCodes | 否 | Array[String] | 国家代码列表 |
| locations | 否 | Array[String] | 省/区列表 |
| bandwidth | 否 | Integer | 带宽规格(Mbps),如 5、10;不传时每个可购地区可能返回多条记录,分别对应不同带宽规格 |
代码示例
/client/ip/pool/regionalAvailableIps
响应示例
{
"total": 3,
"rows": [
{
"id": 19,
"type": 1,
"ipCategory": "HOST",
"continent": "asia",
"countryCode": "hk",
"location": "hongkong",
"bandwidth": 10,
"price": 30.0000,
"price7": null,
"ipTotals": 100
},
{
"id": 19,
"type": 1,
"ipCategory": "HOST",
"continent": "asia",
"countryCode": "hk",
"location": "hongkong",
"bandwidth": 5,
"price": 20.0000,
"price7": null,
"ipTotals": 413
},
{
"id": 24,
"type": 1,
"ipCategory": "HOST",
"continent": "north_america",
"countryCode": "us",
"location": "newyork",
"bandwidth": 5,
"price": 18.0000,
"price7": null,
"ipTotals": 200
}
],
"code": 200,
"msg": "查询成功"
}
同一地区 id 可能出现多条记录,以 bandwidth 区分不同带宽规格;price、ipTotals 均为该带宽规格下的单价与可购数量。
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| id | Integer | 地区标识,与下单时的国家/地区组合对应 |
| type | Integer | IP类别:0-广播, 1-原生 |
| ipCategory | String | IP属性:HOST-住宅, IDC-机房 |
| continent | String | 大洲 |
| countryCode | String | 国家代码 |
| location | String | 省/区位置 |
| bandwidth | Integer | 带宽规格(Mbps),如 5、10 |
| price | double | 该带宽规格下的月单价(元) |
| price7 | double | 该带宽规格下的 7 天单价(元);无 7 天售价时为 null |
| ipTotals | Integer | 该带宽规格下的可购数量 |
钱包余额查询
钱包余额查询
接口信息
GET /client/merchant/walletInfo
请求头
| 参数名 | 类型 | 描述 |
|---|---|---|
| x-merchant-token | String | 商户令牌 |
| x-merchant-code | String | 商户代码 |
响应示例
{
"msg": "操作成功",
"code": 200,
"data": {
"balance": 20.000,
"totalAmount": 100.500
}
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| balance | double | 余额 |
| totalAmount | double | 总花费金额 |
静态代理订单
静态代理订单模块提供了静态IP代理服务的订购和管理功能。通过这些接口,您可以购买静态IP代理、管理订单并完成支付。
功能特点
订单管理
支付处理
- 订单支付
- 支持多种支付方式
- 实时支付状态更新
- 自动余额校验
- 支付结果通知
使用流程
-
创建订单
- 选择购买数量和周期
- 确认订单金额
- 联系我们确保IP库存充足(临时方案,后续会开发接口自主查询库存)
- 提交订单请求 调用/client/order/addStatic接口
- 获取订单ID 获取resp.data作为订单ID
-
完成支付
- 使用订单ID发起支付 调用/client/payment/order/pay/{orderId}接口
- 选择支付方式 当前仅支持BALANCE
- 确认支付结果
- 查看订单状态
使用建议
- 下单前确认所需的静态IP数量
- 注意检查账户余额是否充足
- 保存订单ID以便后续查询
- 及时确认支付结果状态
- 如遇支付失败,查看具体错误信息
新购下单
本接口用于新购下单
接口信息
POST /client/order/addStatic
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| countryNums | 是 | Array of CountryNumsItemVO | 国家IP数量分配列表 |
| monthCount | 是 | Long | 购买几个月 |
| dayCount | 否 | Long | 购买天数(仅支持:7) |
| currency | 是 | String | 货币类型CNY |
CountryNumsItemVO结构
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| countryCode | 是 | String | 国家代码 |
| location | 是 | String | 省/州/区 |
| num | 是 | Long | 该国家需要的IP数量 |
| ipType | 是 | Long | 0:广播 1:原生 |
| ipCategory | 是 | String | HOST-住宅 IDC-机房 |
| bandwidth | 是 | Integer | 带宽规格(Mbps),如 5、10;见下方「带宽说明」 |
请求示例
const response = await fetch('/client/order/addStatic', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
},
body: JSON.stringify({
"countryNums": [
{
"countryCode": "US",
"num": "2",
"location" : "New York",
"ipType":1,
"ipCategory":"HOST",
"bandwidth":10
}
],
"monthCount":1,
"currency":"CNY"
})
});
const result = await response.json();
响应结果
{
"msg": "操作成功",
"code": 200,
"data": "N2025032701271232584"
}
带宽说明
countryNums 中每一项必须传入 bandwidth(单位 Mbps,常见取值为 5、10):
- 按指定带宽计价、校验库存并开通;若该地区未配置该带宽的售价或库存不足,下单失败。
- 未传或传
null时接口返回错误,例如:countryNums[0].bandwidth不能为空。 - 服务端不会再按 10 Mbps → 5 Mbps 自动选档。
建议:先调用 可购地区列表查询,按返回记录中的 bandwidth、price、ipTotals 下单,并与本接口传入值保持一致。
注意事项
- dayCount参数仅支持7天,并且传入dayCount参数将忽略monthCount参数。
- 并非所有地区都支持7天购买,请根据实际情况选择(需要参考 可购地区列表查询 对应带宽记录是否返回
price7具体价格而定)。 - 同一国家/地区若存在多种带宽规格,必须为每一行
countryNums显式传入目标bandwidth。
续费下单
本接口用于续费下单,支持批量IP续费。
接口信息
POST /client/order/renewIpList
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| ipList | 是 | Array[String] | IP列表 |
| monthCount | 是 | Long | 续费几个月 |
| dayCount | 否 | Long | 续费天数(仅支持:7) |
请求示例
const response = await fetch('/client/order/renewIpList', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
},
body: JSON.stringify({
"ipList": [
"43.255.80.100"
],
"monthCount": 1
})
});
const result = await response.json();
响应结果
{
"msg": "下单成功",
"code": 200,
"data": "N2025032701271232584"
}
注意事项
- dayCount参数仅支持7天,并且传入dayCount参数将忽略monthCount参数。
- 并非所有地区都支持7天购买,请根据实际情况选择(需要参考'/client/ip/pool/regionalAvailableIps'接口是否有返回price7具体价格而定)。
退订下单
本接口用于退订下单,支持批量IP退订。
接口信息
POST /client/order/unsubscribeStaticIps
请求头
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| x-merchant-token | 是 | string | 商户访问令牌 |
| x-merchant-code | 是 | string | 商户编码 |
请求参数
| 参数名 | 必选 | 类型 | 说明 |
|---|---|---|---|
| ipList | 是 | Array[String] | IP列表 |
请求示例
const response = await fetch('/client/order/unsubscribeStaticIps', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'x-merchant-token': 'your-token-here',
'x-merchant-code': 'your-merchant-code'
},
body: JSON.stringify({
"ipList": [
"43.255.80.100"
]
})
});
const result = await response.json();
响应结果
{
"msg": "操作成功",
"code": 200,
"data": "true"
}
带宽监控日志
按机器 IP 与日期范围查询带宽、CPU、内存、TCP 等监控数据,用于不限量代理机器的运行监控与排查。
接口信息
GET /client/ip/unlimited/log
请求头
| 参数名 | 类型 | 描述 |
|---|---|---|
| x-merchant-token | String | 商户令牌 |
| x-merchant-code | String | 商户代码 |
请求参数
| 参数名 | 必选 | 类型 | 描述 |
|---|---|---|---|
| ip | 是 | String | 机器 IP |
| startDate | 是 | String | 开始日期,格式 yyyy-MM-dd |
| endDate | 是 | String | 结束日期,格式 yyyy-MM-dd |
代码示例
/client/ip/unlimited/log?ip=192.168.1.1&startDate=2026-02-27&endDate=2026-02-27
响应示例
{
"bandwidth": [18, 23, 21, 21, 23, 25],
"cpu": [13, 16, 15, 16, 16, 17],
"dates": ["02-27 00:00", "02-27 00:01", "02-27 00:03", "02-27 00:04", "02-27 00:05", "02-27 00:06"],
"mem": [42, 42, 42, 42, 43, 44],
"tcp": [49240, 53572, 56375, 54897, 55624, 59692]
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| bandwidth | Array[Integer] | 各采样点带宽指标(与 dates 一一对应),单位MB |
| cpu | Array[Integer] | 各采样点 CPU 使用率(与 dates 一一对应),单位% |
| dates | Array[String] | 采样时间点,格式 MM-dd HH:mm |
| mem | Array[Integer] | 各采样点内存使用率(与 dates 一一对应),单位% |
| tcp | Array[Integer] | 各采样点 TCP 连接数(与 dates 一一对应) |
数组长度一致,同一索引对应同一时刻的带宽、CPU、日期、内存、TCP 数据。
订单服务
通用订单能力说明。
服务目录
订单列表查询
查询已购订单列表
接口信息
GET /client/order/orderList
请求头
| 参数名 | 类型 | 描述 |
|---|---|---|
| x-merchant-token | String | 商户令牌 |
| x-merchant-code | String | 商户代码 |
请求参数
| 参数名 | 必选 | 类型 | 描述 |
|---|---|---|---|
| orderNo | 否 | String | 订单号 |
| productType | 否 | Integer | 产品类型,2-静态IP |
响应示例
{
"total": 1,
"rows": [
{
"createTime": "2025-10-22 17:02:52",
"remark": null,
"id": 157,
"merchantId": 1,
"orderNo": "IPF2025102217025244134",
"productName": "Static Regular",
"productType": 2,
"quantity": 1,
"totalAmount": 0.010,
"currency": "CNY",
"status": 0,
"paidStatus": 20,
"payMethod": "ALIPAY",
"orderItems": [
{
"password": "12345678",
"expireDatetime": "2025-11-21T17:02:53.000+08:00",
"port": "8080",
"countryCode": "nz",
"unsubscribeTime": "9999-12-31T00:00:00.000+08:00",
"ip": "203.97.15.28",
"effectiveDatetime": "2025-10-22T17:02:53.000+08:00",
"days": 30,
"location": "wellingtont",
"account": "ipfast@2025",
"status": "Y"
}
]
}
],
"code": 200,
"msg": "查询成功"
}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| orderNo | String | 订单号 |
| productName | String | 产品名称 |
| productType | Integer | 产品类型,2-静态IP |
| totalAmount | double | 总价格 |
| currency | String | 货币 |
| status | Integer | 订单状态,0-未生效,10-已生效,20-已过期 |
| paidStatus | Integer | 支付状态,0-已取消,10-未支付,20-已支付 |
| payMethod | String | 支付方式,BALANCE-余额支付,ALIPAY-支付宝 |
| createTime | String | 创建时间 |
| orderItems | List | 订单产品明细 |
静态订单orderItems
| 参数名 | 类型 | 描述 |
|---|---|---|
| ip | String | IP |
| port | String | 端口 |
| account | String | 账号 |
| password | String | 密码 |
| countryCode | String | 国家代码(2位) |
| location | String | 地区 |
| status | String | 状态,P-待发货,Y-已发货,N-已过期,T-已退订 |
| effectiveDatetime | String | 生效时间 |
| expireDatetime | String | 过期时间 |
| unsubscribeTime | String | 退订时间(如没有退订则为9999-12-31或空) |
订单支付
支付订单。
接口信息
POST /client/payment/order/pay/{orderId}
请求头
| 参数名 | 类型 | 描述 |
|---|---|---|
| x-merchant-token | String | 商户令牌 |
| x-merchant-code | String | 商户代码 |
| Content-Type | String | application/json |
路径参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| orderId | String | 订单ID,从下单返回值中获取 |
请求参数
| 参数名 | 类型 | 描述 |
|---|---|---|
| payment | String | 支付方式,目前仅支持"BALANCE" |
请求示例
{
"payment": "BALANCE"
}
代码示例
fetch('/client/payment/order/pay/N2025032701271232584', {
method: 'POST',
headers: {
'x-merchant-token': 'your_token',
'x-merchant-code': 'your_code',
'Content-Type': 'application/json'
},
body: JSON.stringify({
payment: "BALANCE"
})
})
.then(response => response.json())
.then(data => console.log(data));
响应示例
{
"msg": "操作成功",
"code": 200,
"data": {
"paymentType": "BALANCE",
"paymentName": "余额支付",
"orderId": 207,
"status": 1,
"payMessage": "success"
}
}
//错误返回
{"msg":"余额不足","code":500}
响应参数说明
| 参数名 | 类型 | 描述 |
|---|---|---|
| paymentType | String | 支付方式 |
| paymentName | String | 支付方式名称 |
| status | Integer | 支付状态(1=支付成功,0=支付失败) |
| orderId | String | 订单ID |
| payMessage | String | 支付信息 |
错误码说明
| 错误码 | 描述 |
|---|---|
| 500 | 订单已失效 |
| 500 | 商户钱包账户不存在 |
| 500 | 余额不足 |