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:
Fase 1: Definieer Regels (Configuratie)
⚡ Triggerende gebeurtenis: wanneer de URL is ingevuld in de 'Instelling van Claimvoorwaarden' en ingediend
Fase 2: Valideer Gebruiker (Runtime)
⚡ Triggering event: wanneer de gebruiker probeert de Red Packet te claimen
💡 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.
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. Vraagstatus (Runtime)
Wanneer de gebruiker claimt, retourneer pure waarden of strings.
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
}
} Gegevensstructuurdefinitie (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;
};
} 🔐 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
Ondertekeningsalgoritme
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.