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:
Tetikleyici olay: 'Talep Koşulları Kurulumu'na URL doldurulduğunda ve gönderildiğinde
⚡ GET ?user_id=...
Aşama 2: Kullanıcıyı Doğrula (Çalışma Zamanı)
⚡ Olay tetikleme: kullanıcı Red Packet'i talep etmeye çalıştığında
💡 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.
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 {
"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.
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 {
"data": {
"level": 100,
"status": "active",
"is_blacklist": false
}
} Veri Yapısı Tanımı (TypeScript)
// 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
İmza Algoritması
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.