API d'authentification
Grâce à une interface de requête GET standardisée, moonpacket récupère activement les 'règles de récompense' et les 'attributs utilisateur' depuis votre serveur. Tous les jugements logiques sont traités par moonpacket.
Logique d'Interaction
Le processus entier est divisé en deux phases : 'Phase de configuration' et 'Phase d'exécution'. moonpacket enverra des requêtes à votre API en utilisant la méthode GET :
Phase un : définition des règles (Configuration)
⚡ Moment de déclenchement : lorsque l'URL est remplie et soumise dans les paramètres de conditions de réception
Phase deux : vérification de l'utilisateur (Runtime)
⚡ Moment de déclenchement : lorsque l'utilisateur essaie de réclamer le red packet.
💡 Opérateurs pris en charge : `eq` (égal, prend en charge les chaînes/nombres), `gt` (supérieur à), `gte` (supérieur ou égal à), `lt` (inférieur à), `lte` (inférieur ou égal à). Les valeurs pour les opérateurs non-`eq` doivent être des nombres.
Scénarios d'application
Intégration GameFi
Définir la règle `niveau >= 10`. Lorsque l'utilisateur réclame, moonpacket vérifie les attributs de l'utilisateur, si `niveau: 12` alors c'est approuvé.
Récompenses de liaison d'identité
Définissez la règle `kyc == true`. moonpacket vérifie le statut de l'utilisateur, et s'il retourne `kyc: true`, alors les récompenses sont distribuées.
Filtrage de liste noire
Définir la règle `is_blacklist == false`. Si l'API renvoie `is_blacklist: true`, le retrait est refusé.
Exemple de communication (demande GET)
Mode A 1. Définir les règles (Configuration)
Lors de la soumission des paramètres, renvoyez un JSON contenant des opérateurs.
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. Statut de la requête (Exécution)
Lorsque l'utilisateur réclame, renvoyez des valeurs ou des chaînes pures.
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
}
} Définition de la structure de données (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;
};
} 🔐 Validation de la Sécurité
Pour garantir l'authenticité des demandes, moonpacket inclura une signature dans l'en-tête. Vous pouvez vous référer au code à droite pour validation :
En-têtes nécessaires
Algorithme de signature
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); ⚠️ Remarque
- ● Délai d'attente : Assurez-vous que l'API peut renvoyer des résultats dans un délai de 3 secondes.
- ● Format : Veuillez strictement respecter la structure JSON, sinon cela entraînera une failure de parsing.
Codes d'état
| Code d'état | Statut | Description |
|---|---|---|
| 200 | OK | Demande réussie |
| 400 | Bad Request | Erreur dans les paramètres de la demande (comme un format incorrect). |
| 401 | Unauthorized | En-tête d'autorisation manquant ou clé invalide. |
| 403 | Forbidden | Restriction IP ou accès non autorisé à cette ressource. |
| 404 | Not Found | L'ID utilisateur n'existe pas (pour le scénario de vérification de l'état de l'utilisateur). |
| 500 | Server Error | Erreur interne du serveur. |
⚠️ Avertissement concernant les API tierces
Les méthodes d'intégration pour les plateformes tierces mentionnées dans ce document sont à titre de référence uniquement. Les développeurs doivent consulter et se conformer à la dernière documentation officielle des développeurs de la plateforme.