Ugrás a fő tartalomra
API Specifikáció v2.3

Authentikációs API

A moonpacket egy szabványos GET kérési felületen keresztül aktívan lekéri a 'jutalom szabályokat' és a 'felhasználói attribútumokat' az ön szerveréről. Minden logikai döntést a moonpacket kezel.

Interakciós Logika

A teljes folyamat két fázisra oszlik: 'Beállítási Fázis' és 'Futási Fázis'. A moonpacket HTTP GET módszerrel kéréseket küld az API-jára:

moonpacket Kliens / Szerver Logikai Egyezés (Helyi) Szabályok mentve: Level >= 10 Felhasználói állapot: Level = 12 ✓ Jutalmak Kiosztása ⚙️ Az API-ja GET /check ?user_id=... 1. Telepítés során: Lekérdezési szabályok (GET) 2. Igénylés alatt: Állapot lekérdezése (GET) JSON adatok
← 左右滑動查看流程 →
Első lépés

1. szakasz: Szabályok meghatározása (Konfiguráció)

Kiváltó esemény: amikor az URL meg van adva az 'Igénylési Feltételek Beállítása' részben és beküldve

GET GET
RET Visszaadja a szabály definíciós objektumot operátorokkal (gt, eq, lt...)
Második lépés

Fázis 2: Felhasználó érvényesítése (Futásidő)

Indító esemény: amikor a felhasználó megpróbálja igényelni a Red Packet-et

GET ?user_id=...
RET Visszaadja a konkrét felhasználó valódi attribútumértékét (sima érték vagy szöveg)

💡 Támogatott operátorok: `eq` (egyenlő, támogatja a szövegeket/számokat), `gt` (nagyobb mint), `gte` (nagyobb vagy egyenlő), `lt` (kisebb mint), `lte` (kisebb vagy egyenlő). A nem `eq` operátorok értékei számoknak kell lenniük.

Alkalmazási Szenáriók

🎮

GameFi Integráció

Határozza meg a szabályt `level >= 10`. Amikor a felhasználó igényli, a moonpacket ellenőrzi a felhasználó attribútumait, ha `level: 12`, akkor jóváhagyva.

🆔

Azonosítói Kötés Jutalom

Határozza meg a szabályt `kyc == true`. A moonpacket ellenőrzi a felhasználó státuszát, és ha az `kyc: true` értéket ad vissza, akkor a jutalmak kiosztásra kerülnek.

🚀

Fekete lista szűrés

Határozd meg a szabályt `is_blacklist == false`. Ha az API `is_blacklist: true`-t ad vissza, az igénylés elutasításra kerül.

Kommunikációs példa (GET kérés)

Mode A 1. Szabályok meghatározása (Beállítás)

A beállítások benyújtásakor térjen vissza JSON formátumban az operátorokkal.

Kérés tartalma
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
Eredmény visszatérése (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Lekérdezés állapot (Futtatás)

Amikor a felhasználó érvényesíti, tiszta értékeket vagy szövegeket kell visszaadni.

Kérés tartalma
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
Eredmény visszatérése (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

Adatszerkezet Meghatározás (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;
  };
}

🔐 Biztonsági Ellenőrzés

A kérések hitelességének biztosítása érdekében a moonpacket aláírást fog tartalmazni a fejlécben. Az érvényesítéshez a jobb oldalon található kódra hivatkozhat:

Szükséges fejléc

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

Aláírási algoritmus

Aláírás = HMAC_SHA256(titkos, test + időbélyeg + 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);

⚠️ Megjegyzés

  • Időtúllépés: Győződjön meg róla, hogy az API 3 másodpercen belül képes eredményeket visszaadni.
  • Formátum: Kérjük, szigorúan kövesse a JSON struktúrát, különben elemzési hiba léphet fel.

Állapotkódok

Állapotkód Állapot Leírás
200 OK Kérés sikeres
400 Bad Request Kérés paraméter hiba (pl. hibás formátum).
401 Unauthorized Hiányzik az engedélyezési fejléc vagy a kulcs érvénytelen.
403 Forbidden IP korlátozás vagy jogosulatlan hozzáférés az erőforráshoz.
404 Not Found Felhasználói azonosító nem létezik (a felhasználói állapot lekérdezésének forgatókönyveihez).
500 Server Error Belső szerverhiba.

⚠️ Harmadik Feles API Felelősségkizárás

A harmadik fél platformok integrációs módszerei, amelyeket ebben a dokumentumban említünk, csak tájékoztató jellegűek. A fejlesztőknek konzultálniuk kell a platform legfrissebb hivatalos fejlesztői dokumentációjával, és ahhoz kell tartaniuk magukat.