第六元素 开发文档

本文档为开发者提供了详细的API接口说明和使用指南,帮助您快速集成和使用第六元素提供的各项服务。

关于第六元素

第六元素是一款专业的安全防护系统,提供多语言开发支持、可视化数据分析、多重加密保障、API接口开放等功能,为软件开发者提供全方位的安全解决方案。

通过本文档中的API接口,您可以轻松地将第六元素的各项功能集成到您的应用程序中,包括但不限于:

  • 用户身份验证和授权
  • 卡密管理和验证
  • 安全算法和数据加密
  • 实时数据统计和分析

文档使用说明

本文档分为以下几个主要部分:

  • 开始使用 - 介绍基本概念和快速入门指南
  • API接口 - 详细的API接口说明和参数解释
  • 示例与工具 - 提供代码示例和SDK下载

左侧导航栏提供了快速访问各个章节的链接,您可以点击相应的链接跳转到需要查看的内容。

如果您是首次使用第六元素API,建议按照顺序阅读文档,以便全面了解系统的功能和使用方法。

快速开始

按照以下步骤,快速集成第六元素API并开始使用我们的服务。

创建开发者账号

在使用第六元素API之前,您需要先创建一个开发者账号:

  1. 访问 第六元素官网 并注册账号
  2. 登录后,进入开发者中心
  3. 创建新的应用并获取 AppID 和 AppSecret

请妥善保管您的 AppSecret,不要泄露给他人,这是您调用API的重要凭证。

安装SDK(可选)

我们提供了多种语言的SDK,您可以选择适合您项目的SDK进行安装:

PHP
composer require securityshield/php-sdk
Python
pip install securityshield
Node.js
npm install securityshield-sdk

您也可以直接调用API而不使用SDK,但使用SDK可以简化开发过程并减少错误。

第一个API调用

下面是一个简单的示例,展示如何使用PHP SDK进行API调用:

PHP
<?php
require_once 'vendor/autoload.php';

use SecurityShield\Client;

// 初始化客户端
$client = new Client([
    'app_id' => 'YOUR_APP_ID',
    'app_secret' => 'YOUR_APP_SECRET'
]);

// 调用验证接口
try {
    $result = $client->verify([
        'card_code' => 'XXXX-XXXX-XXXX-XXXX',
        'machine_code' => 'MACHINE_UNIQUE_ID'
    ]);
    
    if ($result['code'] == 0) {
        echo "验证成功!到期时间:" . $result['expire_time'];
    } else {
        echo "验证失败:" . $result['message'];
    }
} catch (Exception $e) {
    echo "发生错误:" . $e->getMessage();
}

调用成功后,您将收到类似以下的JSON响应:

JSON
{
    "code": 0,
    "message": "success",
    "data": {
        "card_id": "12345",
        "status": 1,
        "expire_time": "2023-12-31 23:59:59",
        "create_time": "2023-01-01 00:00:00"
    }
}

协议规则

了解第六元素API的调用规则和协议约定,确保您的请求能够被正确处理。

请求格式

第六元素API采用RESTful风格,支持HTTP/HTTPS请求。所有接口均使用POST方法提交数据,数据格式支持JSON和表单两种方式。

HTTP请求示例
POST /api/v1/verify HTTP/1.1
Host: api.securityshield.com
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN

{
    "card_code": "XXXX-XXXX-XXXX-XXXX",
    "machine_code": "MACHINE_UNIQUE_ID",
    "timestamp": 1609459200,
    "sign": "a1b2c3d4e5f6g7h8i9j0"
}

签名机制

为了确保API调用的安全性,所有请求都需要进行签名验证。签名的计算方法如下:

签名计算公式
Sign = MD5("kami=" + 卡密值 + "&markcode=" + MD5(CPU型号 + CPU制造商 + CPU序列号) + "&t=" + 当前时间戳 + "&" + APPKEY)

其中:

  • 卡密值:用户输入的卡密
  • markcode:机器硬件标识,通过对CPU信息进行MD5加密生成
  • 当前时间戳:精确到秒的UNIX时间戳
  • APPKEY:应用密钥,在开发者中心获取
