API қосылу

Онлайн-брондау жүйелерін қосуға арналған API

турлар тізілімі жүйесіне (31.05.2022 ж.)

Жалпы шарттар

Турлар тізілімі жүйесі туроператорлардың онлайн-брондау қосымшаларынан турларды автоматты түрде қосу үшін бағдарламалық шлюзге ие. Шлюз HTTPS-хаттамасын және JSON-деректерін беру форматын қолданады, аутентификация JSON-құрылымының ішіндегі айнымалылар арқылы жүзеге асырылады.

Қосылу HTTPS-хаттамасы үшін стандартты 443/tcp порты (production) және HTTP-хаттамасы үшін 80/tcp порты (тестілеу үшін) арқылы жүргізіледі (жөндеуді жеңілдету мақсатында). HTTP-тақырыптарында Content-Type тақырыбының мәні application/json болуы және User-Agent тақырыбының мәні онлайн-брондау бағдарламасы мен БҚ нұсқасын біржақты анықтауға мүмкіндік беретін кез келген мән болуы тиіс. POST HTTP-әдісі қолданылады. Сұрау сервердің түбіріне жіберіледі. Сұраудың негізгі бөлігінде жарамды JSON-сұрау құрылымы болуы тиіс.

Тестілеу платформасы:

  • Мекенжайы: http://test.fondkamkor.kz
  • Логин: test
  • Құпия сөз: test

Алдымен деректерді тестілеу платформасында жөндеңіз. Содан кейін, нақты деректерді жіберуге дайын болғанда, жұмыс платформасына қол жеткізу үшін техникалық қолдау қызметімен байланысыңыз.

Бір жерде болумен туркодты жасау

wget -q -O - 'http://test.fondkamkor.kz' -S --post-file=create.json --header 'Content-Type: application/json'

При этом файл create.json файлы келесіні қамтиды:

{
    "input":{
        "q_touragent":"ADIYA TRAVEL",
        "q_touragent_bin":"123456789012",
        "q_country":"Россия",
        "q_countryen":"Russia",
        "q_airport_start":"ALA",
        "q_airlines":"DV",
        "q_airport":"AAQ",
        "q_date_from":"17.11.2018",
        "q_date_to":"24.11.2018",
        "q_days":8,
        "q_remark":"tour notes here",
        "clientcounter":0,
        "c_name_0":"Client_$CID",
        "c_borned_0":"01.01.1970",
        "c_doc_date_0":"02.11.2016",
        "c_doc_number_0":"N08462365",
        "c_doc_production_0":"MIA OF RK"
    },
    "module":"voucher",
    "section":"partner",
    "object":"queries",
    "param1":"163",
    "param2":"save",
    "formid":163,
    "agentlogin":"test",
    "agentpass":"test",
    "return":"q_number"
}

Сервис жауабы шамамен келесідей болады:

  HTTP/1.1 200 OK
  Server: nginx/1.1.4
  Content-Type: application/json;charset=UTF-8
  Connection: close
  Cache-Control: no-store, no-cache, must-revalidate
  Pragma: no-cache
  Date: Sat, 19 Nov 2016 22:57:01 GMT
  FastCGI-PID: 17961{"status":200,"string":"4Ru61117-33"}

Сұрау және жауап құрылымдарын егжей-тегжейлі түсіндіру:

Сұрау

Переменная Назначение поля Обяз. Формат Описание
module Жүйе модулінің атауы Да строка турлармен және анықтамалықтармен жұмыс істеу үшін мәні “voucher” болуы тиіс
section Аутентификация режимі Да строка туроператорлардың жүйелерін қосу үшін мәні “partner” болуы тиіс
object Әдіс атауы Да строка “queries” немесе “dictionaries” болуы мүмкін
param1, formid Деректер үлгісінің ID Да число туроператорлардың жүйелерін қосу үшін мәні 163-ке тең болуы тиіс
param2 Тур бойынша әрекет Да строка save – турды сақтаған кезде, bad – турды бүлдірген кезде
return Қайтарылатын тур өрісі Да строка Қайтарылатын айнымалының атауы. q_number ТУРКОДТЫ қамтиды.
agentlogin Туроператор логині Да строка Тестілеу платформасында – test
agentpass Туроператор құпия сөзі Да строка Тестілеу платформасында – test

Хеш (объект) input:

Переменная Назначение поля Обяз. Формат Описание
q_touragent Турагент-фирманың атауы Да строка Турагентті табуға мүмкіндік беретін атау.
q_touragent_bin Турагент-фирманың БСН Да строка Турагент компаниясының БСН (12 сан).
q_country Елдің орыс тіліндегі атауы Да строка Елдер анықтамалығында болуы тиіс.
q_countryen Елдің ағылшын тіліндегі атауы Да строка Елдер анықтамалығында болуы тиіс.
q_airlines Авиажелілердің IATA-коды Да [A-Z0-9]{2} Анықтамалықта болуы тиіс. Соңғы әуе компаниясының кодын көрсетіңіз (қайтару).
q_airport_start Ұшып шығу әуежайының IATA-коды Да [A-Z]{3} Анықтамалықта болуы тиіс (Қазақстан).
q_airport Ұшып келу әуежайының IATA-коды Да [A-Z]{3} Анықтамалықта болуы тиіс (демалыс елі).
q_date_from Турдың басталу күні (ұшып шығу) Да ДД.ММ.ГГГГ Күн болашақта болуы тиіс.
q_date_to Турдың аяқталу күні (ұшып келу) Да ДД.ММ.ГГГГ Күн басталу күнінен үлкен болуы тиіс.
q_days Тур күндерінің саны Нет число Бірден кем болмауы тиіс.
q_remark Тур бойынша ескертулер Нет строка
q_hotel Қонақүй атауы Нет строка Тұратын қонақүйдің атауы.
q_flight Баратын әуе рейсінің нөмірі Нет строка Қазақстаннан демалыс еліне ұшатын рейс нөмірі.
q_flight_from Кері әуе рейсінің нөмірі Нет строка Кері рейс нөмірі (турпакеттегі соңғы ұшу).
clientcounter Туристер санауышы Да число Туристер санынан бірге кем сан (1 турист үшін = 0).
c_name_0 1-туристің аты-жөні Да строка Т.А.Ә. Егер берілмесе, “Client_$CID”.
c_borned_0 1-туристің туған күні Да ДД.ММ.ГГГГ Өткен шақта болуы тиіс. Егер хабарланбаса, “01.01.1970”.
c_doc_date_0 1-туристің төлқұжатының берілген күні Нет ДД.ММ.ГГГГ Күн өткен шақта болуы тиіс.
c_doc_number_0 1-туристің төлқұжат нөмірі Да строка Сандар мен әріптерге рұқсат етіледі, 15 символға дейін.
c_doc_production_0 Төлқұжатты берген мемлекеттік орган Нет строка Мемлекеттік органның аббревиатурасы.

Жауап

Название поля Назначение поля Формат Описание
status Жауап коды число 200 – сәтті, басқа мән – қате.
string Жауап мәтіні строка Егер қате болса – оның мәтіні, егер сәтті болса – ТУРКОД.

Жіберілген турда тек бір туристке рұқсат етіледі, әйтпесе сервис қате қайтарады. Туроператордың БҚ-сы қайтарылған ТУРКОДТЫ әр туристке тағайындап, тиісті басып шығарылатын құжаттарда көрсетуі тиіс.

Бірнеше жерде болумен туркодты жасау

Бірнеше ұшумен күрделі турлар үшін қосымша деректер.

`input` ішіндегі қосымша өрістер

Переменная Назначение поля Обяз. Формат Описание
offercounter Қосымша ұшулар санауышы Да число Қосымша ұшулар санынан 1-ге кем сан. (Мысалы, 3 қосымша ұшу үшін = 2).
offertype_0 Қосымша трансфер түрі Да строка Қолдау көрсетілетін жалғыз мән – “flight”.
o_date_from_0 Басталу күні (қосымша ел) Да ДД.ММ.ГГГГ Осы қосымша ұшудың ұшып келу күні.
o_date_to_0 Аяқталу күні (қосымша ел) Да ДД.ММ.ГГГГ Жаңа орыннан кету күні.
o_airlines_0 Әуе компаниясының коды (қосымша) Да строка q_airlines-пен бірдей, бірақ қосымша ұшу үшін.
o_airport_0 Әуежай коды (қосымша ел) Да строка q_airport-пен бірдей, бірақ қосымша ұшу үшін.
o_flight_0 Әуе рейсінің нөмірі (қосымша) Нет строка q_flight-пен бірдей, бірақ қосымша ұшу үшін.
o_country_0 Болу елі (орыс.) (қосымша) Да строка q_country-мен бірдей, бірақ қосымша ұшу үшін.
o_hotel_0 Қонақүй атауы (қосымша) Нет строка q_hotel-мен бірдей, бірақ қосымша ұшу үшін.

Айнымалы атауының соңындағы мәнді (_0) әрбір келесі ұшу үшін бірге арттыру қажет (_1, _2 және т.б.).

Күрделі турға арналған create.json мысалы:

{
    "input":{
        "q_touragent":"ADIYA TRAVEL",
        "q_touragent_bin":"123456789012",
        "q_country":"Россия",
        "q_countryen":"Russia",
        "q_airport_start":"ALA",
        "q_airlines":"DV",
        "q_airport":"AAQ",
        "q_date_from":"17.11.2018",
        "q_date_to":"24.11.2018",
        "q_days":8,
        "q_remark":"tour notes here",
        "clientcounter":0,
        "c_name_0":"Client_$CID",
        "c_borned_0":"01.01.1970",
        "c_doc_date_0":"02.11.2016",
        "c_doc_number_0":"N08462365",
        "c_doc_production_0":"MIA OF RK",
        
        "offercounter":1,
        "offertype_0":"flight",
        "o_date_from_0":"19.11.2018",
        "o_date_to_0":"21.11.2018",
        "o_airlines_0":"TK",
        "o_airport_0":"IST",
        "o_country_0":"Турция",
        
        "offertype_1":"flight",
        "o_date_from_1":"21.11.2018",
        "o_date_to_1":"24.11.2018",
        "o_airlines_1":"TG",
        "o_airport_1":"BKK",
        "o_country_1":"Таиланд"
    },
    "module":"voucher",
    "section":"partner",
    "object":"queries",
    "param1":"163",
    "param2":"save",
    "formid":163,
    "agentlogin":"test",
    "agentpass":"test",
    "return":"q_number"
}

Туркодты бүлдіру

Егер тур өзгерсе, ескі турдың күшін жою (оны “бүлдіру” деп белгілеу), жаңасын жасау және жаңа ТУРКОД алу қажет. Егер ескісінің күші жойылмаса, жарна екі рет есептен шығарылады.

wget -q -O - 'http://test.fondkamkor.kz' -S --post-file=bad.json --header 'Content-Type: application/json'

Бұл ретте bad.json файлы келесіні қамтиды:

{
    "input":{
        "msg":"Аннулируйте туркод - в нем неправильно указан город прилета. Верный туркод - 123456-7890",
        "replyto":"manager@touroperator.kz"
    },
    "module":"voucher",
    "section":"partner",
    "object":"queries",
    "param1":"4Ru61117-32",
    "param2":"bad",
    "agentlogin":"test",
    "agentpass":"test"
}

