Skip to main content
#P1746

POST /v2/flights/ticket/information/{type}

L. Flight Ticket Information (Nira)

این اندپوینت برای استعلام اطلاعات دقیق بلیط‌های صادر شده از طریق سیستم تامین‌کننده نیرا (Nira) استفاده می‌شود. این سرویس قابلیت جستجو بر اساس "شماره بلیط" یا "PNR" را دارد و به صورت هوشمند وضعیت استرداد (Refund) بلیط را بررسی کرده و در صورت نیاز، جزئیات مالی استرداد (جریمه و مبلغ پرداختی) را از سیستم نیرا استخراج می‌کند.

Request Overview

URL: /v2/flights/ticket/information/{type}
Method: POST
Controller: V2BaseController@ticketInformation
Middleware: authWithJwt

Access Control

  • نیاز به توکن احراز هویت (JWT) دارد.
  • دسترسی بر اساس تنظیمات شعبه و سطح دسترسی کاربر کنترل می‌شود.

Path Parameters

Field Type Description
type string (الزامی) نوع وب‌سرویس. برای این مستند باید مقدار nira باشد.

Request Body Parameters

Field Type Description
service string (الزامی) کد یاتا (IATA) ایرلاین (مثلاً W5). جهت تعیین کانکشن استفاده می‌شود.
ticket_number string (اختیاری) شماره بلیط کامل. در صورت وجود، اولویت با این فیلد است.
pnr string (اختیاری) شماره رزرو. در صورت عدم ارسال شماره بلیط، سیستم بر اساس PNR جستجو می‌کند.

Logic Details

منطق پردازش در کنترلر به شرح زیر است:

  1. اعتبارسنجی اولیه:
    • اگر پارامتر type برابر با nira نباشد، خطای 409 بازگردانده می‌شود.
    • تنظیمات اتصال (Api Url, Username, Password) بر اساس شناسه شعبه کاربر یا شعبه پیش‌فرض (1) بارگذاری می‌شود.
  2. سناریوی ۱: جستجو با شماره بلیط (Ticket Number):
    • متد ticket_information نیرا فراخوانی می‌شود.
    • اگر StatusCode == 'R' (استرداد شده) باشد:
      • یک درخواست کامند (command) با مقدار DMB + ticket_number ارسال می‌شود.
      • پاسخ متنی با استفاده از Regex (متد getRefundedTicketData) پارس شده و فیلدهای RefundedAmount و Penalty استخراج می‌شوند.
  3. سناریوی ۲: جستجو با PNR:
    • متد reserve_information نیرا فراخوانی می‌شود.
    • روی تمام بلیط‌های موجود در رزرو (آرایه Tickets) حلقه زده می‌شود.
    • برای هر بلیط، منطق "بررسی استرداد" (مشابه سناریوی ۱) اجرا می‌شود.
    • باگ شناسایی شده: در کد فعلی، هنگام استعلام استرداد در حلقه PNR، به اشتباه از $request->ticket_number (که خالی است) استفاده می‌شود، در حالی که باید از شماره بلیط جاری حلقه استفاده شود.

Response Structure

پاسخ موفق (200 OK)

{
    "items": [
        {
            "TicketNo": "096-23651478",
            "PassengerName": "TEST USER",
            "StatusCode": "R",  // وضعیت استرداد
            "RefundData": {     // داده‌های استخراج شده استرداد
                "RefundDate": "14DEC2025",
                "Penalty": 500000,
                "RefundedAmount": 4500000
            },
            // ... سایر اطلاعات بلیط
        }
    ],
    "meta": {
        "timestamp": 1733738000
    }
}

پاسخ خطا

  • 409 Conflict: اگر سرویس (type) اشتباه باشد.
  • 500 Server Error: خطای اتصال به وب‌سرویس.

Flowchart

Start Request (POST)
Check Type == 'nira'
No
Return 409 Conflict
↓ (Yes)
Has Ticket Number?
↓ (No - Use PNR)
Call 'reserve_information'
Loop through Tickets
Extract Ticket Data
↓ (Yes)
Call 'ticket_information'
Extract Single Ticket
Is Ticket Refunded? ('R')
No
→ Skip
↓ (Yes)
Send Command 'DMB'
Parse Regex for Penalty
Enrich Response Item
Return 200 OK (JSON)