Zu главный Inhalt überspringen
API-Spezifikation v2.3

Authentifizierungs-API

Durch eine standardisierte GET-Abfrage-Schnittstelle ruft moonpacket aktiv 'Belohnungsregeln' und 'Benutzerattribute' von Ihrem Server ab. Alle logischen Entscheidungen werden von moonpacket verarbeitet.

Interaktionslogik

Der gesamte Prozess ist in zwei Phasen unterteilt: 'Einrichtungsphase' und 'Laufzeitphase'. moonpacket wird Anfragen an Ihre API unter Verwendung der GET-Methode senden:

moonpacket Client / Server Logische Übereinstimmung (Lokal) Regeln gespeichert: Level >= 10 Benutzerstatus: Level = 12 ✓ Belohnungen verteilen ⚙️ Ihre API GET /check ?user_id=... 1. Während der Einrichtung: Abrufregeln (GET) 2. Während der Abholung: Status abfragen (GET) JSON-Daten
← 左右滑動查看流程 →
Schritt Eins

Phase 1: Regeln definieren (Konfiguration)

Auslösemoment: Wenn die URL in die 'Bedingungen zum Einfordern' eingegeben und übermittelt wird

GET GET
RET Gibt Regeln mit Operatoren (gt, eq, lt...) zurück
Schritt Zwei

Stufe 2: Benutzervalidierung (Laufzeit)

Auslösemoment: Benutzer versucht, ein Red Packet zu beanspruchen

GET ?user_id=...
RET Gibt den tatsächlichen Attributwert (reine Zahl oder String) des spezifischen Benutzers zurück

💡 Unterstützte Operatoren: `eq` (gleich, unterstützt Zeichenfolgen/Zahlen), `gt` (größer als), `gte` (größer als oder gleich), `lt` (kleiner als), `lte` (kleiner als oder gleich). Werte für nicht-`eq` Operatoren müssen Zahlen sein.

Anwendungsszenarien

🎮

Integration von GameFi

Definieren Sie die Regel `level >= 10`. Wenn der Benutzer beansprucht, prüft moonpacket die Attribute des Benutzers. Wenn `level: 12` dann wird es genehmigt.

🆔

Identitätsbindungsbelohnung

Definieren Sie die Regel `kyc == true`. moonpacket überprüft den Benutzerstatus, und wenn er `kyc: true` zurückgibt, werden die Belohnungen verteilt.

🚀

Blacklist-Filterung

Regel definieren `is_blacklist == false`. Wenn die API `is_blacklist: true` zurückgibt, dann wird der Antrag abgelehnt.

Kommunikationsbeispiel (GET-Anfrage)

Mode A 1. Regeln festlegen (Einrichtung)

Beim Einreichen der Einstellungen geben Sie JSON mit den Operatoren zurück.

Inhaltsanfrage
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
Ergebnis zurückgeben (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Abfrage Status (Laufzeit)

Wenn der Benutzer beansprucht, geben Sie reine Werte oder Zeichenfolgen zurück.

Inhaltsanfrage
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
Ergebnis zurückgeben (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

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

🔐 Sicherheitsüberprüfung

Um die Echtheit der Anfragen sicherzustellen, wird moonpacket eine Signatur im Header einfügen. Sie können den Code rechts zur Validierung einsehen:

Notwendige Header

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

Signaturalgorithmus

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

⚠️ Hinweis

  • Zeitüberschreitung: Stellen Sie sicher, dass die API Ergebnisse innerhalb von 3 Sekunden zurückgeben kann.
  • Format: Bitte halten Sie sich strikt an die JSON-Struktur, da sonst ein Parsing-Fehler auftreten kann.

Statuscodes

Statuscode Status Beschreibung
200 OK Anfrage erfolgreich
400 Bad Request Parameterfehler (z. B. falsches Format).
401 Unauthorized Authorization Header fehlt oder Key ungültig.
403 Forbidden IP-Beschränkung oder unberechtigter Zugriff auf diese Ressource.
404 Not Found Benutzer-ID existiert nicht (für die Abfrage des Benutzerstatus).
500 Server Error Interner Serverfehler.

⚠️ Haftungsausschluss für Dritte API

Die Integrationsmethoden für Drittanbieterplattformen, die in diesem Dokument erwähnt werden, dienen nur zur Referenz. Entwickler sollten die neuesten offiziellen Entwicklerrichtlinien der Plattform konsultieren und einhalten.