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:
Fáze 1: definice pravidel (konfigurace)
⚡ Spouštěcí okamžik: když je zadán URL do „Nastavení podmínek“, a je odeslán
Fáze 2: Ověření uživatele (Runtime)
⚡ Spouštěcí podmínka: Uživatel se pokouší vybrat Red Packet
💡 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.
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. Stav dotazu (běh)
Když uživatel uplatní nárok, vraťte čisté hodnoty nebo řetězce.
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
}
} Definice datové struktury (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;
};
} 🔐 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
Algoritmus podpisu
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.