易语言示例代码
Sign = 校验_取md5_文本("kami=" + 编辑框_kami.内容 + "&markcode=" + 校验_取md5_文本(系统_取CPU型号() + 系统_取CPU制造商() + 系统_取CPU序列号(), 真) + "&t=" + 到文本(时间_到时间戳(, 真, 真)) + "&" + APPKEY, 真)
PHP签名计算示例
function calculateSign($kamiCode, $appKey) {
    // 获取CPU信息(服务端验证时可能需要客户端提供)
    $cpuInfo = getCpuInfo(); // 这在实际PHP环境中需要替换为实际获取方式
    
    // 计算markcode
    $markcode = md5($cpuInfo['model'] . $cpuInfo['manufacturer'] . $cpuInfo['serial']);
    
    // 获取当前时间戳
    $timestamp = time();
    
    // 构建签名字符串
    $signString = "kami=" . $kamiCode . "&markcode=" . $markcode . "&t=" . $timestamp . "&" . $appKey;
    
    // 计算MD5
    return md5($signString);
}

// 使用示例
$sign = calculateSign('XXXX-XXXX-XXXX-XXXX', 'YOUR_APP_KEY');

注意:请务必确保APPKEY的安全性,不要在客户端代码中明文存储或暴露APPKEY。在实际应用中,建议通过其他安全机制保护APPKEY。

响应格式

所有API响应均为JSON格式,包含以下字段:

  • code: 响应代码,0表示成功,非0表示失败
  • message: 响应消息,描述请求处理的结果
  • data: 响应数据,包含请求的具体结果
成功响应示例
{
    "code": 0,
    "message": "success",
    "data": {
        // 具体的响应数据
    }
}
失败响应示例
{
    "code": 1001,
    "message": "Invalid parameters",
    "data": null
}

登录接口

用于验证用户身份并获取用户信息的接口。

用户登录

该接口用于验证用户登录信息并返回用户详细信息。

接口地址: https://www.eoilmen.com/api.php?api=userlogon

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=userlogon&app=10000&user=123456&password=123456

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写userlogon
应用 app GET 填写后台应用APPID
用户账号 user GET/POST 填写用户账号
用户密码 password GET/POST 填写用户密码
时间戳 t GET/POST 如果开启了[时间差效验]需提交此项
数据签名 sign GET/POST 如果开启了[数据签名]需提交此项

返回参数说明:

