#P1802
GET /b2c/v1/online/payment/flight/tracking
Tracking Payment Flight
اندپوینت زیر برای بررسی وضعیت پرداخت و رزرو پرواز از روی کد ملی و شماره رفرنس طراحی شده است. این متد با اتصال داخلی به V2TradeController::operationTrade() وضعیت فاکتور، اطلاعات پرواز و مسافران را بازیابی کرده و دادههای حساس مالی را از خروجی حذف میکند.
Endpoint Info
URL:
/b2c/v1/online/payment/flight/trackingMethod: GET
Controller:
V1OnlineController@trackingPaymentFlightAuth: Public (بدون نیاز به JWT)
Query Parameters
| پارامتر | نوع | اجباری | توضیح |
|---|---|---|---|
| special_code | string | ✅ | کد ملی مسافر یا شناسه ویژه ثبت شده در سیستم مشتریان (customers.national_code) |
| reference | integer | ✅ | شماره فاکتور یا رفرنس پرداخت (با offset داخلی -10000 هنگام مقایسه در جدول فاکتورها) |
| branch | integer | ✅ | شناسهٔ شعبهای که پرداخت در آن انجام شده است |
Logic Flow
📥 دریافت ورودیهای
special_code و reference↓
۱. بررسی مشتری با کد ملی:
جستجو در جدول
اگر یافت نشود، پاسخ خطا با کد 404 و پیام "مسافر مورد نظر یافت نشد" برگردانده میشود.
جستجو در جدول
customers برای یافتن رکوردی با national_code = special_code.اگر یافت نشود، پاسخ خطا با کد 404 و پیام "مسافر مورد نظر یافت نشد" برگردانده میشود.
↓
۲. بررسی وجود فاکتور:
در جدول
در جدول
factors فیلدهای زیر بررسی میشوند:serial = reference - 10000branch = branch_idcustomer = customer.id
↓
۳. آمادهسازی درخواست برای TradeController:
افزودن پارامتر
تنظیم اپراتور فرضی:
افزودن پارامتر
id = reference به درخواست.تنظیم اپراتور فرضی:
{ id: 12, access: ... } برای اجرای تابع operationTrade.↓
۴. اجرای Trade Operation:
ساخت شیء
دادهٔ بازگشتی (JSON) شامل فاکتور و اقلام تراکنش واکشی میشود.
ساخت شیء
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فقط در صورتی وجود دارد که فاکتور دارای سرپرست یا مشتری اصلی باشد.