Siirry pääsisältöön
API Määrittely v2.3

Todennus API

Standardisoidun GET-kyselyrajapinnan kautta moonpacket noutaa aktiivisesti 'palkkiosäännöt' ja 'käyttäjätiedot' palvelimeltasi. Kaikki loogiset arvioinnit hoitaa moonpacket.

Vuorovaikutuslogiikka

Koko prosessi on jaettu kahteen vaiheeseen: 'Asennusvaihe' ja 'Suoritusvaihe'. moonpacket lähettää pyyntöjä API:si käyttämällä GET-menetelmää:

moonpacket Asiakas / Palvelin Looginen vastaavuus (paikallinen) Säännöt tallennettu: Level >= 10 Käyttäjätila: Level = 12 ✓ Jaa palkintoja ⚙️ Sinun APIsi GET /check ?user_id=... 1. Asennuksen aikana: Hakusäännöt (GET) 2. Vaatimisvaihe: Tarkista tila (GET) JSON data
← 左右滑動查看流程 →
Vaihe Yksi

Vaihe 1: Sääntöjen määrittäminen (Konfiguraatio)

Käynnistysohje: Syötä URL „vaatimusehdot“ ja lähetä se

GET GET
RET Palauta objekti, jossa on operaattorit (gt, eq, lt...) sääntöjen määrittelemiseksi
Vaihe Kaksi

Vaihe 2: Käyttäjän vahvistaminen (Suorituskyky)

Käynnistysohje: Käyttäjä yrittää nostaa punakirin.

GET ?user_id=...
RET Palauta kyseisen käyttäjän todelliset ominaisuusarvot (puhdas numero tai merkkijono)

💡 Tuetut operaattorit: `eq` (yhtä suuri, tukee merkkijonoja/lukuja), `gt` (suurempi kuin), `gte` (suurempi tai yhtä suuri kuin), `lt` (pienempi kuin), `lte` (pienempi tai yhtä suuri kuin). Arvojen, jotka eivät ole `eq` operaattoreita, on oltava lukuja.

Sovellusskenaariot

🎮

GameFi yhdistäminen

Määritä sääntö `level >= 10`. Kun käyttäjä lunastaa, moonpacket tarkistaa käyttäjän ominaisuudet, jos `level: 12`, niin se hyväksytään.

🆔

Identiteettisitoutumispalkinto

Määrittele sääntö `kyc == true`. moonpacket tarkistaa käyttäjän tilan, ja jos se palauttaa `kyc: true`, niin palkintoja jaetaan.

🚀

Blacklist-suodatus

Määritä sääntö `is_blacklist == false`. Jos API palauttaa `is_blacklist: true`, hylkää hakemus.

Viestintäesimerkki (GET-pyyntö)

Mode A 1. Määritä säännöt (Määritys)

Kun asetuksia lähetetään, palauta JSON, joka sisältää operaattorit.

Pyydä sisältö
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
Palauta tulos (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. Kyselyn tila (Suorituskyky)

Kun käyttäjä vaatii, palauta puhtaat arvot tai merkkijonot.

Pyydä sisältö
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
Palauta tulos (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

Tietorakenteen määrittely (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;
  };
}

🔐 Turvatarkistus

Varmistaaksesi pyyntöjen aitouden, moonpacket lisää allekirjoituksen otsikkoon. Voit viitata oikealla olevaan koodiin validoimista varten:

Tarvittavat otsikot

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

Allekirjoitusalgoritmi

Allekirjoitus = HMAC_SHA256(salaisuus, viesti + aikaleima + 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);

⚠️ Huomautus

  • Aikakatkos: Varmista, että API voi palauttaa tuloksia 3 sekunnin kuluessa.
  • Muoto: Ole hyvä ja noudata tarkasti JSON-rakennetta, muuten se johtaa jäsentämisvirheeseen.

Tilakoodit

Tilakoodi Tila Kuvaus
200 OK Pyyntö onnistui
400 Bad Request Pyyntöparametri virheellinen (esim. muoto ei oikein).
401 Unauthorized Valtuutuspäänsisi puuttuu tai avain on voimaton.
403 Forbidden IP-rajoitus tai ei oikeutta päästä tähän resurssiin.
404 Not Found Käyttäjän ID ei ole olemassa (koskee käyttäjätietojen hakuja).
500 Server Error Palvelimen sisäinen virhe.

⚠️ Kolmannen Osapuolen API Varoitus

Kolmannen osapuolen alustojen integrointimenetelmät, jotka on mainittu tässä asiakirjassa, ovat vain viittausmateriaalia. Kehittäjien tulisi ottaa huomioon ja noudattaa alustojen uusinta virallista kehittäjädokumentaatiota.