#P1465
* POST /api/v2/online/accommodation/check_status
Route InfoAccommodation Check Status (V2)
| / |
Controller: OnlineController@checkAccommodationStatus |
authWithJwt| / |
Controller: OnlineController@checkAccommodationStatus |
authWithJwtتابع بزرگاین و چندحالته است:اندپوینت براساس پارامتر جهت بررسی وضعیت رزرو اقامتگاه در نسخه دوم سیستم آنلاین طراحی شده است. مسیر پردازش بسته به نوع سرویس ($type (one of [tport, airplus, sepehr, snapptrip]) رزرو قفل میشود. برای هر سرویس دادههای mapped (ID های mapping_accommodation و roomtypes و board_type) گرفته میشود و سپس:
در نهایت اطلاعات قفل در جدول قیمت، کد لاک موقت یا پیام خطا – در جدول temporary_reservations ثبت ثبت میگردد.گردند.
POST /v2/online/accommodation/check_status
{
"type": "tport"airplus",
"accommodation": {
"id":331, 1549,
"room_type"checkin":{ "id":11,"board_type_list":{"id":5,"service":"tport"}}}2025-01-15",
"agentDetails"checkout":{ "mobile"2025-01-20",
"rooms": 2,
"0912xxxxxx","email"adults":"agent@test.ir" 4
}
}
{
"status": "success",
"changed": true,false,
"data"lock_id": {
"lock_data": {"Status":true,"Service":"tport","LockId":7139841,"total_payable":4120000}TMP-7634",
"payable": false,5840000,
"credit"errors": false,
"error": false[]
}
}
JWT معتبر + دسترسی ماژول Online لازم است. همهی پارامترها اعتبارسنجی میشوند.
/v2/online/accommodation/check_statustype و accommodationtype (Tport / Airplus / Sepehr / Snapptrip)calculate_price() → save_normal_reserve() → return lock_id1005–1026create_book() → return reservation_codetemporary_reservations{status, changed, lock_id, payable, errors[]}TportApi1005SepehrApiAirPlusApiSnappTripApi – ظرفیت پر شده استmapping_accommodations1010mapping_roomtypesmapping_board_type – اتاق در تاریخ انتخابی یافت نشدReservationController::capacityItemCharter(), taxesItemCharter(), financialCalculation()1026 – اطلاعات ناقص مسافرانUserController::upsertPassenger()errors[]temporary_reservationsبا درجه وابستگی به APIهای خارجی، میانگین پاسخ ۳–۸ ثانیه است. برای AirPlus بیشترین بار اعتبارسنجی داخلی دارد.
کدهای خطا از ۱۰۱۱ تا ۱۰۲۶ مطابق ReservationController::staticGetErrorDetails() برمیگردند.
بودن{"changed":false,"data":{"error":[{"code":1011,"message":"کدملی نامعتبر است"}]}}
ثبت داده در جدول temporary_reservations. در صورت موفقیت، LockId روی Booking با تاریخ expire موقت ذخیره ، هر درخواست تکراری (با دادهی یکسان) پیش از تریگر مجدد منطق بررسی از کش Redis مورد بررسی قرار میشود.گیرد.
در لاگ system_logs با نوع "AccommodationLockAttempt" و نتیجه Success/Failed ذخیره میشود.
این تابع قلب مرحلهی «رزرو موقت و پیشخرید» در pipeline رزرو آنلاین است و پس از آن تابع نهایی storeTrade() برای ثبت قطعی فراخوانی میشود.