#P1465
POST /api/v2/online/accommodation/check_status
Route Info
| Method | Endpoint | Controller | Input | Purpose |
| POST | /api/v2/online/accommodation/check_status | OnlineController@checkAccommodationStatus | JSON Body | بررسی و قفل رزرو (Booking Lock) در Providerهای Tport, Sepehr, AirPlus, SnappTrip |
Logic
تابع بزرگ و چندحالته است: براساس پارامتر $type (one of [tport, airplus, sepehr, snapptrip]) رزرو قفل میشود. برای هر سرویس دادههای mapped (ID های mapping_accommodation و roomtypes و board_type) گرفته میشود و سپس:
- Tport: فراخوانی دو API calculate_price و save_normal_reserve → تولید LockId.
- AirPlus: ولیدیشن مسافر (کدملی/پاسپورت/تاریخ سن/ظرفیت) و مقایسه Lock موقت با DB charters.
- Sepehr: خواندن مستقیم از Lock Data ذخیرهشده.
- SnappTrip: ایجاد booking با API create_book و برگشت reservation_code.
در نهایت اطلاعات قفل در جدول temporary_reservations ثبت میگردد.
Input
{
"type":"tport",
"accommodation":{"id":331,"room_type":{"id":11,"board_type_list":{"id":5,"service":"tport"}}},
"agentDetails":{"mobile":"0912xxxxxx","email":"agent@test.ir"}
}
Response
{
"changed": true,
"data": {
"lock_data": {"Status":true,"Service":"tport","LockId":7139841,"total_payable":4120000},
"payable": false,
"credit": false,
"error": false
}
}
Security
JWT معتبر + دسترسی ماژول Online لازم است. همهی پارامترها اعتبارسنجی میشوند.
Dependencies
TportApi,SepehrApi,AirPlusApi,SnappTripApimapping_accommodations,mapping_roomtypes,mapping_board_typeReservationController::capacityItemCharter(), taxesItemCharter(), financialCalculation()UserController::upsertPassenger()temporary_reservationsDB table
Performance
با درجه وابستگی به APIهای خارجی، میانگین پاسخ ۳–۸ ثانیه است. برای AirPlus بیشترین بار اعتبارسنجی داخلی دارد.
8. Error Handling
کدهای خطا از ۱۰۱۱ تا ۱۰۲۶ مطابق ReservationController::staticGetErrorDetails() برمیگردند.
{"changed":false,"data":{"error":[{"code":1011,"message":"کدملی نامعتبر است"}]}}
9. Side Effects
ثبت داده در جدول temporary_reservations. در صورت موفقیت، LockId روی Booking با تاریخ expire موقت ذخیره میشود.
10. Audit Trail
در لاگ system_logs با نوع "AccommodationLockAttempt" و نتیجه Success/Failed ذخیره میشود.
11. Improvement
- مدیریت queue برای API های بیرونی.
- افزودن timeout و retry برای Tport و SnappTrip.
- بازگردانی LockTTL در خروجی (زمان اعتبار قفل).
12. Conclusion
این تابع قلب مرحلهی «رزرو موقت و پیشخرید» در pipeline رزرو آنلاین است و پس از آن تابع نهایی storeTrade() برای ثبت قطعی فراخوانی میشود.