🧾 Техническое задание

Разработка адаптивного туристического сайта с админ-панелью на PHP

Бюджет: 500 USD

Срок: 10 календарных дней

Отлично. Ниже — пошаговая инструкция для программиста по интеграции с TravelPayouts (Aviasales) в контексте нашей задачи: автоматическая подстановка авиабилетов и отелей из страны клиента в город тура.

🧭 Пошаговая инструкция для программиста: интеграция с TravelPayouts

🎯 Цель:

На карточке каждого тура автоматически отображать:

  • билеты из страны пользователя в город тура (например, Алматы);

  • отели в этом же городе;

  • данные подставляются автоматически по геолокации (GeoIP), без ручного выбора или поиска пользователем.

🔧 Шаг 1. Регистрация и получение API-ключей

  1. Зарегистрироваться на платформе TravelPayouts:
    👉 https://www.travelpayouts.com/

  2. После регистрации — подтвердить email и заполнить базовую информацию о проекте.

  3. Перейти в раздел “Tools → API” и сгенерировать API-токен (или использовать стандартный партнёрский ID — marker).

  4. Убедиться, что у вас есть доступ как минимум к:

    • Aviasales (перелёты)

    • Hotellook (отели)

🌍 Шаг 2. Определение локации пользователя

  1. Использовать сторонний сервис для GeoIP (например, ip-api.com, ipinfo.io, либо TravelPayouts Geo API).
    Пример API:

https://ipapi.co/json/


  1. Получить country_code (например, “SA” — Saudi Arabia) и city (если доступен).

✈️ Шаг 3. Подстановка направления «From» → «To»

  1. В карточке тура у нас уже указан город, где проходит тур (например, Almaty). Его надо зафиксировать как “To”.

  2. С помощью GeoIP получаем “From” — код города/аэропорта или страны пользователя.

  3. Сформировать ссылку (или embed-виджет) Aviasales:
    Пример:

https://www.aviasales.com/search/{FROM}{TO}{DATE1}{DATE2}1


    • FROM — код города пользователя (например, JED для Jeddah)

    • TO — код города тура (например, ALA для Алматы)

    • DATE1 — дата вылета (можно поставить ближайшую по умолчанию)

    • DATE2 — дата обратного вылета (опционально)


  1. Альтернатива: использовать iframe или виджет с подстановкой маркера (partner marker).

🏨 Шаг 4. Подстановка отелей

  1. Сформировать виджет отелей (Hotellook) на нужный город тура:
    Пример:

<iframe src="https://search.hotellook.com/?marker={MARKER}&location=Almaty&locale=en" width="100%" height="500"></iframe>


  1. MARKER — ваш партнёрский ID с TravelPayouts (обязательно для отслеживания дохода).

🔗 Шаг 5. Размещение в карточке тура

  1. Под карточкой тура разместить два блока:

    • “Plane tickets from your country” — с виджетом перелётов.

    • “Hotels in [город тура]” — с виджетом отелей.

  2. Виджеты должны появляться автоматически, без участия пользователя.

🧪 Шаг 6. Тестирование

  1. Протестировать, как подставляются направления при входе с разных IP (использовать VPN или подставной IP).

  2. Убедиться, что отели и билеты загружаются корректно, нет ошибок с CORS/iframe.

💰 Как получать доход

  1. Все покупки (билетов, отелей), совершённые через ваш виджет, приносят комиссию.

  2. Комиссия отслеживается по partner marker (маркеру), указанному в ссылках и iframe.

  3. Статистика и выплаты — в личном кабинете TravelPayouts.

❗Важно:

  • Не нужен отдельный поиск по билетам или отелям.

  • Всё должно работать по умолчанию, на основе местоположения клиента и города тура.

  • По умолчанию можно задать дату тура как ближайшую дата DATE в ссылке поиска.

Оплата: 50% предоплата / 50% после сдачи

🔧 Описание задачи:

Необходимо разработать сайт для продажи туров с адаптивной версткой и собственной CMS на PHP (Laravel, Yii2 или без фреймворка). Админка должна быть максимально простой, но удобной: всё должно редактироваться без программиста.

Макеты предоставлены:

  • Desktop-версии — в PDF (для ознакомления)

  • Мобильная версия — в Figma (исходник)

  • Контент — есть, предоставим при старте

📄 Основной функционал:

  1. Управление контентом (через админку)

    • Редактирование всех текстов на сайте (используя WYSIWYG-редактор, например TinyMCE)

    • Возможность изменять контакты, названия блоков, описание туров и т.д.

    • Добавление/удаление туров и турпакетов

  2. Система туров и пакетов:

    • Название, описание, фото, длительность, стоимость

    • 3 типа пакетов (Standart, Comfort, VIP)

    • Для VIP-пакета — наличие чекбоксов / тэгов (Horse Riding, Fishing и пр.) в виде справочников

    • Возможность задавать количество мест в каждом пакете, которое автоматически уменьшается при бронировании

  3. Личный кабинет (frontend + backend):

    • Регистрация/авторизация по email

    • История заказов

    • Персональные данные с возможностью редактирования

  4. Процесс бронирования:

    • Пошаговая форма брони тура (без онлайн-оплаты)

    • Отправка уведомления на email и/или Telegram-бот (простейший вариант)

  5. Список страниц в проекте:

    • Главная

    • Карточка тура

    • Список туров

    • Пакеты туров

    • Страница “О нас”

    • Отзывы

    • Личный кабинет

    • История заказов

    • Футер + контакты

    • Скачивание ваучера / подтверждения в PDF

✅ Технические требования:

  • CMS на PHP: Laravel, Yii2 или без фреймворка

  • Адаптивная вёрстка

  • Установка на хостинг

  • Использование TinyMCE (или аналогичного) для текстовых полей

  • Возможность перевода на другие языки в будущем (многоязычие не делаем сейчас, но предусмотреть)

💡 Дополнительно (по TravelPayouts):

По желанию заказчика предусмотрена интеграция с TravelPayouts (Aviasales).

Суть модуля:

  • Определение страны пользователя по GeoIP

  • Автоматическая подстановка в карточке тура:

    • направления авиаперелёта из страны клиента в город проведения тура

    • список отелей в этом же городе

  • Без отдельного поиска по билетам и отелям — только подстановка блока/виджета в нужный тур

Документация TravelPayouts API:

👉 https://travelpayouts.github.io/slate/

Если разработчик не сможет реализовать интеграцию с TravelPayouts, просим указать отдельно стоимость за создание сайта без этой интеграции — из расчёта общего бюджета 500 USD.

5 часов назад
Максим
 
42 года
18 лет в сервисе
Был
5 часов назад
359 отзывов

Заявки фрилансеров

Вадим
 
18 лет
2 года в сервисе
Был
2 часа назад
7 отзывов(-2)
3 часа назад
Алексей
 
42 года
3 года в сервисе
Был
20 минут назад
23 отзыва
3 часа назад
Лучший веб-программист июня
Ойбек
 
29 лет
5 месяцев в сервисе
Был
3 часа назад
3 часа назад
Павел
 
26 лет
14 дней в сервисе
Был
час назад
4 часа назад
Владислав
 
26 лет
год в сервисе
Был
2 часа назад
4 часа назад
Станіслав
 
18 лет
2 года в сервисе
Был
5 часов назад
5 отзывов
5 часов назад