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” қатесін кездестірсеңіз, бірақ деректерге сенімді болсаңыз, анықтамалықтарды жаңарту үшін техникалық қолдау қызметіне хабарласыңыз.
Ұсыныс ретінде
- Өз бағдарламаңызға “ТУРКОД” ұғымын енгізіңіз. ТУРКОДТЫ туристке/өтінімге байланыстырып, оған мәртебе (белсенді, бүлінген) және бүліну себебін берудің мағынасы бар. Осылайша, бір туристе бірнеше ТУРКОД болуы мүмкін (ескі бүлінген, жаңа қолданыстағы), және менеджер бұл процесті бағдарламадан басқара алады.
- Қателерді өңдеуге назар аударыңыз. Маусымда менеджерлердің қателер туралы көптеген хаттарды оқуға уақыты болмайды (мысалы, “баланстағы қаражат бітті”). Критикалық немесе қайталанатын қателерді алған кезде деректерді тұрақты жіберуді өшіретін, жауапты тұлғаларға хабарлайтын қосқыш қажет.
- Агент туралы көбірек деректерді көрсетіңіз. Егер агенттіктің атауы (
q_touragent) өрісіне қала немесе email/телефонды қоссаңыз, бұл форс-мажор жағдайларында турагентті іздеуді жеңілдетеді және туроператор қызметкерлерінің жүктемесін азайтады.
Құжаттаманы жаңартулар:
31.05.2022
Саяхат барысындағы қосымша әуе тасымалдарды ресімдеу, қонақүйлер өрістері, турагенттің БСН туралы ақпарат қосылды.
03.10.2017
Екі міндетті енгізу өрісі бойынша ақпарат қосылды: q_airlines және q_airport_start. airlines анықтамалығының сұрауының сипаттамасы қосылды. Міндеттілік 2018 жылдың 1 қаңтарынан бастап күшіне енеді.
13.12.2016
Келесі абзац жойылды:
“Бүгінгі таңда (20.11.2016) турдағы туристер саны туралы мәселе ашық қалып отыр…”
Оның орнына келесі сөйлем қосылды:
“Жіберілген турда тек бір туристке рұқсат етіледі, әйтпесе сервис қате қайтарады. Туроператордың БҚ-сы қайтарылған ТУРКОДТЫ әр туристке тағайындап, туристке арналған тиісті басып шығарылатын құжаттарда көрсетуі тиіс.”