签名算法
签名算法 | |
---|---|
加密方式 | RSA |
加密方法 | RS256 |
长度 | 2048 |
格式 | PKCS8 |
私钥 | private_key_pem |
API大纲
方法 | 说明 |
---|---|
项目列表 | 查询网站所支持的项目 |
地区列表 | 省份、城市列表 |
产品列表 | 产品带宽列表 |
节点资源 | 根据项目,查询出所有节点资源信息 |
购买订单 | 下单购买长效节点 |
查询订单 | 条件查询订单信息 |
设置密码 | 指定订单设置代理密码,设置后代理才能正常使用 |
订单续费 | 指定订单续费时间 |
切换线路 | 指定订单,指定线路切换,不指定则随机切换,包括同城切换 |
用户信息 | 查询代理用户基本信息 |
构造签名
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
.... | .... | 否 | 每个接口需要的参数 |
请求示例(PHP)
# 构造签名
$data = [
"RsaNo" => $RsaNo, // 合作商编号
"Time" => time(), //当前时间戳
...... //其他请求参数
]
//参数签名,获得token
$token = Rsa->sign(json_encode($data,JSON_UNESCAPED_UNICODE));
每次接口请求之前都需要构造签名获得token,将token带入header头部正常请求接口
接口说明
代码表
代码编号 | 说明 |
---|---|
200 | 请求正常 |
10000 | 缺少必要参数 |
10001 | 无效访问 |
10002 | 授权到期 |
10003 | token过期 |
10004 | 验证失败 |
10005 | 缺少token |
3001 | 请求参数错误 |
1、项目列表
POST /Api/ProjectList
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
请求示例
curl -X POST "https://api.example.com/Api/ProjectList" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666
}'
返回示例
{
"code": 200,
"msg": "success",
"data": [
{
"ID": 30, // 项目ID
"CLASS": 1, // 项目分类
"NAME": "阿瓦隆【手游】" // 项目名称
}
]
}
2、地区列表
POST /Api/AreaList
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
请求示例
curl -X POST "https://api.example.com/Api/AreaList" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666
}'
返回示例
{
"code": 200,
"msg": "success",
"data": [
{
"province_code": "440000", // 省份编码
"province": "广东省", // 省份
"city_code": "440100", // 城市编码
"city": "广州市" // 城市
}
]
}
3、带宽列表
POST /Api/Band
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
请求示例
curl -X POST "https://api.example.com/Api/Band" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666
}'
返回示例
{
"code": 200,
"msg": "success",
"data": [ //带宽,单位M
5,
10,
20
]
}
4、节点资源
POST /Api/getNodes
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
ProjectID | int | 是 | 项目ID |
请求示例
curl -X POST "https://api.example.com/Api/getNodes" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666,
"ProjectID": 30
}'
返回示例
{
"code": 200,
"msg": "success",
"data": {
// 省份列表
"province": [
{
"area": "广东省", // 省份
"code": "440000", // 省份编码
"total": 10, // 节点总数
"isp":{ //运营商
"0":10, // 随机节点数量
"1":5, // 电信节点数量
"2":3, // 移动节点数量
"3":1, // 联通节点数量
"4":1, // 其他节点数量
}
}
],
// 城市列表
"city": [
{
"area": "广州市", // 城市
"code": "440100", // 城市编码
"total": 10, // 节点总数
"isp":{ //运营商
"0":10, // 随机节点数量
"1":5, // 电信节点数量
"2":3, // 移动节点数量
"3":1, // 联通节点数量
"4":1, // 其他节点数量
}
}
]
}
}
5、购买订单(城市选择购买)
POST /Api/BuyOrder
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
ProjectID | int | 是 | 项目ID |
Band | int | 是 | 带宽大小 |
BuyType | string | 是 | 类型(test、day、month) test:测试订单,day:按天购买,month:按月购买 |
AreaType | string | 是 | 类型(province、city) province:省份购买,city:城市购买 |
BuyTime | int | 是 | 购买时长 |
BuyNode[] | array | 是 | 节点详情 |
- AreaCode | string | 是 | 如果AreaType为province,则传省份编码,如果AreaType为city,则传城市编码 |
- ISP | int | 是 | 运营商(0:随机,1:电信,2:移动,3:联通,4:其他) |
- Num | int | 是 | 购买数量 |
请求示例
curl -X POST "https://api.example.com/Api/BuyOrder" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666,
"ProjectID": 30,
"Band": 10,
"BuyType": "test",
"AreaType": "province",
"BuyTime": 1,
"BuyNode": [
{
"AreaCode": "440000", // 如果AreaType为province,则传省份编码,如果AreaType为city,则传城市编码
"ISP": 0, // 运营商(0:随机,1:电信,2:移动,3:联通,4:其他)
"Num": 1 // 购买数量
}
]
}'
返回示例
{
"code": 200,
"msg": "success",
"data": []
}
6、查询订单
POST /Api/QueryOrder
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
OrderNo | array | 否 | 订单编号 |
Status | int | 否 | 订单状态(0:过期,1:正常) |
StartTime | dateTime | 否 | 订单开始时间(2025-01-01 00:00:00) |
EndTime | dateTime | 否 | 订单到期时间 (2025-01-01 00:00:00) |
请求示例
curl -X POST "https://api.example.com/Api/QueryOrder" \
-H "token : YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666,
"OrderNo": ["1234567890", "9876543210"],
"Status": 1,
"StartTime": "2025-01-01 00:00:00",
"EndTime": "2025-03-01 00:00:00"
}'
返回示例
{
"code": 200,
"msg": "success",
"data": {
"total": 130, // 订单总数
"list": [
{
"order_no": "AM7R4P1727161462", // 订单编号
"band": 5, // 带宽
"server": "sk1.90ip.cc:9099", // 服务器
"username": "6Z4QGA-1", // 用户名
"password": "9AAHC1UI", // 密码
"start_time": "2024-09-24 15:04:22", // 订单开始时间
"end_time": "2024-09-25 15:04:22", // 订单到期时间
"status": "0", // 订单状态
"area": "甘肃省-兰州市", // 地区
"isp": 5, // 运营商
"node_status": 0 // 节点状态 1:正常,0:异常
},
...
]
}
}
7、设置密码
POST /Api/SetPassword
订单账号由系统自动分配。存在账号的订单,只会设置密码,账号不变。
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
OrderNo[] | string | 是 | 订单编号 |
Password | string | 是 | 密码 |
请求示例
curl -X POST "https://api.example.com/Api/SetPassword" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666,
"OrderNo": ["1234567890", "9876543210"],
"Password": "123456"
}'
返回示例
{
"code": 200,
"msg": "success",
"data": [
{
"order_no": "NIEOVC1742438925",
"band": 5,
"server": "sk1.90ip.cc:9298",
"username": "31010-1",
"password": "123456",
"start_time": "2025-03-20 10:48:45",
"end_time": "2025-04-20 10:48:45",
"status": "1",
"area": "天津市-市辖区",
"isp": "联通",
"node_status": 1
},
...
]
}
8、订单续费
POST /Api/OrderRenew
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
OrderNo[] | string | 是 | 订单编号 |
RenewTime | int | 是 | 续费时长,单位:月 |
请求示例
curl -X POST "https://api.example.com/Api/OrderRenew" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666,
"OrderNo": ["1234567890", "9876543210"],
"RenewTime": 1
}'
返回示例
{
"code": 200,
"msg": "success",
"data": [
{
"order_no": "NIEOVC1742438925",
"band": 5,
"server": "sk1.90ip.cc:9298",
"username": "31010-1",
"password": "123456",
"start_time": "2025-03-20 10:48:45",
"end_time": "2025-05-20 10:48:45",
"status": "1",
"area": "天津市-市辖区",
"isp": "联通",
"node_status": 1
},
...
]
}
9、切换线路
POST /Api/ChangeLine
设置的订单必须项目相同。AreaCode为province,则在该省份节点中随机切换,AreaCode为city,则在该城市节点中随机切换
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
OrderNo[] | string | 是 | 订单编号数组 |
AreaType | string | 是 | 类型(province、city) province:省份,city:城市 |
Node[] | array | 是 | 节点详情 |
- AreaCode | string | 是 | 如果AreaType为province,则传省份编码,如果AreaType为city,则传城市编码 |
- ISP | int | 是 | 运营商(0:随机,1:电信,2:移动,3:联通,4:其他) |
- Num | int | 是 | 数量 |
请求示例
curl -X POST "https://api.example.com/Api/ChangeLine" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666,
"OrderNo": ["1234567890", "9876543210"],
"AreaType": "province",
"Node": [
{
"AreaCode": "440000",
"ISP": 0,
"Num": 2
}
]
}'
返回示例
{
"code": 200,
"msg": "success",
"data": [
{
"order_no": "NIEOVC1742438925",
"band": 5,
"server": "sk1.90ip.cc:9298",
"username": "31010-1",
"password": "123456",
"start_time": "2025-03-20 10:48:45",
"end_time": "2025-05-20 10:48:45",
"status": "1",
"area": "广东省-广州市",
"isp": "移动",
"node_status": 1
},
...
]
}
10、用户信息
POST /Api/UserInfo
请求参数
参数 | 类型 | 必填 | 说明 |
---|---|---|---|
RsaNo | string | 是 | 合作商编号 |
Time | int | 是 | 当前时间戳 |
请求示例
curl -X POST "https://api.example.com/Api/UserInfo" \
-H "token: YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"RsaNo": "ABC",
"Time": 1716666666
}'
返回示例
{
"code": 200,
"msg": "success",
"data": {
"agent_no": "ABC", //合作商编号
"account": 96, //账户余额
"can_test": 8, //可开测试订单数量
"can_change": 20, //可切换线路数量
"order_num": 7 //有效订单数量
}
}