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示例
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 | 服务器内部错误 | 联系技术支持 |
技术支持
服务时间
在线客服:
周一至周五: 9:00-18:00
周六至周日: 10:00-16:00
周一至周五: 9:00-18:00
周六至周日: 10:00-16:00
邮件支持:
24小时接收邮件
1个工作日内回复
24小时接收邮件
1个工作日内回复