Skip to content

C# SDK

T3 网络验证 C# SDK,纯 .NET 标准库实现,兼容 .NET Framework 4.6+ 和 .NET Core/.NET 5+。

适用场景

  • C# 桌面应用(WinForms / WPF / 控制台)
  • Unity 游戏

无额外依赖

SDK 仅使用 .NET 标准库(System.Net, System.Security.Cryptography),无需 NuGet 包。

初始化

方式一:Base64 自定义编码集

csharp
var verify = new T3Verify();
verify.Init(
    loginCode: "你的单码登录调用码",
    noticeCode: "你的公告调用码",
    versionCode: "你的版本号调用码",
    heartbeatCode: "你的心跳调用码",
    appkey: "你的程序APPKEY",
    base64Charset: "你的Base64自定义编码集"
);

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

csharp
var verify = new T3Verify();
verify.InitRsa(
    loginCode: "你的单码登录调用码",
    noticeCode: "你的公告调用码",
    versionCode: "你的版本号调用码",
    heartbeatCode: "你的心跳调用码",
    appkey: "你的程序APPKEY",
    rsaPublicKey: @"-----BEGIN PUBLIC KEY-----
你的RSA公钥
-----END PUBLIC KEY-----"
);

后台配置

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

推荐调用顺序

API 方法参考

获取机器码

csharp
string machineCode = T3Verify.GetMachineCode();

获取程序公告 GetNotice()

csharp
var result = verify.GetNotice();
if (result.Success)
    Console.WriteLine($"公告: {result.Notice}");
else
    Console.WriteLine($"失败: {result.Error}");

获取最新版本号 GetLatestVersion()

csharp
var result = verify.GetLatestVersion();
if (result.Success)
    Console.WriteLine($"最新版本: {result.Version}");

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

csharp
var result = verify.Login(card, machineCode);
if (result.Success) {
    Console.WriteLine($"到期时间: {result.EndTime}");
    string statecode = result.Statecode;  // 保存用于心跳
}

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

csharp
var result = verify.Heartbeat(card, statecode);
if (result.Success)
    Console.WriteLine("心跳验证成功");

检查更新 CheckUpdate(ver)

csharp
var result = verify.CheckUpdate("1000");
if (result.Success) {
    if (result.HasUpdate) {
        Console.WriteLine($"最新版本: {result.Ver}");
        Console.WriteLine($"更新公告: {result.Uplog}");
        Console.WriteLine($"下载地址: {result.Upurl}");
    }
}

查询卡密信息 QueryKami(kami)

csharp
var result = verify.QueryKami(card);
if (result.Success) {
    Console.WriteLine($"到期时间: {result.EndTime}");
    Console.WriteLine($"剩余时间: {result.Available}秒");
}

用户注册 UserRegister(user, password, email)

csharp
var result = verify.UserRegister("username", "password", "email@example.com");
if (result.Success)
    Console.WriteLine("注册成功");

用户登录 UserLogin(user, password, imei)

csharp
var result = verify.UserLogin("username", "password", machineCode);
if (result.Success) {
    Console.WriteLine($"到期时间: {result.EndTime}");
    string userStatecode = result.Statecode;
}

用户心跳验证 UserHeartbeat(user, password, statecode)

csharp
var result = verify.UserHeartbeat("username", "password", userStatecode);

用户充值 Recharge(user, card)

csharp
var result = verify.Recharge("username", "recharge_card");

用户绑定QQ BindQQ(user, password, openid, accessToken)

csharp
var result = verify.BindQQ("username", "password", "openid", "access_token");

用户QQ登录 QQLogin(openid, accessToken)

csharp
var result = verify.QQLogin("openid", "access_token");

解绑设备 UnbindKami / UnbindUser

csharp
// 单码解绑
var result = verify.UnbindKami(card, machineCode);
if (result.Success) Console.WriteLine($"  {result.Msg}");
else Console.WriteLine($"  失败: {result.Error}");
// 用户解绑
var result2 = verify.UnbindUser("username", "password", machineCode);
if (result2.Success) Console.WriteLine($"  {result2.Msg}");
else Console.WriteLine($"  失败: {result2.Error}");

IP 解绑 IpUnbindKami / IpUnbindUser

csharp
// 单码 IP 解绑
var result = verify.IpUnbindKami(card);
if (result.Success) Console.WriteLine($"  {result.Msg}");
else Console.WriteLine($"  失败: {result.Error}");
// 用户 IP 解绑
var result2 = verify.IpUnbindUser("username", "password");
if (result2.Success) Console.WriteLine($"  {result2.Msg}");
else Console.WriteLine($"  失败: {result2.Error}");

获取远程变量 GetVariableByKami / GetVariableByUser

csharp
// 通过卡密获取
var result = verify.GetVariableByKami(card, "变量ID", "变量名称");
if (result.Success) Console.WriteLine($"变量值: {result.Value}");
else Console.WriteLine($"失败: {result.Error}");
// 通过用户获取
var result2 = verify.GetVariableByUser("username", "password", "变量ID", "变量名称");
if (result2.Success) Console.WriteLine($"变量值: {result2.Value}");
else Console.WriteLine($"失败: {result2.Error}");

