Hoppa till huvudmaterialet
API-specifikation v2.3

Autentisering API

Genom ett standardiserat GET-frågegränssnitt hämtar moonpacket aktivt 'belöningsregler' och 'användarattribut' från din server. Alla logiska bedömningar hanteras av moonpacket.

Interaktionslogik

Hela processen är indelad i två faser: 'Inställningsfas' och 'Körfas'. moonpacket kommer att skicka förfrågningar till ditt API med GET-metoden:

moonpacket Klient / Server Logisk match (lokal) Regler sparade: Level >= 10 Användarstatus: Level = 12 ✓ Dela ut belöningar ⚙️ Din API GET /check ?user_id=... 1. Under installation: Återtagsregler (GET) 2. Under krav: Fråga status (GET) JSON data
← 左右滑動查看流程 →
Steg Ett

Fas 1: Definiera regler (konfiguration)

Utlösande händelse: när URL:en fylls i 'Inställningar för ansökningsvillkor' och skickas

GET GET
RET Returnerar regeldefinitionens objekt med operatörer (gt, eq, lt...)
Steg Två

Fas 2: Validera användare (Körning)

Utlösande händelse: när användaren försöker göra anspråk på Red Packet

GET ?user_id=...
RET Returnerar det verkliga attributvärdet för den specifika användaren (rent värde eller sträng)

💡 Stödda operatörer: `eq` (lika med, stöder strängar/nummer), `gt` (större än), `gte` (större än eller lika med), `lt` (mindre än), `lte` (mindre än eller lika med). Värden för icke-`eq` operatörer måste vara nummer.

Användningsscenarier

🎮

GameFi-integration

Definiera regeln `level >= 10`. När användaren hämtar, kontrollerar moonpacket användarens attribut, om `level: 12` så godkänns det.

🆔

Identitetsbundsningsbelöning

Definiera regeln `kyc == true`. moonpacket kontrollerar användarstatusen, och om den returnerar `kyc: true`, så distribueras belöningarna.

🚀

Blacklist-filtering

Definiera regel `is_blacklist == false`. Om API:et returnerar `is_blacklist: true`, avvisas anspråket.

Exempel på kommunikation (GET-förfrågan)

Mode A 1. Definiera regler (Inställning)

När inställningar skickas, returnera JSON som innehåller operatörer.

Begär innehåll
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
Återvända resultat (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Frågestatus (Körning)

När användaren gör anspråk, returnera rena värden eller strängar.

Begär innehåll
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
Återvända resultat (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

Datainstruktionsdefinition (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;
  };
}

🔐 Säkerhetsvalidering

För att säkerställa äktheten av förfrågningar kommer moonpacket att inkludera en signatur i Headern. Du kan hänvisa till koden till höger för validering:

Nödvändiga rubriker

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

Signaturalgoritm

Signatur = HMAC_SHA256(secret, body + tidsstämpel + 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);

⚠️ Observera

  • Tidsgräns: Se till att API:et kan returnera resultat inom 3 sekunder.
  • Format: Vänligen följ noggrant JSON-strukturen, annars kan det leda till parserfel.

Statuskoder

Statuskod Status Beskrivning
200 OK Begäran lyckades
400 Bad Request Fel på begärningsparameter (t.ex. formatfel).
401 Unauthorized Behörighetsheader saknas eller nyckeln är ogiltig.
403 Forbidden IP-restriktion eller obehörig åtkomst till resursen.
404 Not Found Användar-ID finns inte (för att fråga användarstatus-scenarier).
500 Server Error Intern serverfel.

⚠️ Tredjeparts API-disclaimer

Integrationsmetoderna för tredjepartsplattformar som nämns i detta dokument är endast av referenskaraktär. Utvecklare bör konsultera och följa den senaste officiella utvecklardokumentationen för plattformen.