Overslaan naar hoofdinhoud
API Specificatie v2.3

Authenticatie API

Via een gestandaardiseerde GET-query-interface haalt moonpacket actief 'beloningsregels' en 'gebruikersattributen' van jouw server op. Alle logische oordelen worden afgehandeld door moonpacket.

Interactie Logica

Het gehele proces is verdeeld in twee fasen: 'Instelling Fase' en 'Runtime Fase'. moonpacket zal verzoeken naar uw API sturen met behulp van de GET-methode:

moonpacket Klant / Server Logische Match (Lokaal) Regels Opgeslagen: Level >= 10 Gebruikersstatus: Level = 12 ✓ Beloningen Verdelen ⚙️ Uw API GET /check ?user_id=... 1. Tijdens de installatie: Ophaalregels (GET) 2. Tijdens Claim: Controleer Status (GET) JSON-data
← 左右滑動查看流程 →
Stap één

Fase 1: Definieer Regels (Configuratie)

Triggerende gebeurtenis: wanneer de URL is ingevuld in de 'Instelling van Claimvoorwaarden' en ingediend

GET GET
RET Geeft het regeldefinitie-object met operatoren (gt, eq, lt...) terug
Stap Twee

Fase 2: Valideer Gebruiker (Runtime)

Triggering event: wanneer de gebruiker probeert de Red Packet te claimen

GET ?user_id=...
RET Geeft de werkelijke attribuutwaarde van die specifieke gebruiker terug (heldere waarde of string)

💡 Ondersteunde Operatoren: `eq` (gelijk aan, ondersteunt strings/getallen), `gt` (groter dan), `gte` (groter dan of gelijk aan), `lt` (kleiner dan), `lte` (kleiner dan of gelijk aan). Waarden voor niet-`eq` operatoren moeten getallen zijn.

Toepassingsscenario's

🎮

GameFi Integratie

Definieer de regel `level >= 10`. Wanneer de gebruiker een claim indient, controleert moonpacket de attributen van de gebruiker; als `level: 12`, dan wordt het goedgekeurd.

🆔

Identiteitsbinding Beloning

Definieer de regel `kyc == true`. moonpacket controleert de gebruikersstatus, en als het `kyc: true` retourneert, worden de beloningen verdeeld.

🚀

Blacklist Filtering

Definieer regel `is_blacklist == false`. Als de API `is_blacklist: true` retourneert, wordt de claim afgewezen.

Communicatie Voorbeeld (GET Verzoek)

Mode A 1. Definieer Regels (Instellen)

Bij het indienen van instellingen, retourneer JSON met daarin de operators.

Inhoud aanvragen
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
Resultaat teruggeven (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Vraagstatus (Runtime)

Wanneer de gebruiker claimt, retourneer pure waarden of strings.

Inhoud aanvragen
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
Resultaat teruggeven (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

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

🔐 Beveiligingsvalidatie

Om de authenticiteit van verzoeken te waarborgen, zal moonpacket een handtekening in de Header opnemen. U kunt de code rechts raadplegen voor validatie:

Noodzakelijke headers

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

Ondertekeningsalgoritme

Handtekening = 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);

⚠️ Opmerking

  • Time-out: Zorg ervoor dat de API resultaten kan teruggeven binnen 3 seconden.
  • Formaat: Gelieve strikt de JSON-structuur te volgen, anders leidt dit tot een parsingfout.

Statuscodes

Statuscode Status Beschrijving
200 OK Aanvraag succesvol
400 Bad Request Fout in aanvraagparameter (bijvoorbeeld onjuist formaat).
401 Unauthorized Autorisatieheader ontbreekt of sleutel is ongeldig.
403 Forbidden IP-beperking of ongeoorloofde toegang tot de bron.
404 Not Found Gebruikers-ID bestaat niet (voor het opvragen van gebruikersstatusscenario's).
500 Server Error Interne serverfout.

⚠️ Derdepartij API Vrijwaring

De integratiemethoden voor derdenplatformen die in dit document worden genoemd, zijn alleen ter referentie. Ontwikkelaars dienen de nieuwste officiële documentatie voor ontwikkelaars van het platform te raadplegen en zich eraan te houden.