名称 类型 说明
code String 返回状态
user String 账号
qq String QQ
name String 昵称
vip String VIP时间戳
ban String 禁用到期时间戳
ban_notice String 到期通知
pic String 用户头像
fen String 积分
rmb String 金额
返回示例
{
    "code":200,
    "msg":{
        "user":"123456",
        "qq":"123456",
        "name":"这个人没有名字!",
        "vip":"999999",
        "ban":"888888",
        "fen":"1420",
        "rmb":"1680.00"
    },
    "time":1715618665,
    "check":"639dcaf77e12ed4c21ba6066ff52ae61"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

注册接口

用于创建新用户账号的接口。

用户注册

该接口用于创建新用户账号并完成注册。

接口地址: https://www.eoilmen.com/api.php?api=userreg

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=userreg&app=10000&user=123456&password=123456&qq=123456

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写userreg
应用 app GET 填写后台应用APPID
用户昵称 name GET/POST 填写用户昵称
用户账号 user GET/POST 填写用户账号
用户密码 password GET/POST 填写用户密码
用户QQ qq GET/POST 填写用户QQ
时间戳 t GET/POST 如果开启了[时间差效验]需提交此项
数据签名 sign GET/POST 如果开启了[数据签名]需提交此项

返回参数说明:

名称 类型 说明
code String 返回状态
msg String 返回信息
返回示例
{
    "code":200,
    "msg":"注册成功",
    "time":1582107375
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在
115 String 账号已存在
117 String 该IP已注册
174 String 该QQ已存在
116 String 账号长度5~11位,不支持中文和特殊字符
119 String 密码长度需要满足6-18位数,不支持中文以及.-*_以外特殊字符

卡密接口

用于验证和管理卡密的接口。

卡密登录

该接口用于验证卡密并完成卡密登录。

接口地址: https://www.eoilmen.com/api.php?api=kmlogon

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=kmlogon&app=10000&kami=卡密46&markcode=123

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写kmlogon
应用 app GET 填写后台应用APPID
卡密 kami GET/POST 填写提交的卡密
设备码 markcode GET/POST 如果开启了[验证设备]需提交此项
用户 user GET/POST VIP充值卡或积分充值卡密则需提交此项
时间戳 t GET/POST 如果开启了[时间差效验]需提交此项
数据签名 sign GET/POST 如果开启了[数据签名]需提交此项

返回参数说明:

名称 类型 说明
code String 返回状态
kami String 提交的卡密
vip String 卡密到期时长
返回示例
{
    "code": 200,
    "msg": {
        "kami": "2iPMrvyhqH",
        "vip": "1614693232"
    },
    "time": 1614689800,
    "check": "00e837c144a02a5ed3717647ee3f33da"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在
104 String 签名为空
105 String 数据过期
106 String 签名有误
148 String 卡密为空
149 String 卡密不存在
151 String 卡密禁用
169 String IP不一致

获取应用

获取应用配置信息的接口。

应用配置

该接口用于获取应用的配置信息,包括版本、更新URL、应用名称等。

接口地址: https://www.eoilmen.com/api.php?api=ini

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=ini&app=10000

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写ini
应用 app GET 填写后台应用APPID

返回参数说明:

名称 类型 说明
code String 返回状态
version String 应用版本
version_info String 版本信息
app_update_show String 更新内容
app_update_url String 更新地址
app_update_pwd String 文件提取码
app_name String 应用软件名称
app_qq String 应用客服QQ
app_groupchat String 应用群聊信息
app_img String 应用软件LOGO
app_background String 应用软件背景信息
app_update_must String 开启强制更新返回"y",关闭则返回"n"
app_switch String 应用付费使用返回"y",免费则返回"n"
返回示例
{
    "code": 200,
    "msg": {
        "version": "1.0",
        "version_info": "1.0、欢迎使用极简云验证\n2.0、全新版本正式发布",
        "app_update_show": "全新版本已发布,请及时更新",
        "app_update_url": "http://baidu.com/更新地址",
        "app_update_pwd":"文件提取码",
        "app_name":"测试应用",
        "app_qq":"客服QQ号",
        "app_groupchat":"售后群号或链接",
        "app_img":"https://uu.uuu8.vip/assets/img/Program/program_461ecbe9f4945f36220f7dba196d956f.png",
        "app_background":"https://uu.uuu8.vip/assets/img/Program/program_461ecbe9f4945f36220f7dba196d956f.png",
        "app_update_must": "y",
        "app_switch":"y",
        "api_total":"32004"
    },
    "time":1726932703,
    "check":"093bad3c4ff19e54ab8d913ed98e9e31"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

用户API

与用户管理相关的接口。

获取用户信息

该接口用于获取用户详细信息。

接口地址: https://www.eoilmen.com/api.php?api=userinfo

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=userinfo&app=10000&user=123456

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写userinfo
应用 app GET 填写后台应用APPID
用户账号 user GET/POST 填写用户账号
时间戳 t GET/POST 如果开启了[时间差效验]需提交此项
数据签名 sign GET/POST 如果开启了[数据签名]需提交此项

返回参数说明:

名称 类型 说明
code String 返回状态
user String 账号
qq String QQ
name String 昵称
vip String VIP时间戳
ban String 禁用到期时间戳
ban_notice String 到期通知
pic String 用户头像
fen String 积分
rmb String 金额
返回示例
{
    "code":200,
    "msg":{
        "user":"123456",
        "qq":"123456",
        "name":"这个人没有名字!",
        "vip":"999999",
        "ban":"888888",
        "fen":"1420",
        "rmb":"1680.00"
    },
    "time":1715618665,
    "check":"639dcaf77e12ed4c21ba6066ff52ae61"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

代码示例与工具

提供各种编程语言的对接示例和实用工具,帮助您快速集成第六元素API。

集成示例

我们提供了多种编程语言的集成示例,助您快速上手第六元素API的调用和对接:

易语言示例

提供完整的易语言对接示例,包括登录、注册、卡密验证等功能

2024-09-04更新 V3.2
下载示例

Java对接示例

Java语言的完整对接示例,适用于Android和JavaSE应用开发

最新版本 包含文档
下载示例

AutoJS示例

提供AutoJS脚本示例,方便快速实现手机自动化操作与API对接

稳定版 兼容多系统
下载示例

C++对接示例

C++语言的完整对接示例,适用于桌面应用和游戏开发

高性能 跨平台
下载示例

开发工具

我们还提供了一系列实用工具,帮助开发者提高开发效率:

LUA一键注入工具

快速将API对接代码注入到LUA脚本中,简化游戏辅助开发流程

即将上线

签名测试工具

在线测试API签名是否正确,排查签名验证失败的问题

查看文档

如需其他编程语言的对接示例或有特殊需求,请联系我们的技术支持团队,我们将为您提供定制化的解决方案。

SDK下载

下载各种编程语言的SDK,简化第六元素API的集成流程。

SDK资源

我们提供以下编程语言的SDK,点击对应的链接进行下载:

PHP SDK

适用于PHP 7.0及以上版本

JavaScript SDK

支持浏览器和Node.js环境

Java SDK

适用于Java 8及以上版本

Python SDK

支持Python 3.6及以上版本

C# SDK

支持.NET Framework 4.5及.NET Core

Go SDK

支持Go 1.13及以上版本

注意:所有SDK均包含详细的使用文档和示例代码,以帮助您快速上手。如果您在使用过程中遇到任何问题,请参考相应的文档或联系我们的技术支持。

辅助工具

除了SDK之外,我们还提供以下辅助工具,帮助您更高效地使用第六元素API:

API调试工具

一个可视化的工具,用于测试API请求和响应,方便开发人员调试。

查看详情

签名验证工具

帮助您确认签名算法是否正确实现,确保API请求的安全性。

查看详情

代码生成器

根据您的配置自动生成API调用代码,支持多种编程语言。

查看详情

常见问题

关于第六元素API的常见问题和解答。

API使用问题

如何获取AppID和AppSecret?

登录第六元素官网后台,进入"开发设置"页面,点击"创建应用"按钮,填写相关信息后系统会自动生成AppID和AppSecret。请妥善保管这些信息,不要泄露给他人。

API有调用频率限制吗?

是的,为了保证系统稳定性,我们对API调用频率有一定限制。普通开发者账号的限制为每分钟60次请求,企业账号为每分钟300次请求。如果您需要更高的调用频率,请联系我们的技术支持。

API返回错误码1003(Invalid signature),如何解决?

此错误表示签名验证失败,可能的原因包括:

  1. AppSecret错误
  2. 参数排序方式不正确(应按照参数名ASCII码从小到大排序)
  3. 参数值包含特殊字符,但未进行URL编码
  4. 生成签名的算法错误(应使用MD5)

建议使用我们提供的SDK来避免签名相关的问题。

如何生成机器唯一标识?

机器唯一标识(machine_code)用于绑定卡密和设备,应尽量确保其唯一性。生成方法:

  • Windows系统:可以使用CPU ID、硬盘序列号、主板序列号等信息的组合
  • MacOS系统:可以使用硬件UUID
  • Linux系统:可以使用机器ID(/etc/machine-id)
  • 手机设备:可以使用设备标识符(如Android的IMEI)

无论使用哪种方式,都应该对获取的信息进行哈希处理,以保证隐私安全。

安全相关问题

API通信是否安全?

是的,所有API请求都通过HTTPS协议进行加密传输,确保数据在传输过程中的安全。此外,每个请求都需要签名验证,防止请求被篡改或伪造。

如何防止API被盗用?

为防止API被盗用,建议采取以下措施:

  1. 妥善保管AppSecret,不要在客户端代码中明文存储
  2. 设置IP白名单,限制API调用的来源
  3. 定期更换AppSecret
  4. 监控API调用情况,发现异常及时处理

数据加密使用什么算法?

第六元素API使用以下加密算法:

  • 签名验证:MD5
  • 数据传输:TLS 1.2及以上版本
  • 数据存储:AES-256
  • 密码哈希:PBKDF2

这些算法是当前业界广泛认可的安全标准,能够有效保护您的数据安全。

技术支持

如果您在使用过程中遇到了文档中未提及的问题,或需要个性化的技术支持,请通过以下方式联系我们:

在线客服:工作日 9:00-18:00

电话:400-868-8989

问题反馈:WX:JensenKingWX

我们承诺在1个工作日内回复您的技术支持请求。对于企业客户,我们提供优先响应服务。

获取公告

获取应用公告和版本信息的接口。

应用公告

该接口用于获取应用的公告内容和版本信息。

接口地址: https://www.eoilmen.com/api.php?api=notice

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=notice&app=10000

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写notice
应用 app GET 填写后台应用APPID

返回参数说明:

名称 类型 说明
code String 返回状态
app_gg String 公告内容
version_info String 版本信息
返回示例
{
    "code": 200,
    "msg": {
        "app_gg": "欢迎使用极简云验证",
        "version_info":"测试软件版本信息或购买卡密链接地址内容"
    },
    "time": 1614687132,
    "check": "b331c50badb960d997e8f25a78ccb740"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

卡密解绑

用于解除卡密与设备的绑定关系。

卡密解绑

该接口用于解除卡密与设备的绑定关系,允许卡密在其他设备上使用。

接口地址: https://www.eoilmen.com/api.php?api=kmunmachine

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=kmunmachine&app=10000&kami=XXXX-XXXX-XXXX-XXXX&markcode=MACHINE_UNIQUE_ID

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写kmunmachine
应用 app GET 填写后台应用APPID
卡密 kami GET/POST 填写需要解绑的卡密
设备码 markcode GET/POST 填写当前设备的唯一标识
时间戳 t GET/POST 如果开启了[时间差效验]需提交此项
数据签名 sign GET/POST 如果开启了[数据签名]需提交此项

注意:卡密解绑可能会根据应用设置扣除一定的使用时长或次数。

返回参数说明:

名称 类型 说明
code String 返回状态
msg String 返回信息
返回示例
{
    "code": 200,
    "msg": "卡密解绑成功",
    "time": 1614689800,
    "check": "00e837c144a02a5ed3717647ee3f33da"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在
148 String 卡密为空
149 String 卡密不存在
151 String 卡密禁用
201 String 卡密解绑失败

获取文件

获取对应应用下的外链或变量参数。

获取外链

该接口用于获取对应应用下的外链或变量参数。如云端选择类型为<蓝奏云>则返回蓝奏云直链链接,解析直链失败则返回原链接,创建变量后客户端可通过id获取指定参数变量。

接口地址: https://www.eoilmen.com/api.php?api=getfile

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=getfile&app=10000

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写getfile
应用 app GET 填写后台应用APPID
文件ID id GET 填写则返回指定外链,不填则输出该应用下全部外链

返回参数说明:

名称 类型 说明
code String 返回状态
file_url String 外链地址(如云端选择类型为<蓝奏云>则返回蓝奏云直链链接,解析直链失败则返回原链接)
file_pwd String 文件提取码
date String 添加时间
state String 外链开关
返回示例
{
    "code": 200,
    "msg": [{
        "file_url":
        "https://uu.uuu8.vip/doc.php?act=getfile",
        "date": "2021-03-02 21:40:50",
        "state": "y"
    }],
    "time": 1614692463,
    "check": "7f5396bd94ea73c952a20294f3bcdd79"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

获取应用RC4秘钥

获取应用的RC4秘钥,用于数据加密。

获取RC4秘钥

该接口用于获取应用的RC4秘钥,用于客户端与服务端之间的数据加密通信。

接口地址: https://www.eoilmen.com/api.php?api=getrc4

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=getrc4&app=10000&appid=10000

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写getrc4
应用 app GET 填写后台应用APPID
应用 appid GET 填写后台应用APPID
时间戳 t GET/POST 如果开启了[时间差效验]需提交此项
数据签名 sign GET/POST 如果开启了[数据签名]需提交此项

返回参数说明:

名称 类型 说明
code String 返回状态
rc4key String rc4key秘钥
返回示例
{    
    "code":200,
    "msg":{"rc4key":"ukwFTT2Z9f510000"},
    "time":1715448842,
    "check":"274c1a60768f1cd3979d253e6c3674a9"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

一键开启rc4-2加密并返回RC4Key

一键开启应用的rc4-2加密功能并返回RC4加密密钥。

一键开启rc4-2加密

该接口用于快速开启应用的rc4-2加密功能并返回RC4Key,方便开发者实现安全通信。

接口地址: https://www.eoilmen.com/api.php?api=openrc42

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=openrc42&app=10000

注意:该接口将自动开启应用的rc4-2加密功能,并返回对应的RC4Key。请确保在调用前已了解rc4-2加密的使用方法。

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写openrc42
应用 app GET 填写后台应用APPID

返回参数说明:

名称 类型 说明
code String 返回状态
msg String 返回信息
rc4key String RC4加密密钥
返回示例
{    
    "code": 200,
    "msg": "rc4-2加密已开启",
    "rc4key": "Zx7y9LpK3mN8qR5t",
    "time": 1715476932,
    "check": "b8d4c6e2a0f9d7c5b3a1e8f6d4c2b0a9"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

用户管理

增加减少软件用户余额及积分,修改会员时间戳或到期时间戳。

用户数据修改

该接口用于修改用户的各项数据,包括积分、余额、会员时间、昵称等信息。

接口地址: https://www.eoilmen.com/api.php?api=userlogonrf

返回格式: JSON

请求方式: GET/POST

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=userlogonrf&app=10000&user=123456&name=昵称&actdo=0&fen=10&rmb=20&vip=999999&ban=888888

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写userlogonrf
应用 app GET 填写后台应用APPID
用户账号 user GET/POST 填写用户账号
用户昵称 name GET/POST 用户昵称(不填写则不修改)
积分余额增减 actdo GET/POST 填写0增加,填写1减少(不填写则默认增加)
积分 fen GET/POST 增减账户积分(不填写则不修改,填写需大于0)
余额 rmb GET/POST 增减账户余额(不填写则不修改,填写需大于0)
会员 vip GET/POST VIP时间戳(不填写则不修改,填写需大于0)
到期时间 ban GET/POST 禁用到期时间戳(不填写则不修改,填写需大于0)
用户头像 pic GET/POST 用户头像(不填写则不修改)
时间戳 t GET/POST 如果开启了[时间差效验]需提交此项
数据签名 sign GET/POST 如果开启了[数据签名]需提交此项

返回参数说明:

名称 类型 说明
code String 返回状态
user String 账号
qq String QQ
name String 昵称
vip String VIP时间戳
ban String 禁用到期时间戳
ban_notice String 到期通知
fen String 积分
rmb String 金额
pic String 头像
返回示例
{   
    "code":200,
    "msg":{
           "user":"123456",
           "qq":"123456",
           "name":"这个人没有名字!",
           "vip":"99999",
           "ban":"88888",
           "fen":"1275",
           "rmb":"1400.00"
           },
    "time":1715617022,
    "check":"0adc4cb131625602a9e216d448779103"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

一键对接模板

自动配置生成对接示例并提供下载。

自动生成对接示例

该接口用于自动生成应用的对接示例代码,支持多种编程语言,方便开发者快速集成。

接口地址: https://www.eoilmen.com/api.php?api=automaticsample

返回格式: JSON

请求方式: GET

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=automaticsample&app=10000&lang=php

该接口会根据您的应用配置自动生成适合的对接代码,包括所有必要的API调用、加密处理和签名验证。

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写automaticsample
应用 app GET 填写后台应用APPID
编程语言 lang GET 可选值:php、java、csharp、python、js、flutter,默认为php
时间戳 t GET 如果开启了[时间差效验]需提交此项
数据签名 sign GET 如果开启了[数据签名]需提交此项

返回参数说明:

名称 类型 说明
code String 返回状态
msg String 返回信息
sample_code String 生成的示例代码
download_url String 示例代码下载地址
language String 生成的代码语言
返回示例
{
    "code": 200,
    "msg": "生成成功",
    "data": {
        "sample_code": "<?php\n// 自动生成的PHP对接示例代码\n// 应用ID: 10000\n// 生成时间: 2023-08-15 14:30:25\n\n// 请求参数\n$app = '10000';\n$user = 'test_user';\n$pass = 'test_password';\n\n// API地址\n$api_url = 'https://www.eoilmen.com/api.php';\n\n// 登录请求\n$login_url = $api_url . '?api=login&app=' . $app . '&user=' . $user . '&pass=' . $pass;\n\n// 发送请求\n$response = file_get_contents($login_url);\n$result = json_decode($response, true);\n\n// 处理结果\nif ($result['code'] == 200) {\n    echo '登录成功,用户信息:';\n    print_r($result['msg']);\n} else {\n    echo '登录失败,错误信息:';\n    print_r($result);\n}\n?>",
        "download_url": "https://www.eoilmen.com/download.php?id=10000&type=sample&lang=php",
        "language": "php"
    },
    "time": 1715631452,
    "check": "85d6a3c2e9f178b4d0a1c2e9f3b7d5a8"
}

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在
301 String 不支持的编程语言

卡密心跳

持续验证卡密有效性的心跳机制。

卡密心跳验证

该接口用于定期验证卡密的有效性,需要客户端定时请求,保持卡密活跃状态。建议每隔5-10分钟请求一次。

接口地址: https://www.eoilmen.com/api.php?api=heartbeat

返回格式: JSON

请求方式: GET/POST

请求示例:

请求URL示例
https://www.eoilmen.com/api.php?api=heartbeat&app=10000&kami=卡密46&markcode=123

注意:心跳机制需要在用户登录后开始,定期发送请求以验证卡密有效性。如果长时间未发送心跳请求,可能需要重新登录重置心跳状态。

请求参数说明:

名称 变量 必填 类型 说明
接口 api GET 填写heartbeat
应用 app GET 填写后台应用APPID
卡密 kami GET/POST 填写提交的卡密
设备码 markcode GET/POST 如果开启了[验证设备]需提交此项
退出心跳 quit GET/POST 如果提交参数quit则是退出卡密心跳
时间戳 t GET/POST 如果开启了[时间差效验]需提交此项
数据签名 sign GET/POST 如果开启了[数据签名]需提交此项

返回参数说明:

名称 类型 说明
code String 返回状态
message String 请求成功信息
expires String 过期日期
expires_ts String 过期时间戳

返回示例:

心跳正常
{
    "code":200,
    "msg":{"message":"心跳请求成功",
          "expires":"2099-12-30 00:00:00",
          "expires_ts":"4102243200"},
    "time":1732956359,
    "check":"e39989088b888e54c8c5923258e4a66c"
}
心跳超时
{
    "code": 107,
    "msg": "心跳失败,请重新登录,重置心跳",
    "time": 1704028850,
    "check": "a83e3b51d1b1c1633fcca53a9b220b03"
}
卡密到期
{
    "code": 201,
    "msg": "心跳请求失败,卡密已到期",
    "time": 1704023240,
    "check": "a58c19f1d60ab53a6e51dd41efff58b1"
}
未登录卡密
{ 
    "code": 112,
    "msg": "心跳失败,请先登录卡密注册心跳",
    "time": 1705140355,
    "check": "00ec3bfa0b472ea190384891f5a0b6c0" 
}
退出心跳
{ 
    "code": 200,
    "msg": "已退出卡密心跳",
    "time": 1705140373,
    "check": "9811b0b3d01c9708b8f7943ebdd2559c"
}

心跳特殊错误代码:

名称 类型 说明
107 String 心跳失败,请重新登录,重置心跳
112 String 心跳失败,请先登录卡密注册心跳
149 String 心跳请求失败,卡密不存在
150 String 心跳请求失败,卡密已登录其它设备
151 String 心跳请求失败,卡密已被禁用
169 String 心跳请求失败,ip验证失败
201 String 心跳请求失败,卡密已到期

错误码格式说明:

名称 类型 说明
101 String 应用不存在
102 String 应用已关闭
171 String 接口维护中
172 String 接口未添加或不存在

sign计算

了解API的数据签名计算方式。

Sign签名计算方式

使用sign签名可以保证API调用的安全性,防止请求参数被篡改。sign签名的计算规则如下:

算法提示 - 不管是什么接口,只需要将所有post的数据进行拼接,然后加上:&APPKEY 取MD5值即是Sign签名参数

卡密登录示例

代码示例(调用精易模块)
Sign = 校验_取md5_文本("kami=" + 编辑框_kami.内容 + "&markcode=" + 校验_取md5_文本(系统_取CPU型号() + 系统_取CPU制造商() + 系统_取CPU序列号(), 真) + "&t=" + 到文本(时间_到时间戳(, 真, 真)) + "&" + APPKEY, 真))

普通注册示例

代码示例
Sign = 取MD5值("user=" + 编辑框_user.内容 + "&password=" + 编辑框_mima.内容 + "&inv=" + 编辑框_inv.内容 + "&markcode=" + 机器码 + "&t=" + 取现行时间戳(2) + "&" + APPKEY)

生成步骤详解

  1. 获取机器码:通过CPU信息生成唯一的设备标识
  2. 拼接参数:将所有请求参数按照 参数名=参数值 的格式拼接,参数之间用 & 连接
  3. 添加时间戳:添加 &t=当前时间戳 防止重放攻击
  4. 添加密钥:在拼接好的参数字符串末尾添加 &APPKEY
  5. 计算MD5:对最终的字符串计算MD5值,得到sign签名

PHP示例代码

PHP计算Sign
<?php
function calculateSign($params, $appKey) {
    // 参数排序
    ksort($params);
    
    // 拼接参数
    $string = '';
    foreach ($params as $key => $value) {
        $string .= $key . '=' . $value . '&';
    }
    
    // 添加APPKEY
    $string .= $appKey;
    
    // 计算MD5
    return md5($string);
}

// 请求参数
$params = array(
    'api' => 'login',
    'app' => '10000',
    'user' => 'testuser',
    'pass' => 'password123',
    'markcode' => md5('CPU信息'),
    't' => time()
);

$appKey = 'your_app_key_here';
$sign = calculateSign($params, $appKey);

echo "计算得到的sign: " . $sign;
?>

Java示例代码

Java计算Sign
import java.math.BigInteger;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Map;
import java.util.TreeMap;

public class SignCalculator {
    
    public static String calculateSign(Map params, String appKey) throws NoSuchAlgorithmException {
        // 参数排序
        Map sortedParams = new TreeMap<>(params);
        
        // 拼接参数
        StringBuilder sb = new StringBuilder();
        for (Map.Entry entry : sortedParams.entrySet()) {
            sb.append(entry.getKey()).append("=").append(entry.getValue()).append("&");
        }
        
        // 添加APPKEY
        sb.append(appKey);
        
        // 计算MD5
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] digest = md.digest(sb.toString().getBytes());
        
        // 转换为十六进制字符串
        BigInteger bigInt = new BigInteger(1, digest);
        return String.format("%032x", bigInt);
    }
    
    public static void main(String[] args) {
        try {
            // 请求参数
            Map params = new TreeMap<>();
            params.put("api", "login");
            params.put("app", "10000");
            params.put("user", "testuser");
            params.put("pass", "password123");
            params.put("markcode", "CPU信息的MD5值");
            params.put("t", String.valueOf(System.currentTimeMillis() / 1000));
            
            String appKey = "your_app_key_here";
            String sign = calculateSign(params, appKey);
            
            System.out.println("计算得到的sign: " + sign);
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
    }
}

Python示例代码

Python计算Sign
import hashlib
import time
import collections

def calculate_sign(params, app_key):
    # 参数排序
    sorted_params = collections.OrderedDict(sorted(params.items()))
    
    # 拼接参数
    string = ""
    for key, value in sorted_params.items():
        string += f"{key}={value}&"
    
    # 添加APPKEY
    string += app_key
    
    # 计算MD5
    return hashlib.md5(string.encode('utf-8')).hexdigest()

# 请求参数
params = {
    'api': 'login',
    'app': '10000',
    'user': 'testuser',
    'pass': 'password123',
    'markcode': hashlib.md5('CPU信息'.encode('utf-8')).hexdigest(),
    't': str(int(time.time()))
}

app_key = 'your_app_key_here'
sign = calculate_sign(params, app_key)

print(f"计算得到的sign: {sign}")

温馨提示:您在对接API时,一定要确保APPKEY的安全性,不要将其暴露在客户端代码中,建议在服务器端计算sign,并通过安全的渠道传递给客户端。如果必须在客户端计算sign,请做好代码加密和混淆工作。