Spring til hovedindhold
API-specifikation v2.3

Autentificerings-API

Gennem et standardiseret GET forespørgselsinterface henter moonpacket aktivt 'belønningsregler' og 'brugerattributter' fra din server. Alle logiske vurderinger håndteres af moonpacket.

Interaktionslogik

Hele processen er opdelt i to faser: 'Opsætningsfase' og 'Kørselfase'. moonpacket vil sende anmodninger til din API ved hjælp af GET-metoden:

moonpacket Klient / Server Logisk Match (Lokal) Regler gemt: Level >= 10 Brugerstatus: Level = 12 ✓ Uddel Belønninger ⚙️ Din API GET /check ?user_id=... 1. Under opsætning: Hentningsregler (GET) 2. Under krav: Spørg om status (GET) JSON-data
← 左右滑動查看流程 →
Trin Et

Fase 1: Definer regler (Configuration)

Udløser tidspunkt: Når ‘modtagelsesbetingelser’ udfyldes med URL og indsendes

GET GET
RET Returnerer regler med operatorer (gt, eq, lt...)
Trin To

Trin 2: Verificering af bruger (Runtime)

Udløser tidspunkt: Brugeren forsøger at indløse Red Packet

GET ?user_id=...
RET Returnerer den faktiske attributværdi (ren værdi eller streng) for den specifikke bruger.

💡 Understøttede operatører: `eq` (lig med, understøtter strenge/numre), `gt` (større end), `gte` (større end eller lig med), `lt` (mindre end), `lte` (mindre end eller lig med). Værdier for ikke-`eq` operatører skal være tal.

Applikationsscenarier

🎮

GameFi integration

Definer reglen `level >= 10`. Når brugeren indløser, kontrollerer moonpacket brugerens attributter, hvis `level: 12` så er det godkendt.

🆔

Identitetsbindende belønning

Definer reglen `kyc == true`. moonpacket tjekker brugerens status, og hvis den returnerer `kyc: true`, så bliver belønningerne distribueret.

🚀

Blacklist filtrering

Definer regler `is_blacklist == false`. Hvis API'en returnerer `is_blacklist: true`, så nægtes indløsning.

Kommunikation Eksempel (GET Anmodning)

Mode A 1. Definer regler (Opsætning)

Når indstillingerne indsendes, returner JSON, der indeholder operatører.

Anmodningsindhold
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
Returnerer resultat (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Spørgsmål Status (Kørselsperiode)

Når brugeren gør krav på, returner rene værdier eller strenge.

Anmodningsindhold
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
Returnerer resultat (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

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

🔐 Sikkerhedsvalidering

For at sikre ægtheden af anmodninger vil moonpacket inkludere en signatur i Header. Du kan referere til koden til højre 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);

⚠️ Bemærk

  • Timeout: Sørg for, at API'en kan returnere resultater indenfor 3 sekunder.
  • Format: Venligst overhold JSON-strukturen strengt, ellers vil det føre til parsingfejl.

Statuskoder

Statuskode Status Beskrivelse
200 OK Anmodning succesfuld
400 Bad Request Anmodningsparameterfejl (f.eks. forkert format).
401 Unauthorized Autorisation Header mangler eller Key er ugyldig.
403 Forbidden IP begrænsning eller uretmæssig adgang til ressourcen.
404 Not Found Bruger ID eksisterer ikke (for at undersøge brugerens status).
500 Server Error Serverintern fejl.

⚠️ Tredjeparts API-fraskrivelse

Integrationsmetoderne for tredjepartsplatforme nævnt i dette dokument er kun til reference. Udviklere bør konsultere og overholde den nyeste officielle udviklerdokumentation for platformen.