الانتقال إلى المحتوى الرئيسي
GET
/
v3
/
mobile
/
check-ref
/
{ref}
التحقق من الحالة بالمرجع
curl --request GET \
  --url https://api.oneclickdz.com/v3/mobile/check-ref/{ref} \
  --header 'X-Access-Token: <api-key>'

Documentation Index

Fetch the complete documentation index at: https://docs.oneclickdz.com/llms.txt

Use this file to discover all available pages before exploring further.

نظرة عامة

يُرجع حالة شحن هاتف محمول باستخدام قيمة ref التي حددتها عند إرسال الشحن.
إذا أرسلت طلبًا بدون ref، استخدم check-by-id مع topupId المُرجع.

المعلمات

ref
string
مطلوب
مرجعك الداخلي كما وفّرته في طلب الشحن

الاستجابة

success
boolean
مطلوب
true إذا تم العثور على الشحن وإرجاع حالته
data
object
مطلوب

قيم الحالة

الحالةالمعنىالإجراء
PENDINGالشحن قيد المعالجةتحقق مجددًا بعد 5-10 ثوانٍ
SUCCESSالشحن اكتمل بنجاحأبلغ المستخدم بالنجاح
FAILEDالشحن فشل نهائيًاالرصيد مُسترد - يمكن المحاولة مجددًا
UNKNOWN_ERRORحالة غير محددةانتظر 24 ساعة - لا تسترد الأموال

الأمثلة

curl https://api.oneclickdz.com/v3/mobile/topup/ref/order-001 \
  -H "X-Access-Token: YOUR_API_KEY"

مثال على الاستجابة

{
  "success": true,
  "data": {
    "_id": "6901616fe9e88196b4eb64b0",
    "ref": "order-001",
    "status": "SUCCESS",
    "MSSIDN": "0776543210",
    "operator": "Djezzy",
    "planCode": "PREPAID_DJEZZY",
    "planName": "📱 PREPAID | عادي",
    "amount": 500,
    "cost": 496.25,
    "createdAt": "2025-10-29T00:35:59.454Z",
    "updatedAt": "2025-10-29T00:36:05.123Z"
  }
}

استراتيجية الاستطلاع (Polling)

async function pollTopUpStatus(ref, maxAttempts = 12, intervalMs = 5000) {
  for (let attempt = 1; attempt <= maxAttempts; attempt++) {
    const response = await fetch(
      `https://api.oneclickdz.com/v3/mobile/topup/ref/${encodeURIComponent(ref)}`,
      {
        headers: { "X-Access-Token": API_KEY },
      }
    );

    const data = await response.json();

    if (!data.success) {
      throw new Error(`Failed to check status: ${data.error.message}`);
    }

    const { status } = data.data;

    if (status === "SUCCESS") {
      return { success: true, data: data.data };
    }

    if (status === "FAILED") {
      return { success: false, data: data.data };
    }

    if (status === "UNKNOWN_ERROR") {
      // Stop polling - schedule a check after 24h, do NOT refund
      return { success: null, data: data.data, requiresManualReview: true };
    }

    // Still PENDING - wait and retry
    if (attempt < maxAttempts) {
      await new Promise((resolve) => setTimeout(resolve, intervalMs));
    }
  }

  // Timeout - treat as UNKNOWN_ERROR
  return { success: null, timedOut: true, requiresManualReview: true };
}

متى تستخدم هذا الـ Endpoint

استعلامات المستخدمين

عندما يسأل المستخدمون عن طلباتهم باستخدام معرّف الطلب الخاص بك

إدارة الطلبات

التكامل مع نظام تتبع الطلبات الحالي لديك

صفحات الحالة

عرض حالة الطلب باستخدام مراجع مواجهة العملاء

دعم العملاء

البحث عن الطلبات عبر أرقام المراجع الخاصة بالعملاء

استجابة الخطأ

404 - غير موجود:
{
  "success": false,
  "error": {
    "code": "NOT_FOUND",
    "message": "Top-up with reference 'order-12345' not found"
  },
  "requestId": "req_1730160975_abc123"
}
هذا يعني أنه لا يوجد شحن بهذا المرجع. الأسباب المحتملة:
  • لم يُرسَل المرجع أبداً
  • خطأ إملائي في المرجع
  • المرجع ينتمي إلى حساب مختلف

أفضل الممارسات

أنشئ مراجع تكون:
  • فريدة في نظامك
  • سهلة التعرف عليها (مثل order-{timestamp}-{userId})
  • آمنة في عناوين URL (بدون أحرف خاصة)
  • قابلة للبحث في قاعدة بياناتك
احفظ كلاً من مرجعك ومعرّف topupId الخاص بـ API:
await db.orders.update({
  orderId: 'order-12345',
  apiTopupId: response.data.topupId,
  apiTopupRef: response.data.topupRef
});
يتيح لك ذلك التتبع باستخدام أي من المعرّفين.
إذا نسيت تقديم ref، ينشئ الـ API مرجعاً تلقائياً. احفظه:
const response = await sendTopup({ 
  plan_code: 'PREPAID_DJEZZY',
  MSSIDN: '0778037340',
  amount: 500
  // No ref provided
});

// API returns: { topupRef: "auto-gen-1730160975" }
await db.orders.update({
  orderId: order.id,
  apiRef: response.data.topupRef
});

Endpoints ذات الصلة

التحقق من الحالة بالمعرّف

البحث بـ topupId

إرسال الشحن

إرسال شحن جديد

قائمة الشحنات

عرض الشحنات السابقة