Přeskočit na hlavní obsah
API Specifikace v2.3

API pro autentizaci

Pomocí standardizovaného rozhraní pro dotazy GET moonpacket aktivně získává 'pravidla odměn' a 'atributy uživatelů' z vašeho serveru. Všechny logické úvahy jsou zpracovávány moonpacket.

Logika interakce

Celý proces je rozdělen do dvou fází: 'Fáze nastavení' a 'Fáze spuštění'. moonpacket zašle požadavky na vaše API pomocí metody GET:

moonpacket Klient / Server Logická shoda (místní) Pravidla uložená: Level >= 10 Stav uživatele: Level = 12 ✓ Rozdělit odměny ⚙️ Váš API GET /check ?user_id=... 1. Během nastavení: Pravidla pro získávání (GET) 2. Během uplatnění: Dotaz na stav (GET) JSON data
← 左右滑動查看流程 →
Krok jedna

Fáze 1: definice pravidel (konfigurace)

Spouštěcí okamžik: když je zadán URL do „Nastavení podmínek“, a je odeslán

GET GET
RET vrátí objekt definice pravidel se znakem (gt, eq, lt...)
Krok Dva

Fáze 2: Ověření uživatele (Runtime)

Spouštěcí podmínka: Uživatel se pokouší vybrat Red Packet

GET ?user_id=...
RET vrátí skutečné hodnoty atributů tohoto konkrétního uživatele (čisté číselné nebo řetězcové)

💡 Podporovaní operátoři: `eq` (rovná se, podporuje řetězce/čísla), `gt` (větší než), `gte` (větší než nebo rovno), `lt` (menší než), `lte` (menší než nebo rovno). Hodnoty pro ne-`eq` operátory musí být čísla.

Scénáře aplikace

🎮

Integrace GameFi

Definujte pravidlo `level >= 10`. Když uživatel požádá, moonpacket zkontroluje atributy uživatele, pokud `level: 12`, pak je schváleno.

🆔

Odměna za vázání identity

Definujte pravidlo `kyc == true`. moonpacket kontroluje stav uživatele, a pokud se vrátí `kyc: true`, jsou poté rozděleny odměny.

🚀

Filtrace černé listiny

Definujte pravidlo `is_blacklist == false`. Pokud API vrátí `is_blacklist: true`, odmítněte výběr.

Příklad komunikace (GET požadavek)

Mode A 1. Definovat pravidla (Nastavení)

Při odesílání nastavení vraťte JSON obsahující operátory.

Obsah žádosti
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
Vrátit výsledek (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Stav dotazu (běh)

Když uživatel uplatní nárok, vraťte čisté hodnoty nebo řetězce.

Obsah žádosti
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
Vrátit výsledek (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

Definice datové struktury (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;
  };
}

🔐 Ověření zabezpečení

Aby byla zajištěna autenticita požadavků, moonpacket zahrne do hlavičky podpis. Můžete se podívat na kód napravo pro validaci:

Potřebné hlavičky

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

Algoritmus podpisu

Podpis = HMAC_SHA256(tajný_kľúč, tělo + časová známka + 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);

⚠️ Poznámka

  • Časový limit: Zajistěte, aby API mohlo vracet výsledky během 3 sekund.
  • Formát: Prosím striktně dodržujte strukturu JSON, jinak dojde k chybě při analýze.

Stavové kódy

Kód stavu Stav Popis
200 OK žádost byla úspěšná
400 Bad Request došlo k chybě v parametrech žádosti (např. nesprávný formát).
401 Unauthorized Chybí autorizace hlavička nebo klíč je neplatný.
403 Forbidden IP omezení nebo nemáte oprávnění k přístupu k tomuto zdroji.
404 Not Found ID uživatele neexistuje (pro scénář dotazování na stav uživatele).
500 Server Error Chyba interního serveru.

⚠️ Zpráva o odpovědnosti za API třetích stran

Metody integrace pro platformy třetích stran uvedené v tomto dokumentu jsou pouze orientační. Vývojáři by měli konzultovat a dodržovat nejnovější oficiální dokumentaci pro vývojáře dané platformy.