URL:http://服务器ip:端口?data=请求数据的base64编码
Method: GET{
"software_id": 0,
"crypt_type": 0,
"operation_type": "string",
"data": "string",
"signature": "string"
}| 字段名 | 格式 | 说明 |
|---|---|---|
| software_id | int | 要请求的软件id |
| crypt_type | int | 加密方式,1为AES-GCM-256,2为AES-CBC-256,推荐使用1 |
| operation_type | string | 具体业务操作类型,详见后方的具体业务介绍,不同业务类型具有不同的业务数据 |
| data | string | 对业务请求数据加密后BASE64编码的数据,BASE64(AES(业务请求数据)),每个业务有不同的数据 |
| signature | string | 使用hmac-sha256签名本json文本后的BASE64编码数据。签名时不包含此字段,计算出签名后再添加本字段到此json中,校验签名的时候,也要先把此字段移除 |
{
"code":0,
"message":"",
"data":"",
"signature":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| code | int | 请求的错误码,详见下方的错误码列表 |
| message | string | 请求结果信息,对错误码的详细解释 |
| data | string | 对业务响应数据加密后BASE64编码的数据,BASE64(AES(业务响应数据)),不同业务请求有不同的响应 |
| signature | string | 使用hmac-sha256签名本json文本后的BASE64编码数据。签名时不包含此字段,计算出签名后再添加本字段到此json中,校验签名的时候,也要先把此字段移除 |
{
"nonce":"",
"timestamp":0,
"machine_code":"",
"token":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| nonce | string | 封包唯一值,一定要随机,建议使用GUID+时间戳 |
| timestamp | int | 10位 UNIX时间戳 |
| machine_code | string | 机器码数据 |
| token | string | 卡密登录之后才会返回token,未登录时此值为空即可 |
{
"nonce":"",
"timestamp":0,
"machine_code":"",
"server_timestamp":0
}| 字段名 | 格式 | 说明 |
|---|---|---|
| nonce | string | 业务请求数据公共头中的原样返回 |
| timestamp | int | 业务请求数据公共头中的原样返回 |
| machine_code | string | 业务请求数据公共头中的原样返回 |
| server_timestamp | int | 服务器的10位UNIX时间戳 |
无{
"basic.announcement":"",
"update.download_url":"",
"update.force":"1",
"update.version":"",
"software_id":1,
"name":"",
"description":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| basic.announcement | string | 公告数据,utf8编码 |
| update.download_url | string | 版本下载连接,utf8格式 |
| update.force | string | 是否强制更新,"1"为强制更新,"0"为不强制 |
| update.version | string | 当前版本 |
| software_id | int | 软件的id |
| name | string | 软件名,utf8编码 |
| description | string | 软件描述,utf8编码 |
{
"card_key":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| card_key | string | 卡密 |
{
"token": "7b5120903a021f6c0ec719f50d67cb44f0cc2237e36270124788d3483ff16ef3",
"card_info": {
"activated_machine_count": 1,
"activation_time": 1757601213,
"create_time": 1757578575,
"creator": "admin",
"expiry_time": 1757604813,
"key": "FX2XSM1I0IJS5CWW5YTOS1458EFWL7HG",
"note": "",
"remaining_points": 100,
"status": "used"
},
"card_type_info": {
"available_points": 100,
"available_seconds": 3600,
"bind_ip": false,
"created_at": 1757577818,
"id": 6,
"key_length": 32,
"max_instance": 1,
"max_machines": 1,
"name": "3333",
"note": "",
"prefix": "",
"price": 1,
"rebind_deduct_points": 0,
"rebind_deduct_seconds": 0,
"software_id": 3,
"updated_at": 1757577818,
"use_separator": false
},
"machine_info": {
"activation_ip": "127.0.0.1",
"activation_time": 1757601213,
"card_key_id": 5107,
"first_login": false,
"id": 2,
"last_used_time": 1757601213,
"machine_code": "test_machine",
"status": "active"
}
}| 字段名 | 格式 | 说明 |
|---|---|---|
| token | string | 会话token,登录之后只需用此token进行后续操作即可,对就业务请求数据公共头中的token字段 |
| card_info | object | 卡密信息 |
| card_type_info | object | 卡密类型信息 |
| machine_info | object | 绑定机器信息 |
| 字段名 | 格式 | 说明 |
|---|---|---|
| activated_machine_count | int | 卡密已激活的机器数量 |
| activation_time | int | 卡密激活时间,10位UNIX时间戳 |
| create_time | int | 卡密创建时间 |
| creator | string | 卡密创建者,admin是管理员其他是代理名 |
| expiry_time | int | 卡密到期时间 |
| key | string | 卡密文本 |
| note | int | 卡密备注 |
| remaining_points | int | 卡密剩余点数 |
| status | string | 卡密状态,used是已使用,disabled是已禁用 |
| 字段名 | 格式 | 说明 |
|---|---|---|
| available_points | int | 可用点数 |
| available_seconds | int | 可用时间,单位秒 |
| bind_ip | bool | 是否绑定ip |
| created_at | int | 创建时间 |
| id | int | 卡密类型id |
| key_length | int | 卡密长度 |
| max_instance | int | 每台机器多开数量 |
| max_machines | int | 绑机数量,0为不限 |
| name | string | 卡密类型名称 |
| note | string | 卡密类型备注 |
| prefix | string | 卡密前缀 |
| price | int | 卡密价格 |
| rebind_deduct_points | int | 换绑扣除点数 |
| rebind_deduct_seconds | int | 换绑扣除时间,单位秒 |
| software_id | int | 所属软件id |
| updated_at | int | 最后更新时间 |
| use_separator | bool | 卡密文本是否使用分隔符 |
| 字段名 | 格式 | 说明 |
|---|---|---|
| activation_ip | string | 机器激活时的IP |
| activation_time | int | 机器激活绑定时间 |
| card_key_id | int | 机器激活的卡密id |
| first_login | bool | 是否第一次登录 |
| id | int | 机器id |
| last_used_time | int | 最后登录时间 |
| machine_code | string | 机器码 |
| status | string | 状态,active为正常,disabled为禁用 |
{
"vmp_machine_code":"",
"vmp_with_date":true
}| 字段名 | 格式 | 说明 |
|---|---|---|
| vmp_machine_code | string | 使用VMProtectGetCurrentHWID获取的机器码数据 |
| vmp_with_date | bool | 是否获取有到期时间的VMP授权码,到期时间跟卡密到期时间相同 |
{
"license":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| license | string | 后台生成的VMP授权码,只有第一次会动态生成,之后会直接返回第一次生成的授权码。这样就可以用这个授权码来绑定机器。 |
{
"key":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| key | string | 变量名 |
{
"value":"",
"note":"",
"update_time":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| value | string | 变量值 |
| note | string | 变量备注 |
| update_time | string | 更新时间,例:2025-09-29 21:00:00.000 ,此值可用来判断当前变量是否被修改 |
{
"card_key":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| card_key | string | 卡密 |
无,直接判断响应数据中的code无{
"card_info": {
"activated_machine_count": 1,
"activation_time": 1757601213,
"create_time": 1757578575,
"creator": "admin",
"expiry_time": 1757604813,
"key": "FX2XSM1I0IJS5CWW5YTOS1458EFWL7HG",
"note": "",
"remaining_points": 100,
"status": "used"
},
"machine_info": {
"activation_ip": "127.0.0.1",
"activation_time": 1757601213,
"card_key_id": 5107,
"first_login": false,
"id": 2,
"last_used_time": 1757601213,
"machine_code": "test_machine",
"status": "active"
}
}{
"consume_points":10
}| 字段名 | 格式 | 说明 |
|---|---|---|
| consume_points | int | 要消耗的点数 |
{
"remaining_points":100
}| 字段名 | 格式 | 说明 |
|---|---|---|
| remaining_points | int | 剩余的点数 |
{
"block_card":true,
"block_machine":true,
"block_ip":true,
"note":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| block_card | bool | 是否拉黑卡密 |
| block_machine | bool | 是否拉黑机器码 |
| block_ip | bool | 是否拉黑ip |
| note | string | 拉黑原因 |
无,直接判断响应数据中的code{
"plugin_name":"",
"plugin_input_value":""
}| 字段名 | 格式 | 说明 |
|---|---|---|
| plugin_name | string | 要执行的插件名 |
| plugin_input_value | string | 输入的参数 |
{
"output":"",
"plugin_return_code":0
}| 字段名 | 格式 | 说明 |
|---|---|---|
| output | string | 插件返回的数据 |
| plugin_return_code | int | 插件返回的错误码,自己写插件自己定义返回的错误码,对应dll插件接口的返回值 |
无无{
"card_key":"aaaaaaaa",
"nonce":"123123",
"timestamp":1234567890,
"machine_code":"test",
"token":""
} {
"software_id": 1,
"crypt_type": 1,
"operation_type": "login",
"data": "数据A"
}{
"software_id": 1,
"crypt_type": 1,
"operation_type": "login",
"data": "数据A",
"signature":"数据B"
}http://ip:port/activate?data=数据C{
"code":0,
"message":"成功",
"data":"数据",
"signature":"aaaaaaaaaaaaa"
}{
"code":0,
"message":"成功",
"data":"数据"
}| 值 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 解密失败 |
| 2 | 无效请求 |
| 3 | 禁用登录 |
| 4 | 无效参数 |
| 5 | 无效签名 |
| 6 | 不支持的加密类型 |
| 7 | 重复随机数 |
| 8 | IP地址被列入黑名单 |
| 9 | 机器码被列入黑名单 |
| 10 | 机器码为空 |
| 11 | 机器被禁用 |
| 12 | 软件未找到 |
| 13 | 登录失败 |
| 14 | 代理账号不存在 |
| 15 | 代理账号已存在 |
| 16 | 代理密码错误 |
| 17 | 代理无权限 |
| 18 | 心跳失败 |
| 19 | 变量未找到 |
| 20 | 插件执行失败 |
| 21 | 黑名单添加失败 |
| 22 | 积分消费失败 |
| 23 | 请求超时 |
| 24 | 请求频率超出限制 |
| 25 | 未找到卡片 |
| 26 | 未找到卡片类型 |
| 27 | 生成 VMP 授权失败 |
| 28 | 未找到机器 |
| 29 | 机器数量达到上限 |
| 30 | 卡片已过期 |
| 31 | 卡片已禁用 |
| 32 | 机器已过期 |
| 33 | 卡片积分已耗尽 |
| 34 | 机器积分已耗尽 |
| 35 | 数据库错误 |
| 36 | 会话数量达到上限 |
| 37 | 黑名单已存在 |
| 38 | IP 已存在,机器码加入成功 |
| 39 | 机器码已存在,ip加入成功 |
| 40 | IP 加入失败,机器码加入成功 |
| 41 | 机器码加入失败,ip加入成功 |
| 42 | 未找到插件 |
| 43 | 无效令牌 |
| 44 | 令牌已过期 |
| 45 | 无效IP |
| 46 | 其他错误 |
| 47 | 积分不足 |
| 48 | 未知错误 |