В представленной статье описываются варианты использования API по определению IATA-кода города.
Введение
В этой статье описываются варианты использования API по определению IATA-кода города.
Данная информация будет полезна в следующих случаях:
- вы хотите оптимизировать размещение партнёрских инструментов на страницах вашего сайта. С помощью данного метода можно автоматически подставлять в виджеты IATA-коды городов;
- вы работаете с контекстной рекламой и хотите, чтобы при переходе по ссылке пользователь видел страницу с теми же городами вылета и назначения, что и в рекламе;
- в любых других ситуациях, когда нужно по названию городов вылета и прилёта определить их IATA-коды.
API позволяет определить IATA-коды городов вылета и назначения из поисковой фразы вида «Из Москвы в Лондон», где вместо «Москвы» может стоять любой город вылета, а вместо «Лондон» — любой город назначения. Кроме того, метод возвращает IATA-код столицы по названию страны.
Работа с API
Запрос отправляется на адрес:
https://www.travelpayouts.com/widgets_suggest_params?q=search
где вместо search подставляется требуемая фраза.
Пример запроса
https://www.travelpayouts.com/widgets_suggest_params?q=Из%20Москвы%20в%20Лондон
Пример ответа
{
"origin":{
"iata":"MOW",
"name":"Moscow"
},
"destination":{
"iata":"LON",
"name":"London"
}}
Содержимое ответа
- origin
- iata — IATA-код города отправления;
- name — название города отправления.
- destination
- iata — IATA-код города назначения;
- name — название города назначения.
Реализация запроса на PHP
Ниже приводится пример PHP-кода, который можно использовать у себя на сайте для определения IATA-кода города.
<?php
class TravelpayoutsParamsSuggester
{
static $url = 'https://www.travelpayouts.com/widgets_suggest_params?q=';
public function suggest($query) {
$url = self::$url . urlencode($query);
return self::get_json($url);
}
private function get_json($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
$answer = curl_exec($ch);
curl_close($ch);
return json_decode($answer);
} }
$example_result = TravelpayoutsParamsSuggester::suggest("Из Москвы в Цюрих"); ?>
Для любителей coffee доступен пример кода.
Где используется API
Полученный IATA-код может использоваться в формах поиска и партнёрских виджетах. Чтобы использовать код в форме поиска, установите на странице сайта расширенную поисковую форму. Не указывайте в ней IATA-коды городов отправления и назначения. На их месте укажите две переменные. Передайте в эти переменные значения IATA-кодов, полученные при помощи данного скрипта. В итоге на странице отобразится поисковая форма с заполненными городами вылета и назначения, совпадающими с поисковой фразой.
Основное направление для использования подобного подхода — это контекстная реклама Google Ads и Яндекс Директ. Создавая множество объявлений вида «Дешёвые билеты из Москвы в Симферополь», «Как быстрее долететь из Владивостока в Санкт-Петербург» и им подобным, передавайте часть рекламной фразы «… из Москвы в Симферополь» данному скрипту. В результате пользователь будет попадать на страницу с поиском билетов из Москвы в Симферополь.
Пример кода формы поиска
Код страницы со скриптом определения IATA-кодов и формой поиска (с размещёнными в ней полученными параметрами) выглядит следующим образом:
<?php
class TravelpayoutsParamsSuggester
{
static $url = 'https://www.travelpayouts.com/widgets_suggest_params?q=';
public function suggest($query) {
$url = self::$url . urlencode($query);
return self::get_json($url);
}
private function get_json($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_FAILONERROR, 1);
$answer = curl_exec($ch);
curl_close($ch);
return json_decode($answer);
}
}
$widget_params = TravelpayoutsParamsSuggester::suggest("Из Москвы в Цюрих");
?>
<script charset="UTF-8" type="text/javascript">
window.TP_FORM_SETTINGS = window.TP_FORM_SETTINGS || {};
window.TP_FORM_SETTINGS["4677677a69f7a4291f985e1c4ce13cb7"] = {
"handle": "4677677a69f7a4291f985e1c4ce13cb7",
"widget_name": "Поисковая форма #10",
"border_radius": "2",
"additional_marker": null,
"width": 620,
"show_logo": true,
"show_hotels": true,
"form_type": "avia_hotel",
"locale": "ru",
"currency": "rub",
"sizes": "default",
"search_target": "_blank",
"active_tab": "avia",
"search_host": "engine.aviasales.ru",
"hotels_host": "hotellook.ru/search",
"hotel": "",
"hotel_alt": "",
"avia_alt": "",
"id": 29551,
"marker": 21553,
"origin": {
"name": "<?php echo $widget_params["origin"]["name"] ?>",
"iata": "<?php echo $widget_params["origin"]["iata"] ?>"
},
"destination": {
"name": "<?php echo $widget_params["destination"]["name"] ?>",
"iata": "<?php echo $widget_params["destination"]["iata"] ?>"
},
"color_scheme": {
"name": "white_blue",
"icons": "icons_blue",
"background": "#ffffff",
"color": "#000000",
"border_color": "#c1c1c1",
"button": "#1b9ed9",
"button_text_color": "#ffffff"
},
"hotels_type": "hotellook_host",
"best_offer": {
"locale": "ru",
"currency": "rub",
"marker": ЗдесьВашМаркер,
"search_host": "engine.aviasales.ru",
"offers_switch": true,
"api_url": "//www.travelpayouts.com/minimal_prices/offers.json",
"routes": [
{
"one_way": false,
"origin": {
"name": ""
},
"destination": {
"name": ""
}
}
]
},
"hotel_logo_host": "hotellook.ru",
"search_logo_host": "www.aviasales.ru",
"hotel_marker_format": "marker=",
"hotelscombined_marker": null,
"height": 361
};
</script>
<script charset="UTF-8" src="//www.travelpayouts.com/widgets/4677677a69f7a4291f985e1c4ce13cb7.js?v=270"></script>
Пример кода виджета
Код страницы со скриптом определения IATA-кодов и виджетом календаря низких цен (с размещёнными в нём полученными параметрами) выглядит следующим образом:
<?php class TravelpayoutsParamsSuggester { static $url = 'https://www.travelpayouts.com/widgets_suggest_params?q='; public function suggest($query) { $url = self::$url . urlencode($query); return self::get_json($url); } private function get_json($url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FAILONERROR, 1); $answer = curl_exec($ch); curl_close($ch); return json_decode($answer, true); }
} $widget_params = TravelpayoutsParamsSuggester::suggest("Из Москвы в Цюрих"); ?> <script src="//www.travelpayouts.com/calendar_widget/iframe.js?marker=77110&origin=<?php echo $widget_params['origin']['iata']?>&destination=<?php echo $widget_params['destination']['iata']?>¤cy=rub&searchUrl=hydra.aviasales.ru&one_way=false&only_direct=false&locale=ru&period=year&range=7%2C14&width=800" async></script>
Ограничения
Скрипт имеет ряд ограничений, о которых необходимо помнить:
- скрипт не понимает опечатки;
- поддерживается только русский язык для поисковых фраз;
- скрипт не содержит вариантов из автокомплита.