Ana içeriğe atla
API Teknik Şartnamesi v2.3

Kimlik Doğrulama API'si

Standart bir GET sorgu arayüzü üzerinden, moonpacket aktif bir şekilde 'ödül kuralları' ve 'kullanıcı özellikleri'ni sunucunuzdan alır. Tüm mantıksal değerlendirmeler moonpacket tarafından işlenir.

Etkileşim Mantığı

Tüm süreç iki aşamaya ayrılmıştır: 'Kurulum Aşaması' ve 'Çalışma Aşaması'. moonpacket, API'nize GET yöntemini kullanarak istekler gönderecektir:

moonpacket İstemci / Sunucu Mantıksal Eşleşme (Yerel) Kurallar Kaydedildi: Level >= 10 Kullanıcı Durumu: Level = 12 ✓ Ödülleri Dağıt ⚙️ API'niz GET /check ?user_id=... 1. Kurulum Sırasında: Alma Kuralları (GET) 2. Talep Sırasında: Durumu Sorgula (GET) JSON verisi
← 左右滑動查看流程 →
Adım Bir

Tetikleyici olay: 'Talep Koşulları Kurulumu'na URL doldurulduğunda ve gönderildiğinde

GET ?user_id=...

GET Operatörlerle (gt, eq, lt...) kural tanımayı döndürür
RET Aşama 1: Kuralları Tanımla (Yapılandırma)
Adım İki

Aşama 2: Kullanıcıyı Doğrula (Çalışma Zamanı)

Olay tetikleme: kullanıcı Red Packet'i talep etmeye çalıştığında

GET O belirli kullanıcının gerçek nitelik değerini döndürür (düz değer veya dize)
RET Bu belirli kullanıcının gerçek özellik değerini döndürür (sade değer veya dize)

💡 Desteklenen Operatörler: `eq` (eşit, metin/sayı destekler), `gt` (büyüktür), `gte` (büyüktür veya eşittir), `lt` (küçüktür), `lte` (küçüktür veya eşittir). `eq` operatörleri dışındaki değerler sayılar olmalıdır.

Uygulama Senaryoları

🎮

GameFi Entegrasyonu

Kurala `level >= 10` tanımlayın. Kullanıcı talep ettiğinde, moonpacket kullanıcının özelliklerini kontrol eder, eğer `level: 12` ise onaylanır.

🆔

Kimlik Bağlama Ödülü

`kyc == true` kuralını tanımlayın. moonpacket, kullanıcı durumunu kontrol eder ve eğer `kyc: true` dönerse, ödüller dağıtılır.

🚀

Blacklist Filtrasyonu

`is_blacklist == false` kuralını tanımla. API `is_blacklist: true` dönerse, talep reddedilir.

İletişim Örneği (GET İsteği)

Mode A 1. Kuralları Tanımla (Kurulum)

Ayarları gönderdiğinizde, operatörleri içeren JSON döndürün.

İçerik Talep Et
GET /check HTTP/1.1
Host: api.your-game.com
Content-Type: application/json
X-API-KEY: 1234567890
X-API-TIMESTAMP: 1698765432
X-API-NONCE: 987654
X-API-SIGNATURE: 5d41402abc4b2a76b9719d911017c592...

# No user_id = Get Rules
Sonucu Geri Dön (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Sorgu Durumu (Çalışma Süresi)

Kullanıcı talep ettiğinde, saf değerler veya dizgeler döndürün.

İçerik Talep Et
GET /check?user_id=666666666 HTTP/1.1
Host: api.your-game.com
Content-Type: application/json
X-API-KEY: 1234567890
X-API-TIMESTAMP: 1698765432
X-API-NONCE: 123456
X-API-SIGNATURE: a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6...

# With user_id = Get User Status
Sonucu Geri Dön (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

Veri Yapısı Tanımı (TypeScript)

types.d.ts
// Step 1: Rules Definition
interface RulesResponse {
  data: {
    [key: string]: {
      eq?: string | number | boolean;
      gt?: number;
      gte?: number;
      lt?: number;
      lte?: number;
    };
  };
}

// Step 2: User Status
interface UserStatusResponse {
  data: {
    [key: string]: string | number | boolean;
  };
}

🔐 Güvenlik Doğrulaması

İsteklerin doğruluğunu sağlamak için, moonpacket Başlıkta bir imza dahil edecektir. Doğrulama için sağdaki koda bakabilirsiniz:

Gerekli Başlıklar

X-API-KEY
X-API-TIMESTAMP
X-API-NONCE
X-API-SIGNATURE

İmza Algoritması

İmza = HMAC_SHA256(gizli, gövde + zaman damgası + nonce)
verify.ts
import crypto from "crypto";

// 1. Generate Signature
function generateSignature(
  apiSecret: string,
  body: object,
  timestamp: number,
  nonce?: string
) {
  const payload = JSON.stringify(body) + timestamp + (nonce || "");
  return crypto.createHmac("sha256", apiSecret).update(payload).digest("hex");
}

// Client Usage Example
const apiKey = "client123";
const apiSecret = "mysecretkey";
const body = { /* Query Params or Body */ }; 
const timestamp = Date.now();
const nonce = crypto.randomBytes(8).toString("hex");

const signature = generateSignature(apiSecret, body, timestamp, nonce);

console.log({ apiKey, timestamp, nonce, signature });

// 2. Verify Signature
function verifySignature(
  apiSecret: string,
  body: object,
  timestamp: number,
  nonce: string,
  signature: string
) {
  const expected = generateSignature(apiSecret, body, timestamp, nonce);
  return expected === signature;
}

// Verification Result
const isValid = verifySignature(apiSecret, body, timestamp, nonce, signature);
console.log("Is Valid:", isValid);

⚠️ Not

  • Zaman Aşımı: API'nin sonuçları 3 saniye içinde döndürebildiğinden emin olun.
  • Format: Lütfen JSON yapısına sıkı sıkıya bağlı kalın, aksi takdirde ayrıştırma hatası oluşacaktır.

Durum Kodları

Durum Kodu Durum Açıklama
200 OK İstek parametre hatası (örneğin, format hatalı).
400 Bad Request Yetkilendirme Başlığı eksik veya anahtar geçersiz.
401 Unauthorized IP kısıtlaması veya kaynağa yetkisiz erişim.
403 Forbidden Kullanıcı kimliği mevcut değil (kullanıcı durumu senaryoları için).
404 Not Found Sunucu hatası.
500 Server Error GET

⚠️ Üçüncü Taraf API Açıklaması

Bu belgede belirtilen üçüncü taraf platformlar için entegrasyon yöntemleri yalnızca referans içindir. Geliştiriciler, platformun en son resmi geliştirici belgelerine başvurmalı ve bunlara uymalıdır.