Skip to content

C++ SDK

T3 网络验证 C++ SDK,面向对象封装,内置 RSA 实现,不依赖 OpenSSL。

适用场景

  • C++ 桌面应用、命令行工具
  • 游戏客户端、高性能应用
  • Android NDK(参见 Android JNI

无外部依赖

SDK 自带 RSA、Base64、MD5 实现,不依赖 OpenSSL。仅需系统 HTTP 库(libcurl)。

初始化

方式一:Base64 自定义编码集

cpp
#include "t3sdk.h"

T3Verify verify;

verify.init("登录调用码", "公告调用码", "版本号调用码", "心跳调用码",
    "你的APPKEY", "你的Base64编码集");

方式二:RSA 算法 + HEX 编码 推荐

cpp
#include "t3sdk.h"

T3Verify verify;

verify.initRSA("登录调用码", "公告调用码", "版本号调用码", "心跳调用码",
    "你的APPKEY",
    "-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----");

后台配置

使用 SDK 前,请先完成 后台快速配置。您也可以在后台「SDK 下载与注入」页面一键自动配置并下载已注入配置信息的 SDK,无需手动填写。

返回值类型

SDK 使用结构体返回结果,常用类型:

类型用途关键字段
T3Result通用返回success, msg, error
T3LoginResult登录success, end_time, statecode, amount
T3NoticeResult公告success, notice
T3VersionResult版本success, version
T3QueryResult查询卡密success, end_time, available
T3UpdateResult检查更新success, hasUpdate, ver, upurl, uplog
T3VariableResult远程变量success, value
T3CoreResult核心数据success, core
T3OnlineResult在线数量success, count
T3CloudDocResult云文档success, content
T3AppSignResult签名比对success, match

推荐调用顺序

API 方法参考

获取机器码

cpp
std::string machineCode = getMachineCode();
std::cout << "机器码: " << machineCode << std::endl;

获取程序公告 getNotice()

cpp
auto notice = verify.getNotice();
if (notice.success) {
    std::cout << "公告: " << notice.notice << std::endl;
} else {
    std::cout << "失败: " << notice.error << std::endl;
}

返回值T3NoticeResult

字段类型说明
successbool是否成功
noticestring公告内容
errorstring错误信息(失败时)

获取最新版本号 getLatestVersion()

cpp
auto version = verify.getLatestVersion();
if (version.success) {
    std::cout << "最新版本: " << version.version << std::endl;
}

返回值T3VersionResult

字段类型说明
successbool是否成功
versionstring最新版本号
errorstring错误信息

检查更新 checkUpdate(ver)

cpp
auto update = verify.checkUpdate("1000");
if (update.success && update.hasUpdate) {
    std::cout << "需要更新到: " << update.ver << std::endl;
    std::cout << "更新公告: " << update.uplog << std::endl;
    std::cout << "下载地址: " << update.upurl << std::endl;
} else {
    std::cout << "已是最新版本" << std::endl;
}

返回值T3UpdateResult

字段类型说明
successbool是否成功
hasUpdatebool是否有更新
verstring最新版本号
uplogstring更新公告
upurlstring下载地址
errorstring错误信息

单码卡密登录 login(kami, imei)

cpp
auto login = verify.login(card, machineCode);
if (login.success) {
    std::cout << "登录成功! 到期时间: " << login.end_time << std::endl;
    std::cout << "状态码: " << login.statecode << std::endl;
} else {
    std::cout << "登录失败: " << login.error << std::endl;
}

返回值T3LoginResult

字段类型说明
successbool是否成功
end_timestring到期时间
statecodestring状态码(心跳验证用)
amountstring卡密时长
errorstring错误信息

单码心跳验证 heartbeat(kami, statecode)

cpp
auto hb = verify.heartbeat(card, login.statecode);
if (hb.success) {
    std::cout << "心跳验证成功" << std::endl;
} else {
    std::cout << "心跳失败: " << hb.error << std::endl;
}

返回值T3Result

字段类型说明
successbool是否成功
msgstring成功消息
errorstring错误信息

查询卡密信息 queryKami(kami)

cpp
auto query = verify.queryKami(card);
if (query.success) {
    std::cout << "到期时间: " << query.end_time << std::endl;
    std::cout << "剩余时间: " << query.available << "秒" << std::endl;
}

返回值T3QueryResult

字段类型说明
successbool是否成功
end_timestring到期时间
availablestring剩余可用时间(秒)
errorstring错误信息

用户注册 userRegister(user, pass, email)

cpp
auto reg = verify.userRegister("username", "password", "email@example.com");
if (reg.success) {
    std::cout << "注册成功" << std::endl;
}

用户登录 userLogin(user, pass, imei)

cpp
auto ulogin = verify.userLogin("username", "password", machineCode);
if (ulogin.success) {
    std::cout << "用户登录成功! 到期时间: " << ulogin.end_time << std::endl;
    // ulogin.statecode 用于用户心跳
}

返回值:同 T3LoginResult


用户心跳验证 userHeartbeat(user, pass, statecode)

cpp
auto uhb = verify.userHeartbeat("username", "password", ulogin.statecode);
if (uhb.success) {
    std::cout << "用户心跳成功" << std::endl;
}

用户充值 recharge(user, card)

cpp
auto rch = verify.recharge("username", "充值卡密");
if (rch.success) std::cout << "充值成功" << std::endl;

用户绑定QQ bindQQ(user, pass, openid, accessToken)

cpp
auto bind = verify.bindQQ("username", "password", "openid", "access_token");

用户QQ登录 qqLogin(openid, accessToken)

cpp
auto qqResult = verify.qqLogin("openid", "access_token");
if (qqResult.success) {
    std::cout << "QQ登录成功! 到期: " << qqResult.end_time << std::endl;
}

返回值:同 T3LoginResult


解绑设备 unbindKami / unbindUser

cpp
// 单码解绑
auto unbind1 = verify.unbindKami(card, machineCode);
std::cout << (unbind1.success ? "  " + unbind1.msg : "  失败: " + unbind1.error) << std::endl;

// 用户解绑
auto unbind2 = verify.unbindUser("username", "password", machineCode);
std::cout << (unbind2.success ? "  " + unbind2.msg : "  失败: " + unbind2.error) << std::endl;

IP 解绑 ipUnbindKami / ipUnbindUser

cpp
// 单码 IP 解绑
auto ipub1 = verify.ipUnbindKami(card);
std::cout << (ipub1.success ? "  " + ipub1.msg : "  失败: " + ipub1.error) << std::endl;

// 用户 IP 解绑
auto ipub2 = verify.ipUnbindUser("username", "password");
std::cout << (ipub2.success ? "  " + ipub2.msg : "  失败: " + ipub2.error) << std::endl;

获取远程变量 getVariableByKami / getVariableByUser

cpp
// 通过卡密获取
auto var1 = verify.getVariableByKami(card, "变量ID", "变量名称");
if (var1.success) std::cout << "变量值: " << var1.value << std::endl;

// 通过用户获取
auto var2 = verify.getVariableByUser("username", "password", "变量ID", "变量名称");

返回值T3VariableResult

字段类型说明
successbool是否成功
valuestring变量值
errorstring错误信息

修改远程变量 modifyVariableByKami / modifyVariableByUser

cpp
// 通过卡密修改
auto mv1 = verify.modifyVariableByKami(card, "变量ID", "新内容");

// 通过用户修改
auto mv2 = verify.modifyVariableByUser("username", "password", "变量ID", "新内容");

修改核心数据 modifyCoreByKami / modifyCoreByUser

cpp
// 通过卡密修改
auto mc1 = verify.modifyCoreByKami(card, "核心数据");

// 通过用户修改
auto mc2 = verify.modifyCoreByUser("username", "password", "核心数据");

获取核心数据 getCoreByKami / getCoreByUser

cpp
// 通过卡密获取
auto core1 = verify.getCoreByKami(card);
if (core1.success) std::cout << "核心数据: " << core1.core << std::endl;

// 通过用户获取
auto core2 = verify.getCoreByUser("username", "password");
if (core2.success) std::cout << "核心数据: " << core2.core << std::endl;

返回值T3CoreResult

字段类型说明
successbool是否成功
corestring核心数据内容
errorstring错误信息

获取在线数量 getOnlineKamiCount / getOnlineUserCount

cpp
// 获取在线卡密数量
auto ok = verify.getOnlineKamiCount();
if (ok.success) std::cout << "在线卡密数: " << ok.count << std::endl;

// 获取在线用户数量
auto ou = verify.getOnlineUserCount();
if (ou.success) std::cout << "在线用户数: " << ou.count << std::endl;

返回值T3OnlineResult

字段类型说明
successbool是否成功
countint在线数量
errorstring错误信息

获取云文档 getCloudDoc(token)

cpp
auto doc = verify.getCloudDoc("云文档Token");
if (doc.success) std::cout << "内容: " << doc.content << std::endl;

返回值T3CloudDocResult

字段类型说明
successbool是否成功
contentstring文档内容
errorstring错误信息

应用签名比对 appSign(autograph)

cpp
auto sign = verify.appSign("应用签名");
if (sign.success) {
    std::cout << "  " << sign.msg << std::endl;
    std::cout << "  后台签名: " << sign.autograph << std::endl;
} else {
    std::cout << "  失败: " << sign.error << std::endl;
}

用户修改密码 changePassword(user, oldpass, newpass)

cpp
auto cp = verify.changePassword("username", "旧密码", "新密码");
if (cp.success) std::cout << "密码修改成功" << std::endl;

禁用 disableKami / disableUser

cpp
// 禁用卡密
auto dis1 = verify.disableKami(card);

// 禁用用户
auto dis2 = verify.disableUser("username", "password");

用户注销 userCancel(user, pass)

cpp
auto cancel = verify.userCancel("username", "password");

编译

bash
g++ -o t3demo main.cpp t3sdk.cpp -lcurl -lstdc++
./t3demo

关于 Android 平台

如需在 Android NDK 环境下使用,请参考 Android JNI SDK 文档。

T3 网络验证 WebAPI 开发文档