#P1799
GET /b2c/v1/online/accommodation/get_room_type_prices
Get Room Type Prices
این اندپوینت کلیهٔ قیمتهای مرتبط با نوع اتاق (RoomType) را از سرویسدهندگان مختلف واکشی و تجمیع میکند. پس از محاسبهٔ قیمت خالص (Net)، قیمت اصلی (Board)، و ماکاپها برای هر تأمینکننده، نتیجهی مرتبشده و کمترین قیمت محاسبهشده در Redis ذخیره میشود. این ورودی، موتور قیمتگذاری اصلی صفحه هتل در B2C است.
Endpoint Info
URL:
/b2c/v1/online/accommodation/get_room_type_pricesMethod: GET
Controller:
V1OnlineController@getRoomTypePricesService:
LibBaseService::getRoomTypePricesAuth: Public (No JWT Required)
Query Parameters
| پارامتر | نوع | ضروری | توضیح |
|---|---|---|---|
| accommodation_id | integer | ✅ | شناسهٔ اقامتگاه در جدول hotels. |
| checkin_date | string (YYYY-MM-DD) | ✅ | تاریخ ورود. |
| checkout_date | string (YYYY-MM-DD) | ✅ | تاریخ خروج. |
| branch | integer | ✅ | شناسه شعبه برای پردازش قیمت نهایی. |
| group | integer | ❌ | شناسه گروه کاربری. |
| level | integer | ❌ | سطح کاربری (برای تفکیک نرخگذاری مارکاپ). |
| adults_count | integer | ❌ | تعداد بزرگسال؛ فیلتر ظرفیت اتاقها. |
| children_count | integer | ❌ | تعداد کودک؛ فیلتر ظرفیت. |
Logical Flow
درخواست دریافت میشود و مقدار
accommodation_id از mapping_accommodations خوانده میشود.↓
RoomType Join
واکشی تمام رکوردهای
واکشی تمام رکوردهای
accommodation_roomtypes با join روی mapping_roomtypes برای شناسههای تپورت، سپهر، ایرپلاس و اسنپتریپ.↓
Activate Providers
بررسی فعال بودن اینترفیسهای سرویسدهنده در جدول
فعالهای معمول:
بررسی فعال بودن اینترفیسهای سرویسدهنده در جدول
application_interface.فعالهای معمول:
tport، sepehr_hotel، snapptrip_hotel، و AirPlus (همیشه فعال).↓
Tport Price Fetch
🔹 فراخوانی
ذخیره در
🔹 فراخوانی
TportApi::get_hotel_room_price واکشی مالیات و قیمت هر روز → محاسبهی تجمعی و markups از BaseService::getRoomTypeMarkups.ذخیره در
$room->board_type_list[].↓
Sepehr Prices
🔹 فراخوانی
🔹 فراخوانی
SepehrApi::search_by_city_and_date بر اساس IATA مقصد. واکشی RoomTypeList و RateDetailList. فیلتر + مارکاپ → ایجاد Financial array.↓
AirPlus Prices
🔹 فراخوانی
بررسی ظرفیت در جدولهای رزرو موقت از
🔹 فراخوانی
AirPlusApi::search با نوع accommodation. محاسبه قیمت روزانه بزرگسال/کودک/تخت اضافه → ذخیره در فیلد financial_total.بررسی ظرفیت در جدولهای رزرو موقت از
ReservationController::getAccommodationRooms().↓
SnappTrip Prices
🔹 فراخوانی
🔹 فراخوانی
SnappTripApi::get_hotel_availability. قیمتهای نهایی بر اساس pricing.original_sell_price و تعداد روز اقامت محاسبه میشوند. ضرب در 10 برای تبدیل به ریال.↓
Sort + Cache
مرتبسازی بر اساس کمترین
مرتبسازی بر اساس کمترین
net_price از فیلد financial_total. ذخیرهٔ کمترین قیمت با کلید Redis accommodations:min_price:{id} و TTL تطبیقی.Redis Cache Logic
| درجهٔ هتل | TTL (seconds) | توضیح |
|---|---|---|
| rate = 5 | 21600 | نرخ گذاری زیاد تغییر میکند. |
| rate = 4 | 43200 | دورهٔ بهروزرسانی متوسط. |
| rate = 3 | 172800 | پایدار دو روزه؛ قیمت ثابتتر. |
| سایر | 604800 | هتلهای کمتردد؛ TTL یک هفته. |
| قیمت صفر | 43200 | در صورت عدم دریافت نرخ معتبر. |
Response Structure
| کلید | توضیح |
|---|---|
| Status | true در صورت واکشی موفق. |
| Time | تایماستمپ unix. |
| Data | آرایهای از RoomTypeها؛ هر آیتم شامل جزئیات board_type_list، قیمتها، و ظرفیت خرید. |
نمونه خروجی موفق
{
"Status": true,
"Time": 1733744200,
"Data": [
{
"id": 10502,
"fa_title": "اتاق دوتخته فول برد",
"purchase_capacity": 3,
"board_type_list": [
{
"service": "airplus",
"financial_total": {
"board_price": 4860000,
"net_price": 4500000,
"markup": 0.07
},
"supplier": { "id": 28, "title_fa": "AirPlus Hub" }
}
]
}
]
}