Pular para o conteúdo principal
Especificação da API v2.3

API de Autenticação

Através de uma interface de consulta GET padronizada, moonpacket recupera ativamente 'regras de recompensa' e 'atributos de usuário' do seu servidor. Todos os julgamentos lógicos são tratados pelo moonpacket.

Lógica de Interação

Todo o processo é dividido em duas fases: 'Fase de Configuração' e 'Fase em Execução'. A moonpacket enviará solicitações para sua API usando o método GET:

moonpacket Cliente / Servidor Combinação Lógica (Local) Regras Armazenadas: Level >= 10 Status do Usuário: Level = 12 ✓ Distribuir Recompensas ⚙️ Seu API GET /check ?user_id=... 1. Durante a Configuração: Regras de Recuperação (GET) 2. Durante a Reivindicação: Consultar Status (GET) JSON data
← 左右滑動查看流程 →
Passo Um

Fase 1: Definir Regras (Configuração)

Evento disparador: quando a URL é preenchida nas 'Configurações de Condições de Solicitação' e submetida

GET GET
RET Retorna o objeto de definição de regra com operadores (gt, eq, lt...)
Passo Dois

Fase 2: Validar Usuário (Execução)

Evento acionador: quando o usuário tenta reivindicar o Red Packet

GET ?user_id=...
RET Retorna o valor real do atributo daquele usuário específico (valor simples ou string)

💡 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 que não sejam `eq` devem ser números.

Cenários de Aplicação

🎮

Integração GameFi

Defina a regra `level >= 10`. Quando o usuário reivindica, moonpacket verifica os atributos do usuário; se `level: 12`, então é aprovado.

🆔

Recompensa de Vínculo de Identidade

Defina a regra `kyc == true`. A moonpacket verifica o status do usuário e, se retornar `kyc: true`, 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 (Requisição GET)

Mode A 1. Definir Regras (Configuração)

Ao enviar as configurações, retorne um JSON contendo operadores.

Solicitar Conteúdo
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
Retornar Resultado (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Consultar Status (Em Execução)

Quando o usuário reivindica, retorne valores ou strings puras.

Solicitar Conteúdo
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
Retornar Resultado (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

Definição de Estrutura de Dados (TypeScript)

types.d.ts
// 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 das solicitações, a moonpacket incluirá uma assinatura no cabeçalho. Você pode consultar o código à direita para validação:

Cabeçalhos Necessários

X-API-KEY
X-API-TIMESTAMP
X-API-NONCE
X-API-SIGNATURE

Algoritmo de Assinatura

Assinatura = HMAC_SHA256(segredo, corpo + timestamp + nonce)
verify.ts
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: Certifique-se de que a API pode retornar resultados em 3 segundos.
  • Formato: Por favor, adira estritamente à estrutura JSON, caso contrário, isso levará a falhas na análise.

Códigos de Status

Código de Status Status Descrição
200 OK Solicitação bem-sucedida
400 Bad Request Erro nos parâmetros da solicitação (por exemplo, formato incorreto).
401 Unauthorized Cabeçalho de autorização ausente ou chave inválida.
403 Forbidden Restrição de IP ou acesso não autorizado ao recurso.
404 Not Found O ID do usuário não existe (para cenários de consulta de status do usuário).
500 Server Error Erro interno do servidor.

⚠️ Isenção de Responsabilidade sobre 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.