心跳接口

卡密在线心跳

接口状态:正常
返回接口列表

接口信息

接口地址
https://verify.rokig.fun/api.php?api=heartbeat
返回格式
json
请求方式
json
请求示例
https://api.example.com

请求参数说明

名称变量必填类型说明
接口 api GET 填写heartbeat
应用 app GET 填写后台应用APPID
卡密 kami 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 接口未添加或不存在

示例代码

C++ 示例代码
// R验云网络验证 - 卡密心跳 接口调用示例(C++)
// 编译:g++ -o heartbeat heartbeat.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 = "heartbeat";
    std::string url = "https://verify.rokig.fun/api.php?api=" + api + "&app=" + appid;

    // 请求参数(是=必填,否=选填)
    std::string params = "kami=是&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;
}