API การตรวจสอบสิทธิ์
ผ่านอินเทอร์เฟซแบบ GET ที่ได้มาตรฐาน moonpacket จะดึง 'กฎรางวัล' และ 'คุณลักษณะผู้ใช้' จากเซิร์ฟเวอร์ของคุณอย่างกระตือรือร้น การตัดสินใจเชิงlogic ทั้งหมดถูกจัดการโดย moonpacket.
ตรรกะการโต้ตอบ
กระบวนการทั้งหมดแบ่งออกเป็นสองช่วง: 'ช่วงตั้งค่า' และ 'ช่วงรันไทม์' moonpacket จะส่งคำขอไปยัง API ของคุณโดยใช้วิธี GET:
ขั้นตอนที่ 1: กำหนดกฎ (การกำหนดค่า)
⚡ เหตุการณ์กระตุ้น: เมื่อ URL ถูกกรอกใน 'การตั้งค่าข้อกำหนดการเคลม' และส่งไปแล้ว
ระยะที่ 2: ตรวจสอบผู้ใช้ (ระหว่างดำเนินการ)
⚡ เหตุการณ์ที่กระตุ้น: เมื่ผู้ใช้พยายามขอรับอั่งเปา
💡 ผู้ให้บริการที่รองรับ: `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 อย่างเคร่งครัด มิฉะนั้นจะทำให้เกิดความล้มเหลวในการแยก解析.
รหัสสถานะ
| รหัสสถานะ | สถานะ | คำอธิบาย |
|---|---|---|
| 200 | OK | คำขอสำเร็จ |
| 400 | Bad Request | เกิดข้อผิดพลาดในพารามิเตอร์คำขอ (เช่น รูปแบบไม่ถูกต้อง) |
| 401 | Unauthorized | หายตัวไปจากหัวข้อการอนุญาต หรือคีย์ไม่ถูกต้อง |
| 403 | Forbidden | ข้อจำกัด IP หรือการเข้าถึงทรัพยากรที่ไม่ได้รับอนุญาต |
| 404 | Not Found | หมายเลขผู้ใช้ไม่มีอยู่ (สำหรับสถานการณ์การตรวจสอบสถานะผู้ใช้) |
| 500 | Server Error | ข้อผิดพลาดของเซิร์ฟเวอร์ภายใน |
⚠️ การชี้แจงเกี่ยวกับ API ของบุคคลที่สาม
วิธีการรวมเข้ากับแพลตฟอร์มของ pihak ketiga ที่กล่าวถึงในเอกสารนี้เป็นเพียงเพื่อการอ้างอิงเท่านั้น นักพัฒนาควรปรึกษาและปฏิบัติตามเอกสารนักพัฒนาทางการล่าสุดของแพลตฟอร์ม