Skip to main content
#P1802

GET /b2c/v1/online/payment/flight/tracking

Tracking Payment Flight

اندپوینت زیر برای بررسی وضعیت پرداخت و رزرو پرواز از روی کد ملی و شماره رفرنس طراحی شده است. این متد با اتصال داخلی به V2TradeController::operationTrade() وضعیت فاکتور، اطلاعات پرواز و مسافران را بازیابی کرده و داده‌های حساس مالی را از خروجی حذف می‌کند.



Endpoint Info

URL: /b2c/v1/online/payment/flight/tracking
Method: GET
Controller: V1OnlineController@trackingPaymentFlight
Auth: Public (بدون نیاز به JWT)

Query Parameters

پارامتر نوع اجباری توضیح
special_code string کد ملی مسافر یا شناسه ویژه ثبت شده در سیستم مشتریان (customers.national_code)
reference integer شماره فاکتور یا رفرنس پرداخت (با offset داخلی -10000 هنگام مقایسه در جدول فاکتورها)
branch integer شناسهٔ شعبه‌ای که پرداخت در آن انجام شده است

Logic Flow

📥 دریافت ورودی‌های special_code و reference
۱. بررسی مشتری با کد ملی:
جستجو در جدول customers برای یافتن رکوردی با national_code = special_code.
اگر یافت نشود، پاسخ خطا با کد 404 و پیام "مسافر مورد نظر یافت نشد" برگردانده می‌شود.
۲. بررسی وجود فاکتور:
در جدول factors فیلدهای زیر بررسی می‌شوند:
  • serial = reference - 10000
  • branch = branch_id
  • customer = customer.id
اگر رکوردی یافت شود، ادامه می‌دهد؛ در غیر این صورت پاسخ خطا با پیام "رفرنس مورد نظر یافت نشد" برمی‌گردد.
۳. آماده‌سازی درخواست برای TradeController:
افزودن پارامتر id = reference به درخواست.
تنظیم اپراتور فرضی: { id: 12, access: ... } برای اجرای تابع operationTrade.
۴. اجرای Trade Operation:
ساخت شیء V2TradeController و اجرای متد operationTrade($request).
دادهٔ بازگشتی (JSON) شامل فاکتور و اقلام تراکنش واکشی می‌شود.
۵. پاک‌سازی داده‌ها:
در آرایهٔ خروجی data، فیلدهای محرمانه حذف می‌شوند:
[buy, value_added, serial, provider, currency, deadline, failure_bill]
و فیلدها به شکل زیر اصلاح می‌شوند:
serial_id = serial_id + 10000
✅ خروجی نهایی شامل اطلاعات کامل فاکتور و مسافران است و در قالب کلید payload برمی‌گردد.

Response Samples

✅ موفق - فاکتور یافت شد

{
  "payload": {
    "serial_id": 26789,
    "data": [
      {
        "serial_id": 26790,
        "title": "تهران → مشهد",
        "status": 3,
        "departure_datetime": "2025-12-09 10:15",
        "arrival_datetime": "2025-12-09 11:45",
        "airline_code": "W5",
        "aircraft": "Airbus A321",
        "cabin": "Economy"
      }
    ],
    "passengers": [
      { "name_fa": "علیرضا رضایی", "sex": "male", "national_code": "1234567890" }
    ],
    "leader": { "name_fa": "علیرضا رضایی", "mobile": "09121234567" }
  },
  "meta": { "timestamp": 1733750909 }
}

❌ خطا – مشتری یافت نشد

{
  "error": {
    "code": 1001,
    "message": ".مسافر مورد نظر یافت نشد"
  },
  "meta": { "timestamp": 1733750915 }
}

❌ خطا – فاکتور یافت نشد

{
  "error": {
    "code": 1001,
    "message": ".رفرنس مورد نظر یافت نشد"
  },
  "meta": { "timestamp": 1733750921 }
}

Technical Notes

  • تابع operationTrade() از مسیر داخلی /v2/trade/operation فراخوانی شده و مسئول واکشی جزئیات پرداخت است.
  • در فرآیند اعتبارسنجی، شناسهٔ فاکتور با آفست 10000− بررسی می‌شود تا با ساختار فاکتورهای داخلی سازگار گردد.
  • عامل اجرای عملیات با شناسهٔ ثابت operator.id = 12 تنظیم شده تا از سطح دسترسی سیستم مرکزی استفاده کند.
  • تمام زمان‌های بازگشتی در خروجی با فرمت میلادی و فیلد meta.timestamp (ثانیه‌های یونیکس) اضافه می‌شوند.
  • کلید leader فقط در صورتی وجود دارد که فاکتور دارای سرپرست یا مشتری اصلی باشد.