API de Autentificare
Printr-o interfață standardizată de interogare GET, moonpacket preia activ 'regulile de recompensă' și 'atributele utilizatorului' de la serverul dumneavoastră. Toate judecățile logice sunt gestionate de moonpacket.
Logica interacțiunii
Întregul proces este împărțit în două faze: 'Faza de Configurare' și 'Faza de Execuție'. moonpacket va trimite cereri către API-ul tău folosind metoda GET:
Faza 1: Definirea Regulilor (Configurație)
⚡ Eveniment declanșator: când URL-ul este completat în 'Configurarea condițiilor de revendicare' și trimis
Faza 2: Validarea Utilizatorului (Runtime)
⚡ Declanșarea evenimentului: când utilizatorul încearcă să revendice Red Packet
💡 Operatori suportati: `eq` (egal, suportă șiruri/numerice), `gt` (mai mare decât), `gte` (mai mare decât sau egal cu), `lt` (mai mic decât), `lte` (mai mic decât sau egal cu). Valorile pentru operatorii non-`eq` trebuie să fie numere.
Scenarii de Aplicație
Integrarea GameFi
Definiți regula `level >= 10`. Când utilizatorul revendică, moonpacket verifică atributele utilizatorului, dacă `level: 12` atunci este aprobat.
Recompensă pentru legarea identității
Define regula `kyc == true`. moonpacket verifică starea utilizatorului, iar dacă aceasta returnează `kyc: true`, atunci recompensele sunt distribuite.
Filtrarea listei negre
Definiți regula `is_blacklist == false`. Dacă API-ul returnează `is_blacklist: true`, revendicarea este respinsă.
Exemplu de comunicare (cerere GET)
Mode A 1. Definiți Regulile (Configurare)
Când trimiteți setările, returnați JSON care conține operatori.
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. Stare Cerere (Runtime)
Când utilizatorul revendică, returnați valori sau șiruri pure.
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
}
} Definiția structurii de date (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;
};
} 🔐 Validare de Securitate
Pentru a asigura autenticitatea cererilor, moonpacket va include o semnătură în antet. Puteți consulta codul din dreapta pentru validare:
Antete necesare
Algoritm de semnare
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); ⚠️ Notă
- ● Timeout: Asigurați-vă că API-ul poate returna rezultate în 3 secunde.
- ● Format: Vă rugăm să respectați cu strictețe structura JSON, altfel va duce la eșecul analizei.
Coduri de Status
| Cod de status | Stare | Descriere |
|---|---|---|
| 200 | OK | Cerere reușită |
| 400 | Bad Request | Eroare parametrului cererii (de exemplu, format incorect). |
| 401 | Unauthorized | Header-ul de autorizare lipsă sau cheia este invalidă. |
| 403 | Forbidden | Restricție IP sau acces neautorizat la resursă. |
| 404 | Not Found | ID Utilizator nu există (pentru scenariile de interogare a stării utilizatorului). |
| 500 | Server Error | Eroare internă a serverului. |
⚠️ Declarație de declinare a responsabilității API de terță parte
Metodele de integrare pentru platformele terțe menționate în acest document sunt doar pentru referință. Dezvoltatorii ar trebui să consulte și să respecte cea mai recentă documentație oficială pentru dezvoltatori a platformei.