API de Autenticação
Através de uma interface de consulta GET padronizada, moonpacket recupera ativamente as 'regras de recompensa' e 'atributos do utilizador' do seu servidor. Todos os julgamentos lógicos são geridos pelo moonpacket.
Lógica de Interação
O processo completo está dividido em duas fases: 'Fase de Configuração' e 'Fase de Execução'. A moonpacket enviará solicitações à sua API utilizando o método GET:
Fase 1: Definir Regras (Configuração)
⚡ Evento de disparo: quando a URL é preenchida nas 'Configurações de Condições de Reivindicação' e enviada
Fase 2: Validar Usuário (Tempo de Execução)
⚡ Evento desencadeador: quando o usuário tenta reivindicar o Red Packet
💡 Operadores suportados: `eq` (igual, suporta strings/números), `gt` (maior que), `gte` (maior ou igual a), `lt` (menor que), `lte` (menor ou igual a). Os valores para operadores não-`eq` devem ser números.
Cenários de Aplicação
Integração GameFi
Defina a regra `level >= 10`. Quando o utilizador reivindica, a moonpacket verifica os atributos do utilizador, se `level: 12` então é aprovado.
Recompensa de Vinculação de Identidade
Defina a regra `kyc == true`. A moonpacket verifica o status do utilizador, e se retornar `kyc: true`, então as recompensas são distribuídas.
Filtragem de Lista Negra
Defina a regra `is_blacklist == false`. Se a API retornar `is_blacklist: true`, a reivindicação é rejeitada.
Exemplo de Comunicação (Pedido GET)
Mode A 1. Definir Regras (Configuração)
Ao submeter as definições, devolva JSON contendo 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 da Consulta (Runtime)
Quando o utilizador reivindica, retornar valores ou strings puros.
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ção da Estrutura de Dados (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;
};
} 🔐 Validação de Segurança
Para garantir a autenticidade dos pedidos, a moonpacket incluirá uma assinatura no Cabeçalho. Pode consultar o código à direita para validação:
Cabeçalhos Necessários
Algoritmo de Assinatura
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
- ● Tempo limite: Assegure-se de que a API pode retornar resultados em 3 segundos.
- ● Formato: Por favor, adhere estritamente à estrutura JSON, caso contrário, isso levará a uma falha de análise.
Códigos de Status
| Código de Status | Estado | Descrição |
|---|---|---|
| 200 | OK | Pedido bem-sucedido |
| 400 | Bad Request | Erro no parâmetro de solicitação (por exemplo, formato incorreto). |
| 401 | Unauthorized | Cabeçalho de autorização ausente ou chave inválida. |
| 403 | Forbidden | Restrições de IP ou acesso não autorizado ao recurso. |
| 404 | Not Found | ID do usuário não existe (para consulta de cenários de status do usuário). |
| 500 | Server Error | Erro interno do servidor. |
⚠️ Isenção de responsabilidade da API de terceiros
Os métodos de integração para plataformas de terceiros mencionados neste documento são apenas para referência. Os desenvolvedores devem consultar e seguir a documentação oficial mais recente para desenvolvedores da plataforma.