接口信息
接口地址
https://verify.rokig.fun/api.php?api=userheartbeat
返回格式
json请求方式
json请求示例
https://api.example.com
请求参数说明
| 名称 | 变量 | 必填 | 类型 | 说明 |
|---|---|---|---|---|
| 接口 | api | 是 | GET | 填写userheartbeat |
| 应用 | app | 是 | GET | 填写后台应用APPID |
| 账号 | user | 是 | GET/POST | 填写提交的账号 |
| 设备码 | markcode | 是 | GET/POST | 如果开启了[验证设备]需提交此项 如果提交参数 quit 则是退出卡密心跳 |
| 时间戳 | t | 否 | GET/POST | 如果开启了[时间差效验]需提交此项 |
| 数据签名 | sign | 否 | GET/POST | 如果开启了[数据签名]需提交此项 |
返回参数说明
| 名称 | 类型 | 说明 |
|---|---|---|
| code | String | 返回码,200表示成功 |
| message | String | 请求出错时的错误信息 |
| expires | String | 卡密过期时间,格式化的 |
| expires_ts | String | 过期时间戳,秒级,10位的 | time | String | 服务器当前时间戳,秒级,10位的 |
返回示例
返回示例
//心跳正常
{
"code": 200,
"msg": {
"message": "心跳请求成功",
"expires": "2024-01-07 19:26:34",
"expires_ts": "1704626794"
},
"time": 1704022708,
"check": "40c61b5c845ce218122a0e4309d6b72e"
}
<br>
//心跳时间戳超时
{
"code": 106,
"msg": "心跳超时卡密冻结,请重新登录,重置心跳解冻卡密",
"time": 1704028749,
"check": "dc3b764154ec4e7977c3d451947b05d4"
}
<br>
//心跳时间戳超时,需要重新登录卡密
{
"code": 107,
"msg": "心跳失败,请重新登录,重置心跳",
"time": 1704028850,
"check": "a83e3b51d1b1c1633fcca53a9b220b03"
}
<br>
//重新登录卡密,卡密解冻,心跳正常
{ "code": 200,
"msg": "心跳重置成功",
"time": 1704029174,
"check": "8562d8fd7d841b4271a9e420f0eb3a2c"
}
<br>
//心跳失败状态
{
"code": 201,
"msg": "心跳请求失败,卡密已到期",
"time": 1704023240,
"check": "a58c19f1d60ab53a6e51dd41efff58b1"
}
<br>
//如未登录卡密就开始心跳请求
{
code: 112,
msg: '心跳失败,请先登录卡密注册心跳',
time: 1705140355,
check: '00ec3bfa0b472ea190384891f5a0b6c0'
}
<br>
//当服务端在指定时间未收到心跳请求
{
code: 110,
msg: '心跳失败,未再有效时间内心跳请求',
time: 1705140355,
check: '00ec3bfa0b472ea190384891f5a0b6c0'
}
<br>
//退出卡密心跳请求
{
code: 200,
msg: '已退出卡密心跳',
time: 1705140373,
check: '9811b0b3d01c9708b8f7943ebdd2559c'
}
149,'心跳请求失败,卡密不存在'
150,'心跳请求失败,卡密已登录其它设备'
151,'心跳请求失败,卡密已被禁用'
169,'心跳请求失败,ip验证失败'
错误码参照
| 名称 | 类型 | 说明 |
|---|---|---|
| 101 | String | 应用不存在 |
| 102 | String | 应用已关闭 |
| 171 | String | 接口维护中 |
| 172 | String | 接口未添加或不存在 |
| 123 | 456 | 789 |
示例代码
C++ 示例代码
// R验云网络验证 - 用户心跳 接口调用示例(C++)
// 编译:g++ -o userheartbeat userheartbeat.cpp -lcurl
#include <iostream>
#include <string>
#include <curl/curl.h>
// 回调函数:接收服务器返回的数据
static size_t write_callback(void *contents, size_t size, size_t nmemb, void *userp) {
((std::string*)userp)->append((char*)contents, size * nmemb);
return size * nmemb;
}
int main() {
std::string appid = "你的APPID"; // 后台应用 APPID
std::string api = "userheartbeat";
std::string url = "https://verify.rokig.fun/api.php?api=" + api + "&app=" + appid;
// 请求参数(是=必填,否=选填)
std::string params = "user=是&markcode=是&t=否&sign=否";
// 发送请求
CURL *curl = curl_easy_init();
std::string response;
if (curl) {
std::string request_url = url + "&" + params;
curl_easy_setopt(curl, CURLOPT_URL, request_url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &response);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0L);
CURLcode res = curl_easy_perform(curl);
curl_easy_cleanup(curl);
if (res != CURLE_OK) {
std::cerr << "请求失败: " << curl_easy_strerror(res) << std::endl;
return 1;
}
}
// 输出返回结果(JSON,code 为 200 表示成功)
std::cout << "返回结果: " << response << std::endl;
return 0;
}