اہم مواد کی طرف جائیں
API کی خصوصیات v2.3

تصدیق API

ایک معیاری GET سوالات کے انٹرفیس کے ذریعے، moonpacket آپ کے سرور سے 'انعام کے قواعد' اور 'صارف کی خصوصیات' کو فعال طور پر حاصل کرتا ہے۔ تمام منطقی فیصلے moonpacket کے ذریعے کیے جاتے ہیں۔

تفاعلی منطق

پورا عمل دو مراحل میں تقسیم کیا گیا ہے: 'سیٹ اپ مرحلہ' اور 'رَن ٹائم مرحلہ'۔ moonpacket آپ کے API کو GET طریقہ استعمال کرتے ہوئے درخواستیں بھیجے گا:

moonpacket کلائنٹ / سرور منطقی ملاپ (مقامی) قواعد محفوظ ہیں: Level >= 10 صارف کی حیثیت: Level = 12 ✓ انعامات تقسیم کریں ⚙️ آپ کا API GET /check ?user_id=... 1. سیٹ اپ کے دوران: برآمدی قواعد (GET) 2. دعوی کے دوران: حیثیت کی جانچ (GET) JSON ڈیٹا
← 左右滑動查看流程 →
پہلا قدم

مرحلہ 1: اصولوں کی وضاحت کریں (ترتیب)

کام کرنے والا واقعہ: جب URL 'دعویٰ کی شرائط کی ترتیب' میں بھرا جاتا ہے اور جمع کرایا جاتا ہے

GET GET
RET اپریٹرز (gt, eq, lt...) کے ساتھ اصول کی تعریف کا آبجیکٹ واپس کرتا ہے
دوسرا مرحلہ

مرحلہ 2: صارف کی توثیق (چلتے وقت)

واقعتی واقعہ: جب صارف ریڈ پیکٹ کا دعویٰ کرنے کی کوشش کرتا ہے

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(secret, body + 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);

⚠️ نوٹ

  • ٹائم آؤٹ: یقینی بنائیں کہ API 3 سیکنڈ کے اندر نتائج واپس کر سکتی ہے۔
  • فارمیٹ: براہ کرم JSON کے ڈھانچے کی سختی سے پیروی کریں، ورنہ یہ پارسنگ کی ناکامی کا باعث بنے گا۔

اسٹیٹس کوڈز

اسٹیٹس کوڈ حالت تفصیل
200 OK درخواست کامیاب
400 Bad Request درخواست کا پیرامیٹر غلط ہے (جیسے شکل غلط ہے)۔
401 Unauthorized اجازت دینے والا ہیڈر غائب ہے یا کلید غیر درست ہے۔
403 Forbidden IP کی پابندی یا وسائل تک غیر مجاز رسائی۔
404 Not Found صارف کی شناخت موجود نہیں (صارف کی حیثیت کے منظرناموں کے لیے)۔
500 Server Error اندرونی سرور کی خرابی۔

⚠️ تیسرے فریق کی API کی تذکرہ

اس دستاویز میں ذکر کردہ تیسرے فریق کے پلیٹ فارم کے لیے انضمام کے طریقے صرف حوالہ کے لیے ہیں۔ ترقی دہندگان کو پلیٹ فارم کی تازہ ترین سرکاری ترقی دہندہ دستاویزات سے مشورہ کرنا اور ان پر عمل کرنا چاہیے۔