API开发文档

逆影网络验证系统 - 开发者接入指南

安全验证

提供强大的卡密验证和用户认证功能,保护您的软件免受盗版侵害。

  • 设备绑定验证
  • 时长控制管理
  • 实时状态监控

自动更新

智能版本管理系统,支持软件自动更新和版本控制。

  • 版本检查对比
  • 增量更新下载
  • 强制更新控制

API基础信息

API基础地址: https://server.wnydz.com/api

智能域名识别: 系统会自动识别您当前的域名和协议,无需手动配置API地址。

当前检测到: 协议: https | 域名: server.wnydz.com

身份验证

为确保API安全,所有请求都需要包含有效的软件密钥和签名验证。

请求头设置

Content-Type: application/json
X-Software-Key: your_software_key
X-Timestamp: 1640995200
X-Signature: generated_signature

签名生成算法

// PHP示例
$timestamp = time();
$data = json_encode($request_data);
$string = $software_key . $timestamp . $data;
$signature = md5($string);

卡密验证

POST https://server.wnydz.com/api/card/verify

请求参数

参数名 类型 必填 说明
card_key string 必填 卡密
machine_code string 必填 机器码
software_version string 可选 软件版本号

请求示例

{
    "card_key": "ABCD-1234-EFGH-5678",
    "machine_code": "unique_machine_identifier",
    "software_version": "1.0.0"
}

响应示例

{
    "status": "success",
    "message": "验证成功",
    "data": {
        "valid": true,
        "expire_time": "2024-12-31 23:59:59",
        "remaining_days": 365,
        "user_info": {
            "user_id": "user123",
            "bind_machine": true
        }
    }
}

版本检查

GET https://server.wnydz.com/api/version/check/{software_id}

请求参数

参数名 类型 必填 说明
software_id string 必填 软件ID(URL参数)
current_version string 必填 当前版本号

响应示例

{
    "status": "success",
    "data": {
        "has_update": true,
        "latest_version": "2.0.0",
        "update_required": true,
        "update_info": {
            "version": "2.0.0",
            "release_notes": "修复重要安全漏洞",
            "download_url": "https://server.wnydz.com/api/update/download/xxx",
            "file_size": 10485760,
            "file_hash": "md5_hash_value"
        }
    }
}

SDK下载

我们提供多种编程语言的SDK,帮助您快速集成验证功能。

Python SDK

适用于Python 3.6+

下载SDK

Java SDK

适用于Java 8+

下载SDK

C# SDK

适用于.NET Core 3.1+

下载SDK

代码示例

Python示例

import requests
import json
import hashlib
import time

class CardVerifier:
    def __init__(self, software_key, api_base="https://server.wnydz.com/api"):
        self.software_key = software_key
        self.api_base = api_base
    
    def verify_card(self, card_key, machine_code):
        url = f"{self.api_base}/card/verify"
        timestamp = int(time.time())
        
        data = {
            "card_key": card_key,
            "machine_code": machine_code,
            "software_version": "1.0.0"
        }
        
        # 生成签名
        data_str = json.dumps(data, separators=(',', ':'))
        sign_string = self.software_key + str(timestamp) + data_str
        signature = hashlib.md5(sign_string.encode()).hexdigest()
        
        headers = {
            "Content-Type": "application/json",
            "X-Software-Key": self.software_key,
            "X-Timestamp": str(timestamp),
            "X-Signature": signature
        }
        
        response = requests.post(url, json=data, headers=headers)
        return response.json()

# 使用示例
verifier = CardVerifier("your_software_key")
result = verifier.verify_card("ABCD-1234-EFGH-5678", "machine123")
print(result)

C#示例

using System;
using System.Text;
using System.Security.Cryptography;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;

public class CardVerifier
{
    private readonly string _softwareKey;
    private readonly string _apiBase;
    private readonly HttpClient _httpClient;

    public CardVerifier(string softwareKey, string apiBase = "https://server.wnydz.com/api")
    {
        _softwareKey = softwareKey;
        _apiBase = apiBase;
        _httpClient = new HttpClient();
    }

    public async Task VerifyCardAsync(string cardKey, string machineCode)
    {
        var url = $"{_apiBase}/card/verify";
        var timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds();

        var data = new
        {
            card_key = cardKey,
            machine_code = machineCode,
            software_version = "1.0.0"
        };

        var dataJson = JsonConvert.SerializeObject(data);
        var signString = _softwareKey + timestamp + dataJson;
        var signature = GetMD5Hash(signString);

        _httpClient.DefaultRequestHeaders.Clear();
        _httpClient.DefaultRequestHeaders.Add("X-Software-Key", _softwareKey);
        _httpClient.DefaultRequestHeaders.Add("X-Timestamp", timestamp.ToString());
        _httpClient.DefaultRequestHeaders.Add("X-Signature", signature);

        var content = new StringContent(dataJson, Encoding.UTF8, "application/json");
        var response = await _httpClient.PostAsync(url, content);
        
        return await response.Content.ReadAsStringAsync();
    }

    private string GetMD5Hash(string input)
    {
        using (var md5 = MD5.Create())
        {
            var inputBytes = Encoding.UTF8.GetBytes(input);
            var hashBytes = md5.ComputeHash(inputBytes);
            return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
        }
    }
}

错误代码说明

错误代码 HTTP状态 说明 解决方案
40001 400 参数缺失或格式错误 检查请求参数是否完整且格式正确
40101 401 软件密钥无效 检查软件密钥是否正确
40102 401 签名验证失败 检查签名生成算法是否正确
40103 401 时间戳过期 确保时间戳为当前时间的30秒内
40301 403 卡密不存在 检查卡密是否正确
40302 403 卡密已过期 使用有效期内的卡密
40303 403 设备绑定冲突 在绑定的设备上使用或解绑后重新绑定
50001 500 服务器内部错误 联系技术支持

技术支持

开发文档

详细的API文档和集成指南

查看完整文档

在线客服

实时技术支持和问题解答

联系客服

邮件支持

发送邮件获取专业技术支持

support@example.com

开发者社区

与其他开发者交流经验

加入社区

服务时间

在线客服:
周一至周五: 9:00-18:00
周六至周日: 10:00-16:00
邮件支持:
24小时接收邮件
1个工作日内回复