API אימות
בעזרת ממשק שאילתת GET סטנדרטי, moonpacket משיגה באופן פעיל 'חוקי תגמולים' ו'מאפייני משתמש' מהשרת שלך. כל השיפוטים הלוגיים מטופלים על ידי moonpacket.
לוגיקת אינטראקציה
התהליך כולו מחולק לשני שלבים: 'שלב ההקמה' ו'שלב הריצה'. moonpacket ישלח בקשות ל-API שלך באמצעות שיטת GET:
שלב 1: הגדר חוקים (הגדרה)
⚡ אירוע מפעיל: כאשר ה-URL מלא ב'הגדרות תנאי תביעה' ונשלח
שלב 2: אימות משתמש (Runtime)
⚡ מתי להפוך לפעולה: כאשר המשתמש מנסה למשוך את ה-Red Packet
💡 ספקי שירות נתמכים: `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 {
"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 {
"data": {
"level": 100,
"status": "active",
"is_blacklist": false
}
} הגדרת מבנה נתונים (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;
};
} 🔐 אימות אבטחה
כדי להבטיח את האותנטיות של הבקשות, moonpacket תכלול חתימה בכותרת. אתה יכול להתייחס לקוד справа לצורך אימות:
כותרות נחוצות
אלגוריתם חתימה
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 של צד שלישי
שיטות ההשתלבות לפלטפורמות של צד שלישי המוזכרות במסמך זה הן לצורכי הפניה בלבד. מפתחים צריכים להתייעץ ולציית לתיעוד המפתחים הרשמי העדכני של הפלטפורמה.