修改远程变量 ModifyVariableByKami / ModifyVariableByUser

csharp
// 通过卡密修改
var result = verify.ModifyVariableByKami(card, "变量ID", "新内容");
if (result.Success) Console.WriteLine($"  {result.Msg}");
else Console.WriteLine($"  失败: {result.Error}");
// 通过用户修改
var result2 = verify.ModifyVariableByUser("username", "password", "变量ID", "新内容");
if (result2.Success) Console.WriteLine($"  {result2.Msg}");
else Console.WriteLine($"  失败: {result2.Error}");

修改核心数据 ModifyCoreByKami / ModifyCoreByUser

csharp
// 通过卡密修改
var result = verify.ModifyCoreByKami(card, "核心数据");
if (result.Success) Console.WriteLine($"  {result.Msg}");
else Console.WriteLine($"  失败: {result.Error}");
// 通过用户修改
var result2 = verify.ModifyCoreByUser("username", "password", "核心数据");
if (result2.Success) Console.WriteLine($"  {result2.Msg}");
else Console.WriteLine($"  失败: {result2.Error}");

获取核心数据 GetCoreByKami / GetCoreByUser

csharp
// 通过卡密获取
var core1 = verify.GetCoreByKami(card);
if (core1.Success) Console.WriteLine($"核心数据: {core1.Core}");

// 通过用户获取
var core2 = verify.GetCoreByUser("username", "password");
if (core2.Success) Console.WriteLine($"核心数据: {core2.Core}");

返回值T3CoreResult

字段类型说明
Successbool是否成功
Corestring核心数据内容
Errorstring错误信息

获取在线数量 GetOnlineKamiCount / GetOnlineUserCount

csharp
// 获取在线卡密数量
var ok = verify.GetOnlineKamiCount();
if (ok.Success) Console.WriteLine($"在线卡密数: {ok.Count}");

// 获取在线用户数量
var ou = verify.GetOnlineUserCount();
if (ou.Success) Console.WriteLine($"在线用户数: {ou.Count}");

返回值T3OnlineResult

字段类型说明
Successbool是否成功
Countint在线数量
Errorstring错误信息

获取云文档 GetCloudDoc(token)

csharp
var result = verify.GetCloudDoc("云文档Token");
if (result.Success)
    Console.WriteLine($"内容: {result.Content}");

应用签名比对 AppSign(autograph)

csharp
var result = verify.AppSign("应用签名");
if (result.Success) {
    Console.WriteLine($"  {result.Msg}");
    Console.WriteLine($"  后台签名: {result.Autograph}");
} else {
    Console.WriteLine($"  失败: {result.Error}");
}

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

csharp
var result = verify.ChangePassword("username", "旧密码", "新密码");

禁用 DisableKami / DisableUser

csharp
// 禁用卡密
var result = verify.DisableKami(card);
if (result.Success) Console.WriteLine($"  {result.Msg}");
else Console.WriteLine($"  失败: {result.Error}");
// 禁用用户
var result2 = verify.DisableUser("username", "password");
if (result2.Success) Console.WriteLine($"  {result2.Msg}");
else Console.WriteLine($"  失败: {result2.Error}");

用户注销 UserCancel(user, password)

csharp
var result = verify.UserCancel("username", "password");

完整示例

csharp
using System;
using T3SDK;

class Program {
    static void Main(string[] args) {
        var verify = new T3Verify();
        verify.InitRsa(
            loginCode: "F2FA89AD46C050B2",
            noticeCode: "3512425FE75AE73A",
            versionCode: "F119CF1323743DBC",
            heartbeatCode: "B1D2263C3702177F",
            appkey: "5d116108006a454d538839ccff2d32f9",
            rsaPublicKey: @"-----BEGIN PUBLIC KEY-----
...
-----END PUBLIC KEY-----"
        );

        var card = "你的卡密";
        var machineCode = T3Verify.GetMachineCode();

        // 1. 获取公告
        var notice = verify.GetNotice();
        if (notice.Success) Console.WriteLine($"公告: {notice.Notice}");

        // 2. 获取版本号
        var ver = verify.GetLatestVersion();
        if (ver.Success) Console.WriteLine($"最新版本: {ver.Version}");

        // 3. 单码登录
        var login = verify.Login(card, machineCode);
        if (login.Success) {
            Console.WriteLine($"到期时间: {login.EndTime}");
            // 4. 心跳验证
            var hb = verify.Heartbeat(card, login.Statecode);
            if (hb.Success) Console.WriteLine("心跳验证成功");
        }
    }
}

编译运行

bash
# .NET CLI
dotnet run

# 或使用 csc 编译器
csc /out:T3Demo.exe T3Verify.cs Program.cs
T3Demo.exe

T3 网络验证 WebAPI 开发文档