Autentificerings-API
Gennem et standardiseret GET forespørgselsinterface henter moonpacket aktivt 'belønningsregler' og 'brugerattributter' fra din server. Alle logiske vurderinger håndteres af moonpacket.
Interaktionslogik
Hele processen er opdelt i to faser: 'Opsætningsfase' og 'Kørselfase'. moonpacket vil sende anmodninger til din API ved hjælp af GET-metoden:
Fase 1: Definer regler (Configuration)
⚡ Udløser tidspunkt: Når ‘modtagelsesbetingelser’ udfyldes med URL og indsendes
Trin 2: Verificering af bruger (Runtime)
⚡ Udløser tidspunkt: Brugeren forsøger at indløse Red Packet
💡 Understøttede operatører: `eq` (lig med, understøtter strenge/numre), `gt` (større end), `gte` (større end eller lig med), `lt` (mindre end), `lte` (mindre end eller lig med). Værdier for ikke-`eq` operatører skal være tal.
Applikationsscenarier
GameFi integration
Definer reglen `level >= 10`. Når brugeren indløser, kontrollerer moonpacket brugerens attributter, hvis `level: 12` så er det godkendt.
Identitetsbindende belønning
Definer reglen `kyc == true`. moonpacket tjekker brugerens status, og hvis den returnerer `kyc: true`, så bliver belønningerne distribueret.
Blacklist filtrering
Definer regler `is_blacklist == false`. Hvis API'en returnerer `is_blacklist: true`, så nægtes indløsning.
Kommunikation Eksempel (GET Anmodning)
Mode A 1. Definer regler (Opsætning)
Når indstillingerne indsendes, returner JSON, der indeholder 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ørgsmål Status (Kørselsperiode)
Når brugeren gør krav på, returner rene værdier eller strenge.
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
}
} Datastukturdefinition (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;
};
} 🔐 Sikkerhedsvalidering
For at sikre ægtheden af anmodninger vil moonpacket inkludere en signatur i Header. Du kan referere til koden til højre 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); ⚠️ Bemærk
- ● Timeout: Sørg for, at API'en kan returnere resultater indenfor 3 sekunder.
- ● Format: Venligst overhold JSON-strukturen strengt, ellers vil det føre til parsingfejl.
Statuskoder
| Statuskode | Status | Beskrivelse |
|---|---|---|
| 200 | OK | Anmodning succesfuld |
| 400 | Bad Request | Anmodningsparameterfejl (f.eks. forkert format). |
| 401 | Unauthorized | Autorisation Header mangler eller Key er ugyldig. |
| 403 | Forbidden | IP begrænsning eller uretmæssig adgang til ressourcen. |
| 404 | Not Found | Bruger ID eksisterer ikke (for at undersøge brugerens status). |
| 500 | Server Error | Serverintern fejl. |
⚠️ Tredjeparts API-fraskrivelse
Integrationsmetoderne for tredjepartsplatforme nævnt i dette dokument er kun til reference. Udviklere bør konsultere og overholde den nyeste officielle udviklerdokumentation for platformen.