Сервис жауабы шамамен келесідей болады:

  HTTP/1.1 200 OK
  Server: nginx/1.1.4
  Content-Type: application/json;charset=UTF-8
  Connection: close
  Cache-Control: no-store, no-cache, must-revalidate
  Pragma: no-cache
  Date: Sat, 19 Nov 2016 22:57:01 GMT
  FastCGI-PID: 17961{"target":"/Voucher/partner/queries/33/view","status":200,
"string":"
Сіз сұралған мекенжайға бағытталасыз
..."}

Сұрау және жауап құрылымдарын егжей-тегжейлі түсіндіру:

Сұрау

Переменная Назначение поля Обяз. Формат Описание
param1 ТУРКОД Да число Тізілімде тур табылатын ТУРКОД.
param2 Тур бойынша әрекет Да строка bad – турды бүлдірген кезде.

Хеш (объект) input:

Переменная Назначение поля Обяз. Формат Описание
msg Сипаттама мәтіні Да строка Бас тарту себебін түсіндіру. Мағыналы болуы тиіс.
replyto Оператордың E-mail мекенжайы Да строка Байланыс үшін кері мекенжай.

Жауап

Название поля Назначение поля Формат Описание
target Күші жойылған турға сілтеме строка Браузерде қарауға арналған URL-мекенжайы.

ТУРКОДТЫ жасауды қайталау функциясы

Сервис қолжетімсіз болған немесе туроператордың БҚ-сында қателер болған жағдайда, ол кейінірек (біршама уақыттан кейін, бірден емес) ТУРКОДТЫ қайта алуға тырысуы немесе қызметкерлерге хабарлауы тиіс.

Сұраулардың шексіз циклдарын жасамаңыз. БҚ әрекеттерді шектеуі (мысалы, тәулікпен немесе N-санымен) және жауапты қызметкерлерге хабарлауы тиіс. Қателердің себептері әртүрлі болуы мүмкін:

  • Туроператордың аккаунты бұғатталған.
  • Шоттағы ақша бітті.
  • Сұрау өрістеріндегі қателер.

Шексіз әрекеттер екі жүйенің де шамадан тыс жүктелуіне әкелуі мүмкін.

Анықтамалық әдістер

Тур параметрлеріндегі атауларды (елдер, әуежайлар) синхрондау үшін анықтамалықтар қажет. Белгісіз мәндері бар турлар өңделмейді.

Анықтамалық сұрауы

Переменная Назначение поля Обяз. Формат Описание
object Әдіс атауы Да строка Мәні dictionaries болуы тиіс
param1 Әрекет Да строка Рұқсат етілген жалғыз әрекет – get
param2 Анықтамалық атауы Да строка Қолжетімділері: countries (елдер), airports (әуежайлар), airlines (авиажелілер), agents (агенттер)

Хеш (объект) input:

Переменная Назначение поля Обяз. Формат Описание
what Сұралатын өрістер массиві Нет список строк Егер көрсетілмесе, барлық бағандар шығарылады.
output Жауап құрылымы Нет строка Егер көрсетілмесе, variants массиві тізімдерді емес, объектілерді қамтиды.

Жауап

Название поля Назначение поля Формат Описание
target Күші жойылған турға сілтеме строка Браузерде қарауға арналған URL-мекенжайы.

Елдер бойынша деректер массивін алу:

wget -q -O - 'http://test.fondkamkor.kz' -S --post-file=dict_countries.json --header 'Content-Type: application/json'

Файл dict_countries.json:

{
    "input":{
        "what":["country","countryen","currency"],
        "output":"array"
     },
     "module":"voucher",
     "section":"partner",
     "object":"dictionaries",
     "param1":"get",
     "param2":"countries",
     "agentlogin":"test",
     "agentpass":"test"
}

Сервис жауабы:

  HTTP/1.1 200 OK
  ...
  FastCGI-PID: 17961{"variants":[["Австралия","Australia","USD"],["Австрия","Austria","EUR"],...],"dictname":"countries"}

Әуежайлар бойынша деректер массивін алу:

wget -q -O - 'http://test.fondkamkor.kz' -S --post-file=dict_airports.json --header 'Content-Type: application/json'

Файл dict_airports.json:

{
    "input":{
        "what":["iata","icao","country","countryen"],
        "output":"array"
     },
     "module":"voucher",
     "section":"partner",
     "object":"dictionaries",
     "param1":"get",
     "param2":"airports",
     "agentlogin":"test",
     "agentpass":"test"
}

Авиажелілер бойынша деректер массивін алу:

wget -q -O - 'http://test.fondkamkor.kz' -S --post-file=dict_airlines.json --header 'Content-Type: application/json'

Файл dict_airlines.json:

{
    "input":{
        "what":["iata","icao","country","airline","companyname","address","airline_url"],
        "output":"array"
     },
     "module":"voucher",
     "section":"partner",
     "object":"dictionaries",
     "param1":"get",
     "param2":"airlines",
     "agentlogin":"test",
     "agentpass":"test"
}

Қолмен тексеру үшін XLS файлдарына сілтемелер:

Егер сіз “Invalid Country/IATA combination” немесе “Invalid Country/IATA code” қатесін кездестірсеңіз, бірақ деректерге сенімді болсаңыз, анықтамалықтарды жаңарту үшін техникалық қолдау қызметіне хабарласыңыз.

Ұсыныс ретінде

  1. Өз бағдарламаңызға “ТУРКОД” ұғымын енгізіңіз. ТУРКОДТЫ туристке/өтінімге байланыстырып, оған мәртебе (белсенді, бүлінген) және бүліну себебін берудің мағынасы бар. Осылайша, бір туристе бірнеше ТУРКОД болуы мүмкін (ескі бүлінген, жаңа қолданыстағы), және менеджер бұл процесті бағдарламадан басқара алады.
  2. Қателерді өңдеуге назар аударыңыз. Маусымда менеджерлердің қателер туралы көптеген хаттарды оқуға уақыты болмайды (мысалы, “баланстағы қаражат бітті”). Критикалық немесе қайталанатын қателерді алған кезде деректерді тұрақты жіберуді өшіретін, жауапты тұлғаларға хабарлайтын қосқыш қажет.
  3. Агент туралы көбірек деректерді көрсетіңіз. Егер агенттіктің атауы (q_touragent) өрісіне қала немесе email/телефонды қоссаңыз, бұл форс-мажор жағдайларында турагентті іздеуді жеңілдетеді және туроператор қызметкерлерінің жүктемесін азайтады.

Құжаттаманы жаңартулар:

31.05.2022
Саяхат барысындағы қосымша әуе тасымалдарды ресімдеу, қонақүйлер өрістері, турагенттің БСН туралы ақпарат қосылды.

03.10.2017
Екі міндетті енгізу өрісі бойынша ақпарат қосылды: q_airlines және q_airport_start. airlines анықтамалығының сұрауының сипаттамасы қосылды. Міндеттілік 2018 жылдың 1 қаңтарынан бастап күшіне енеді.

13.12.2016
Келесі абзац жойылды:

“Бүгінгі таңда (20.11.2016) турдағы туристер саны туралы мәселе ашық қалып отыр…”

Оның орнына келесі сөйлем қосылды:

Жіберілген турда тек бір туристке рұқсат етіледі, әйтпесе сервис қате қайтарады. Туроператордың БҚ-сы қайтарылған ТУРКОДТЫ әр туристке тағайындап, туристке арналған тиісті басып шығарылатын құжаттарда көрсетуі тиіс.”