#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
منطق پردازش در کنترلر به شرح زیر است:
- اعتبارسنجی اولیه:
- اگر پارامتر
typeبرابر باniraنباشد، خطای409بازگردانده میشود. - تنظیمات اتصال (Api Url, Username, Password) بر اساس شناسه شعبه کاربر یا شعبه پیشفرض (1) بارگذاری میشود.
- اگر پارامتر
- سناریوی ۱: جستجو با شماره بلیط (Ticket Number):
- متد
ticket_informationنیرا فراخوانی میشود. - اگر
StatusCode == 'R'(استرداد شده) باشد:- یک درخواست کامند (
command) با مقدارDMB + ticket_numberارسال میشود. - پاسخ متنی با استفاده از Regex (متد
getRefundedTicketData) پارس شده و فیلدهایRefundedAmountوPenaltyاستخراج میشوند.
- یک درخواست کامند (
- متد
- سناریوی ۲: جستجو با 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
Parse Regex for Penalty
↓
Enrich Response Item
↓
Return 200 OK (JSON)