> For the complete documentation index, see [llms.txt](https://qpapel.papelship.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://qpapel.papelship.com/documentation/tr-documentation/fonksiyonlar/anahtar-dogrulama/key-bilgisi.md).

# Key Bilgisi

Sunucudan bir lisans anahtarı hakkında JSON formatında detaylı bilgi alır.

{% hint style="info" %}
Bu fonksiyon, durum, oluşturulma/son kullanma tarihleri, HWID bağlantıları ve özel yönetici notları dahil olmak üzere kapsamlı lisans detayları için sunucuyu sorgular.
{% endhint %}

***

## İmza (Signature)

```cpp
char* GetLicenseInfo(QPCTX c, const char* licenseKey);
```

***

## Parametreler

| Parametre    | Tür           | Açıklama                                                     | Zorunlu |
| ------------ | ------------- | ------------------------------------------------------------ | ------- |
| `c`          | `QPCTX`       | İstemci bağlam (context) işaretçisi                          | Evet    |
| `licenseKey` | `const char*` | Sorgulanacak lisans anahtarı (Format: `XXXX-XXXX-XXXX-XXXX`) | Evet    |

***

## Dönüş Değeri

**Tür:** `char*`

| Değer                | Açıklama                                                    |
| -------------------- | ----------------------------------------------------------- |
| `Null olmayan char*` | Lisans bilgilerini içeren JSON dizesi                       |
| `nullptr`            | Lisans bulunamadı, bağlantı başarısız oldu veya hata oluştu |

{% hint style="warning" %}
Döndürülen JSON dizesi SDK tarafından dinamik olarak tahsis edilmiştir. Uygulamanızdaki bellek sızıntılarını önlemek için, işiniz bittiğinde `qpapel::FreeString(info)` çağrısıyla bu belleği **mutlaka** serbest bırakmanız gerekir.
{% endhint %}

***

## Temel Kullanım Örneği

```cpp
#include <iostream>
#include "qPapelLib.h"

// Sunucu JSON'undaki kaçış karakterli yeni satırları temizlemek için yardımcı fonksiyon
void PrintCleanInfo(std::string info) {
    size_t pos = 0;
    while ((pos = info.find("\\n", pos)) != std::string::npos) {
        info.replace(pos, 2, "\n");
        pos += 1;
    }
    std::cout << info << std::endl;
}

void FetchLicenseDetails(QPCTX ctx, const std::string& licenseKey) {
    char* info = qpapel::GetLicenseInfo(ctx, licenseKey.c_str());
    
    if (info != nullptr) {
        std::cout << "\n=== Lisans Bilgileri ===" << std::endl;
        PrintCleanInfo(info);
        std::cout << "========================" << std::endl;
        
        // KRİTİK: Tahsis edilen dize tamponunu serbest bırakın
        qpapel::FreeString(info);
    } else {
        char* err = qpapel::GetLastStatus(ctx);
        std::cerr << "Lisans detayları alınamadı: " << (err ? err : "Bilinmeyen Hata") << std::endl;
        if (err) qpapel::FreeString(err);
    }
}
```

***

## Yanıt JSON Şeması

Fonksiyon düz veya yapılandırılmış bir JSON dize gösterimi döndürür:

```json
{
  "license_key": "XXXX-XXXX-XXXX-XXXX",
  "status": "active",
  "created_at": "2026-01-15T10:30:00Z",
  "expires_at": "2027-01-15T10:30:00Z",
  "hwid_bound": "ABC123DEF456...",
  "max_devices": 1,
  "current_devices": 1,
  "user_email": "user@example.com",
  "note": "Müşteri #12345",
  "product_name": "Premium Loader",
  "tier": "premium"
}
```

***

## JSON Yanıtını Ayrıştırma (C++)

### 1. Manuel Ayrıştırma (Basit Alt Dize Arama)

```cpp
char* info = qpapel::GetLicenseInfo(ctx, licenseKey.c_str());
if (info != nullptr) {
    std::string infoStr(info);
    
    if (infoStr.find("\"status\":\"active\"") != std::string::npos) {
        std::cout << "Lisans aktif." << std::endl;
    }
    qpapel::FreeString(info);
}
```

### 2. nlohmann/json Kütüphanesi ile Kullanım (Modern C++)

```cpp
#include <nlohmann/json.hpp>

void ParseLicenseWithJsonLib(QPCTX ctx, const std::string& licenseKey) {
    char* info = qpapel::GetLicenseInfo(ctx, licenseKey.c_str());
    if (info != nullptr) {
        auto json = nlohmann::json::parse(info);
        
        std::string status = json["status"];
        int maxDevices = json["max_devices"];
        
        std::cout << "Lisans Durumu: " << status << " (Maks. Cihaz: " << maxDevices << ")" << std::endl;
        
        qpapel::FreeString(info);
    }
}
```

***

## Web Paneli Yönetimi

Lisans detayları [papelship.com](https://papelship.com/) adresindeki panelden gerçek zamanlı olarak yönetilebilir:

1. **Süre Uzatma**: Anahtara ek süre ekleyin.
2. **HWID Sıfırlama**: Lisans anahtarının bağını çözerek yeni bir cihazda/donanımda çalışmasına izin verin.
3. **Durum Değiştirme**: İstemci kullanımını sonlandırmak için anahtarları anında Askıya Alın veya Etkinleştirin.
