דלג לתוכן העיקרי
מפרט API גרסה 2.3

API אימות

בעזרת ממשק שאילתת GET סטנדרטי, moonpacket משיגה באופן פעיל 'חוקי תגמולים' ו'מאפייני משתמש' מהשרת שלך. כל השיפוטים הלוגיים מטופלים על ידי moonpacket.

לוגיקת אינטראקציה

התהליך כולו מחולק לשני שלבים: 'שלב ההקמה' ו'שלב הריצה'. moonpacket ישלח בקשות ל-API שלך באמצעות שיטת GET:

moonpacket לקוח / שרת התאמה לוגית (מקומית) כללים נשמרו: Level >= 10 סטטוס משתמש: Level = 12 ✓ הפצת פרסים ⚙️ ה-API שלך GET /check ?user_id=... 1. במהלך ההגדרה: חוקים לקבלת נתונים (GET) 2. במהלך תביעה: שאל_STATUS (GET) נתוני JSON
← 左右滑動查看流程 →
שלב ראשון

שלב 1: הגדר חוקים (הגדרה)

אירוע מפעיל: כאשר ה-URL מלא ב'הגדרות תנאי תביעה' ונשלח

GET GET
RET מחזיר את הגדרת חוק האובייקט עם מפעילים (gt, eq, lt...)
שלב שני

שלב 2: אימות משתמש (Runtime)

מתי להפוך לפעולה: כאשר המשתמש מנסה למשוך את ה-Red Packet

GET ?user_id=...
RET להחזיר את ערכי המאפיינים האמיתיים של המשתמש הספציפי (ערכים מספריים טהורים או מחרוזות)

💡 ספקי שירות נתמכים: `eq` (שווה, תומך במילים/מספרים), `gt` (גדול מ), `gte` (גדול או שווה ל), `lt` (קטן מ), `lte` (קטן או שווה ל). ערכים עבור ספקי שירות שאינם `eq` חייבים להיות מספרים.

תסריטי אפליקציה

🎮

אינטגרציה של GameFi

הגדר את החוק `level >= 10`. כאשר המשתמש תובע, moonpacket בודק את התכונות של המשתמש, אם `level: 12` אז זה מאושר.

🆔

פרס הקשירה לזהות

הגדר את הכלל `kyc == true`. moonpacket בודק את מצב המשתמש, ואם זה מחזיר `kyc: true`, אז מחלקים את הפרסים.

🚀

סינון ברשימות שחורות

הגדר את הכלל `is_blacklist == false`. אם ה-API מחזיר `is_blacklist: true`, יש לדחות את המשיכה.

דוגמת תקשורת (בקשת GET)

Mode A 1. הגדר כללים (הגדרה)

כשאתה מגיש הגדרות, החזר JSON שמכיל מפעילים.

בקשת תוכן
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
החזר תוצאה (200 OK)
{
  "data": {
    "level": {
      "gt": 99
    },
    "status": {
      "eq": "active"
    },
    "is_blacklist": {
      "eq": false
    }
  }
}

Mode B 2. שאילתת מצב (זמן ריצה)

כאשר המשתמש טוען, החזר ערכים או מחרוזות טהורים.

בקשת תוכן
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
החזר תוצאה (200 OK)
{
  "data": {
    "level": 100,
    "status": "active",
    "is_blacklist": false
  }
}

הגדרת מבנה נתונים (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;
  };
}

🔐 אימות אבטחה

כדי להבטיח את האותנטיות של הבקשות, moonpacket תכלול חתימה בכותרת. אתה יכול להתייחס לקוד справа לצורך אימות:

כותרות נחוצות

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

אלגוריתם חתימה

חתימה = HMAC_SHA256(סוד, גוף + חותם זמן + נונס)
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);

⚠️ הערה

  • זמן פג: ודא שה-API יכול להחזיר תוצאות בתוך 3 שניות.
  • פורמט: אנא הקפד לדייק במבנה ה-JSON, אחרת זה יגרום לכישלון ב-parsing.

קודי מצב

קוד מצב סטטוס תיאור
200 OK בקשה הצליחה
400 Bad Request שגיאת פרמטרי בקשה (לדוגמה, פורמט שגוי).
401 Unauthorized כותרת האAutorization חסרה או המפתח חסר תוקף.
403 Forbidden הגבלת IP או גישה לא מורשית למשאב.
404 Not Found מזהה משתמש אינו קיים (לסריקות מצב משתמש).
500 Server Error שגיאה פנימית בשרת.

⚠️ הבהרת API של צד שלישי

שיטות ההשתלבות לפלטפורמות של צד שלישי המוזכרות במסמך זה הן לצורכי הפניה בלבד. מפתחים צריכים להתייעץ ולציית לתיעוד המפתחים הרשמי העדכני של הפלטפורמה.