IPMAXAPI V2

IPMAXAPI V2

URL: https://www.ipmax.cc/api/v2

IPMAXAPI V2

本文档描述当前系统字段版本的开放 API。v1 继续兼容字段和返回语义;v2 使用当前项目的数据字段,不再做 v1 的字段转换。

认证方式

所有 v2 接口都需要在 Header 中携带以下参数:

Header 必填 说明
app-idAPI 应用 ID,对应 key_manage_info.app_id
app-secretAPI 应用密钥,对应 key_manage_info.app_secret
language当前项目语言,zhen
Content-TypePOST/PUT 必填固定使用 application/json

响应格式

接口响应会被统一包装。

{
  "code": 200,
  "data": {},
  "msg": "请求成功"
}

v2 和 v1 的主要区别

项目v1v2
产品流量字段trafficLimittraffic
产品返回兼容 VO当前 ProductPublicVO
订单返回兼容 VO,状态会转换当前 OrderInfo 字段,状态不转换
IP 返回兼容 VO当前 IpInfo 字段
下单/续费返回余额支付成功字符串当前 PayVO
下单通知依赖传入 keyId不传 keyId 时自动绑定当前 app-id 对应秘钥

字段字典

产品类型
ISP1
IPV42
动态流量3
订单类型
购买1
续费2
自动续费3
订单状态
待支付1
已支付/处理中2
已完成3
IP 状态
正在分配0
正常1
即将到期2
过期3
支付方式 payType
余额支付0
在线支付渠道1-9

1. 产品列表

GET /api/v2/product/list?regionId=5&type=1

参数类型必填说明
typenumber产品类型:1 ISP,2 IPV4,3 动态流量
regionIdnumber区域 ID
regionnumberregionId 的兼容别名;同时传入时优先使用 regionId
[
  {
    "id": 1,
    "name": "美国",
    "nameEn": "United States",
    "type": 1,
    "regionId": 5,
    "price": 10.0,
    "img": "https://flagcdn.com/us.svg",
    "hot": true,
    "traffic": 1000000000,
    "sort": 100
  }
]

2. 订单价格预览

POST /api/v2/order/calc

字段类型必填说明
typenumber订单类型;不传默认 1
productIdnumber产品 ID
numsnumber数量;不传默认 1
periodnumber周期;不传默认 1
cidrstring购买静态 IP 时的号段
couponIdnumber优惠券 ID
couponStrstring优惠券 code
{
  "oldAmount": 100.0,
  "payAmount": 80.0,
  "discountAmount": 10.0,
  "couponAmount": 10.0
}

3. 创建订单并发起支付

POST /api/v2/order/submit?payType=0

也兼容 POST /api/v2/ip/make?payType=0

字段类型必填说明
payTypenumber可放在 query,也可放请求体;query 优先
typenumber不传默认 1
productIdnumber产品 ID
numsnumber数量;不传默认 1
periodnumber周期;不传默认 1
cidrstring号段,后端会校验是否属于产品可用号段
purposeIdnumber产品用途 ID
couponIdnumber优惠券 ID
couponStrstring优惠券 code
subOrderIdstring调用方自己的订单号
keyIdnumber秘钥 ID;不传时后端自动绑定当前 app-id 对应秘钥
pathstring在线支付完成跳转地址
remarksstring备注
{
  "payRecordId": 123
}
{
  "payRecordId": 123,
  "url": "https://pay.example.com/..."
}

4. 续费

POST /api/v2/ip/renewal

字段类型必填说明
ipIdnumberIP ID,id 也可作为别名
payTypenumber支付方式
periodnumber续费周期
subOrderIdstring客户端续费订单 ID
pathstring支付完成跳转地址
remarksstring备注

也支持路径方式 POST /api/v2/ip/renew/{id}/{payType}

{
  "payRecordId": 124
}

5. IP 列表

GET /api/v2/ip/list?type=1&status=1

