Hopp til hovedinnhold
API Spesifikasjon v2.3

Autentisering API

Gjennom et standardisert GET-spørringsgrensesnitt henter moonpacket aktivt 'belønningsregler' og 'brukerattributter' fra serveren din. Alle logiske vurderinger håndteres av moonpacket.

Interaksjonslogikk

Hele prosessen er delt inn i to faser: 'Oppsettsfase' og 'Kjørefase'. moonpacket vil sende forespørsel til ditt API ved å bruke GET-metoden:

moonpacket Klient / Server Logisk Match (Lokal) Regler lagret: Level >= 10 Brukerstatus: Level = 12 ✓ Distribuer Belønninger ⚙️ Din API GET /check ?user_id=... 1. Under oppsett: Hentereglene (GET) 2. Under krav: Spør Status (GET) JSON data
← 左右滑動查看流程 →
Trinn Én

Fase 1: Definere Regler (Konfigurasjon)

Utløsende hendelse: når URL-en er fylt ut i 'Kravsbetingelser Oppsett' og sendt inn

GET GET
RET Returnerer regeldefinisjonsobjektet med operatører (gt, eq, lt...)
Trinn To

Fase 2: Valider bruker (kjøring)

Utløsende hendelse: når brukeren prøver å kreve Red Packet

GET ?user_id=...
RET Returnerer den faktiske attributtverdien til den spesifikke brukeren (ren verdi eller streng)

💡 Støttede operatører: `eq` (lik, støtter streng/tall), `gt` (større enn), `gte` (større enn eller lik), `lt` (mindre enn), `lte` (mindre enn eller lik). Verdier for ikke-`eq` operatører må være tall.

Applikasjonsscenarier

🎮

GameFi-integrasjon

Definer regelen `level >= 10`. Når brukeren krever, sjekker moonpacket brukerens attributter, hvis `level: 12` så er det godkjent.

🆔

Identitetsbinding belønning

Definer regelen `kyc == true`. moonpacket sjekker brukerens status, og hvis det returnerer `kyc: true`, blir belønningene fordelt.

🚀

Blacklist-filtrering

Definer regelen `is_blacklist == false`. Hvis API-en returnerer `is_blacklist: true`, blir kravet avvist.

Kommunikasjons eksempel (GET forespørsel)

Mode A 1. Definer regler (Oppsett)

Når innstillingene sendes inn, returner JSON som inneholder operatører.

Be om innhold
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
Tilbakefør resultat (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Spørsmål Status (Kjøre)

Når brukeren krever, returner rene verdier eller strenger.

Be om innhold
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
Tilbakefør resultat (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

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

🔐 Sikkerhetsvalidering

For å sikre ektheten av forespørslene, vil moonpacket inkludere en signatur i headeren. Du kan se på koden til høyre for validering:

Nødvendige overskrifter

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

Signaturalgoritme

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

⚠️ Merk

  • Timeout: Sørg for at API-en kan returnere resultater innen 3 sekunder.
  • Format: Vennligst følg strengt JSON-strukturen, ellers vil det føre til parsingfeil.

Statuskoder

Statuskode Status Beskrivelse
200 OK Forespørsel vellykket
400 Bad Request Feil i forespørselparameter (f.eks. format feil).
401 Unauthorized Autorisasjonsheader mangler eller nøkkel er ugyldig.
403 Forbidden IP-restriksjon eller uautorisert tilgang til ressursen.
404 Not Found Bruker-ID eksisterer ikke (for forespørsel om brukerstatus).
500 Server Error Intern serverfeil.

⚠️ Ansvarsfraskrivelse for tredjeparts-API

Integrasjonsmetodene for tredjepartsplattformer nevnt i dette dokumentet er kun til referanse. Utviklere bør konsultere og følge den nyeste offisielle utviklerdokumentasjonen til plattformen.