Autentisering API
Gjennom et standardisert GET-spørringsgrensesnitt henter moonpacket aktivt 'belønningsregler' og 'brukerattributter' fra serveren din. Alle logiske vurderinger håndteres av moonpacket.
Interaksjonslogikk
Hele prosessen er delt inn i to faser: 'Oppsettsfase' og 'Kjørefase'. moonpacket vil sende forespørsel til ditt API ved å bruke GET-metoden:
Fase 1: Definere Regler (Konfigurasjon)
⚡ Utløsende hendelse: når URL-en er fylt ut i 'Kravsbetingelser Oppsett' og sendt inn
Fase 2: Valider bruker (kjøring)
⚡ Utløsende hendelse: når brukeren prøver å kreve Red Packet
💡 Støttede operatører: `eq` (lik, støtter streng/tall), `gt` (større enn), `gte` (større enn eller lik), `lt` (mindre enn), `lte` (mindre enn eller lik). Verdier for ikke-`eq` operatører må være tall.
Applikasjonsscenarier
GameFi-integrasjon
Definer regelen `level >= 10`. Når brukeren krever, sjekker moonpacket brukerens attributter, hvis `level: 12` så er det godkjent.
Identitetsbinding belønning
Definer regelen `kyc == true`. moonpacket sjekker brukerens status, og hvis det returnerer `kyc: true`, blir belønningene fordelt.
Blacklist-filtrering
Definer regelen `is_blacklist == false`. Hvis API-en returnerer `is_blacklist: true`, blir kravet avvist.
Kommunikasjons eksempel (GET forespørsel)
Mode A 1. Definer regler (Oppsett)
Når innstillingene sendes inn, returner JSON som inneholder operatører.
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. Spørsmål Status (Kjøre)
Når brukeren krever, returner rene verdier eller strenger.
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
}
} Datastrukturdefinisjon (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;
};
} 🔐 Sikkerhetsvalidering
For å sikre ektheten av forespørslene, vil moonpacket inkludere en signatur i headeren. Du kan se på koden til høyre for validering:
Nødvendige overskrifter
Signaturalgoritme
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); ⚠️ Merk
- ● Timeout: Sørg for at API-en kan returnere resultater innen 3 sekunder.
- ● Format: Vennligst følg strengt JSON-strukturen, ellers vil det føre til parsingfeil.
Statuskoder
| Statuskode | Status | Beskrivelse |
|---|---|---|
| 200 | OK | Forespørsel vellykket |
| 400 | Bad Request | Feil i forespørselparameter (f.eks. format feil). |
| 401 | Unauthorized | Autorisasjonsheader mangler eller nøkkel er ugyldig. |
| 403 | Forbidden | IP-restriksjon eller uautorisert tilgang til ressursen. |
| 404 | Not Found | Bruker-ID eksisterer ikke (for forespørsel om brukerstatus). |
| 500 | Server Error | Intern serverfeil. |
⚠️ Ansvarsfraskrivelse for tredjeparts-API
Integrasjonsmetodene for tredjepartsplattformer nevnt i dette dokumentet er kun til referanse. Utviklere bør konsultere og følge den nyeste offisielle utviklerdokumentasjonen til plattformen.