API de Autenticación
A través de una interfaz de consulta GET estandarizada, moonpacket recupera activamente 'reglas de recompensa' y 'atributos de usuario' de su servidor. Todos los juicios lógicos son manejados por moonpacket.
Lógica de Interacción
El proceso completo se divide en dos fases: 'Fase de Configuración' y 'Fase de Ejecución'. moonpacket enviará solicitudes a su API utilizando el método GET:
Fase uno: Definir reglas (Configuración)
⚡ Momento de activación: cuando se ingresa la URL en 'Configuración de condiciones para recibir' y se envía
Fase dos: Verificación del usuario (Runtime)
⚡ Momento de activación: El usuario intenta reclamar el Red Packet
💡 Operadores compatibles: `eq` (igual a, soporta cadenas/números), `gt` (mayor que), `gte` (mayor o igual que), `lt` (menor que), `lte` (menor o igual que). Los valores para operadores no `eq` deben ser números.
Escenarios de aplicación
Integración de GameFi
Defina la regla `nivel >= 10`. Cuando el usuario reclama, moonpacket verifica los atributos del usuario; si `nivel: 12`, entonces se aprueba.
Recompensas por vinculación de identidad
Define la regla `kyc == true`. moonpacket verifica el estado del usuario, y si devuelve `kyc: true`, entonces se distribuyen las recompensas.
Filtro de lista negra
Definir la regla `is_blacklist == false`. Si la API devuelve `is_blacklist: true`, entonces se rechaza la reclamación.
Ejemplo de Comunicación (Solicitud GET)
Mode A 1. Definir Reglas (Configuración)
Al enviar la configuración, devuelve JSON que contenga operadores.
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. Estado de Consulta (Tiempo de Ejecución)
Cuando el usuario reclama, devuelve valores o cadenas puras.
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
}
} Definición de Estructura de Datos (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;
};
} 🔐 Validación de Seguridad
Para garantizar la autenticidad de las solicitudes, moonpacket incluirá una firma en el encabezado. Puedes consultar el código a la derecha para la validación:
Encabezados Necesarios
Algoritmo de firma
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); ⚠️ Nota
- ● Tiempo de espera: Asegúrate de que la API pueda devolver resultados en 3 segundos.
- ● Formato: Por favor, adhierase estrictamente a la estructura JSON, de lo contrario llevará a un fallo de análisis.
Códigos de Estado
| Código de estado | Estado | Descripción |
|---|---|---|
| 200 | OK | Solicitud exitosa |
| 400 | Bad Request | Error en los parámetros de la solicitud (por ejemplo, formato incorrecto). |
| 401 | Unauthorized | Falta el encabezado de autorización o la clave es inválida. |
| 403 | Forbidden | Restricción de IP o sin derecho a acceder a ese recurso. |
| 404 | Not Found | ID de usuario no existe (para el escenario de consulta de estado del usuario). |
| 500 | Server Error | Error interno del servidor. |
⚠️ Aviso de Exención de Responsabilidad de API de Terceros
Los métodos de integración para plataformas de terceros mencionados en este documento son solo para referencia. Los desarrolladores deben consultar y ajustarse a la última documentación oficial para desarrolladores de la plataforma.