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:
Phase 1: Regeln definieren (Konfiguration)
⚡ Auslösemoment: Wenn die URL in die 'Bedingungen zum Einfordern' eingegeben und übermittelt wird
Stufe 2: Benutzervalidierung (Laufzeit)
⚡ Auslösemoment: Benutzer versucht, ein Red Packet zu beanspruchen
💡 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.
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 {
"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.
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 {
"data": {
"level": 100,
"status": "active",
"is_blacklist": false
}
} Datenstrukturdefinition (TypeScript)
// 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
Signaturalgorithmus
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.