参数类型必填说明
ipstringIP 模糊搜索
typenumberIP 产品类型
productTypenumbertype 的兼容别名;同时传入时优先使用 type
productIdnumber产品 ID
vendorIdnumber供应商 ID
statusnumberIP 状态
autoRenewalboolean是否自动续费
[
  {
    "id": 10,
    "userId": 1,
    "userInfo": "user@example.com",
    "orderId": 100,
    "type": 1,
    "productId": 1,
    "productName": "美国",
    "vendorId": 1,
    "ip": "1.1.1.1",
    "httpPort": 8080,
    "socketsPort": 1080,
    "userName": "username",
    "password": "password",
    "status": 1,
    "createTime": "2026-08-18 10:00:00",
    "expiredTime": "2026-09-18 10:00:00",
    "autoRenewal": true,
    "remarks": "备注"
  }
]

v2 的 IP 返回不会暴露 packageKeyvendorIpIdsaleIdorderNumber

6. IP 分页

POST /api/v2/ip/page/1/10

字段类型必填说明
typenumberIP 产品类型
productIdnumber产品 ID
vendorIdnumber供应商 ID
statusnumberIP 状态
autoRenewalboolean是否自动续费
ipstringIP 信息
productNamestring产品名称
remarksstring备注
{
  "records": [],
  "total": 0,
  "size": 10,
  "current": 1,
  "pages": 0
}

7. 订单列表

GET /api/v2/order/list?type=1&status=2

参数类型必填说明
idnumber订单 ID
typenumber订单类型
statusnumber当前系统订单状态,不做 v1 状态转换
productTypenumber产品类型
productIdstring产品 ID,支持模糊查询
productNamestring产品名称,支持模糊查询
ipstringIP 信息,支持模糊查询
[
  {
    "id": 100,
    "userId": 1,
    "saleId": 4,
    "userInfo": "user@example.com",
    "type": 1,
    "amount": 80.0,
    "subOrderId": "client-order-001",
    "keyId": 1,
    "couponId": 10,
    "productId": "1",
    "productType": 1,
    "productName": "美国",
    "nums": 1,
    "period": 1,
    "cidr": "1.1.1.0/24",
    "ip": "1.1.1.1",
    "ipIds": "10",
    "status": 2,
    "createTime": "2026-08-18 10:00:00",
    "doneTime": null,
    "appId": null
  }
]

8. 订单分页

POST /api/v2/order/page/1/10

字段类型必填说明
idnumber订单 ID
typenumber订单类型
productTypenumber产品类型
statusnumber订单状态
productIdstring产品 ID
productNamestring产品名称
ipstringIP 信息
subOrderIdstring客户端订单号
{
  "records": [],
  "total": 0,
  "size": 10,
  "current": 1,
  "pages": 0
}

9. 自动续费开关

PUT /api/v2/ip/autoRenewal

字段类型必填说明
idnumberIP ID
autoRenewalboolean是否开启自动续费

也支持 PUT /api/v2/ip/autoRenewal/10/truePOST /api/v2/ip/autoRenewal/10/1

true

异步通知

下单和续费时会保存 keyId。如果请求体传了 keyId,后端校验该秘钥必须属于当前 API 用户;如果没有传,v2 会自动使用当前 app-id 对应的秘钥 ID。

通知体

{
  "type": "MAKE",
  "orderId": 100,
  "subOrderId": "client-order-001",
  "ipId": 10,
  "ip": "1.1.1.1",
  "status": 1,
  "expiredTime": "2026-09-18T02:00:00.000+00:00",
  "data": {
    "productId": 1,
    "productName": "美国",
    "period": 1,
    "nums": 1,
    "orderType": 1
  }
}

事件类型

type说明
MAKE购买成功
RENEWAL续费成功
IP_CHANGEIP 变更
EXPIRING_SOON即将到期
EXPIRED已过期

接收方处理建议

建议说明
幂等处理建议使用 type + orderId + ipId 作为幂等键
正确响应接收成功后返回 HTTP 200 即可,系统只判断状态码
查询兜底若没有收到回调,可以通过查询 IP 接口获取结果

错误码

code msg 说明
400PARAM_ERROR参数错误
400BALANCE_NOT_ENOUGH余额不足
400ORDER_STATUS_INVALID订单状态不允许操作
401app not foundapp-id 不存在或未传
401secret errorapp-secret 错误
403ip not allowed请求 IP 不在白名单
403PERMISSIONS无权限或数据不属于当前用户
404NOT_FOUND数据不存在