Агентский API Оплата: различия между версиями
(→Получение списка доступных способов оплаты) |
м (→Возможные ошибки в результате выполнения запроса.) |
||
(не показано 50 промежуточных версий 9 участников) | |||
Строка 1: | Строка 1: | ||
+ | [[Категория:Интеграция]] | ||
+ | [[Категория:Агентский API]] | ||
== Подключение == | == Подключение == | ||
Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов. | Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов. | ||
− | Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю. Это можно сделать в разделе | + | Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю. Это можно сделать в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)»<!--{{Menu|Настройки системы|Интеграция|Nemo 1.0 (SOAP API)}}-->. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | После добавления пользователя ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения. | ||
== Получение списка доступных способов оплаты == | == Получение списка доступных способов оплаты == | ||
− | |||
WSDL находится по адресу: http://CLIENT_DOMAIN/wsdev/wsdl.php?version=1.0&for=PaymentInitialization | WSDL находится по адресу: http://CLIENT_DOMAIN/wsdev/wsdl.php?version=1.0&for=PaymentInitialization | ||
+ | На данный момент метод доступен для платежных шлюзов Юнителлер и Рапида. | ||
− | Для получения результата необходим параметр | + | Для получения результата необходим параметр «OrderId» — ID забронированного заказа, который необходимо оплатить. |
− | Данный запрос позволяет получить список | + | Данный запрос позволяет получить список платёжных шлюзов, через которые есть возможность оплатить указанный заказ. |
По каждому платёжному шлюзу возвращается следующая информация: | По каждому платёжному шлюзу возвращается следующая информация: | ||
+ | * id способа оплаты | ||
* имя платежного шлюза | * имя платежного шлюза | ||
* дополнительную наценку, которая добавляется к заказу при проведении оплаты через данный шлюз | * дополнительную наценку, которая добавляется к заказу при проведении оплаты через данный шлюз | ||
− | * URL, перенаправляющий пользователя непосредственно на страницу оплаты через данный | + | * URL, перенаправляющий пользователя непосредственно на страницу оплаты через данный платёжный шлюз |
− | * в случае отправки запроса с мобильной платформы может дополнительно | + | * в случае отправки запроса с мобильной платформы может дополнительно возвращаться URL, на который происходит перенаправление пользователя для оплаты |
− | == Общий формат запроса / ответа | + | === Общий формат запроса / ответа === |
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
Строка 71: | Строка 40: | ||
<!--Optional:--> | <!--Optional:--> | ||
<ReturnUrlToCatch>?</ReturnUrlToCatch> <!--необязательный--> | <ReturnUrlToCatch>?</ReturnUrlToCatch> <!--необязательный--> | ||
− | <!--ReturnUrlToCatch - | + | <!--ReturnUrlToCatch - Признак возвращать ли адрес, на который будет перенаправлен пользователь после оплаты: true(возвращать)/false(не возвращать)--> |
<!--Optional:--> | <!--Optional:--> | ||
</Request> | </Request> | ||
<Source> | <Source> | ||
<ClientId>?</ClientId> | <ClientId>?</ClientId> | ||
− | <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе | + | <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».--> |
<APIKey>?</APIKey> | <APIKey>?</APIKey> | ||
− | <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе | + | <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».--> |
<Language>?</Language> | <Language>?</Language> | ||
<!--Language — язык, например: RU--> | <!--Language — язык, например: RU--> | ||
Строка 104: | Строка 73: | ||
<Gateways> | <Gateways> | ||
<Gateway> | <Gateway> | ||
+ | <PaymentMethodId>?</PaymentMethodId> | ||
+ | <!--PaymentMethodId - ID способа оплаты. Необходим при использовании запроса SelectPayment (см. ниже)--> | ||
<GatewayName>?</GatewayName> | <GatewayName>?</GatewayName> | ||
<!--GatewayName — имя платежного шлюза. Например: Uniteller --> | <!--GatewayName — имя платежного шлюза. Например: Uniteller --> | ||
Строка 109: | Строка 80: | ||
<!--PaymentCharge — наценка, которая добавляется к заказу при оплате через данный шлюз, Currency — код валюты (из запроса)--> | <!--PaymentCharge — наценка, которая добавляется к заказу при оплате через данный шлюз, Currency — код валюты (из запроса)--> | ||
<RedirectUrl>?</RedirectUrl> | <RedirectUrl>?</RedirectUrl> | ||
− | <!--RedirectUrl — URL, | + | <!--RedirectUrl — URL, по которому происходит перенаправление пользователя непосредственно на страницу оплаты через данный платежный шлюз--> |
<UrlToCatch>?</UrlToCatch> | <UrlToCatch>?</UrlToCatch> | ||
<!--UrlToCatch — URL для перехвата и дальнейшей обработки в случае отправки запроса с мобильной платформы, ведущий на страницу заказа--> | <!--UrlToCatch — URL для перехвата и дальнейшей обработки в случае отправки запроса с мобильной платформы, ведущий на страницу заказа--> | ||
</Gateway> | </Gateway> | ||
</Gateways> | </Gateways> | ||
+ | <Error> | ||
+ | <NewPrice/> | ||
+ | <Message>Сообщение об ошибке</Message> | ||
+ | </Error> | ||
</Response> | </Response> | ||
</ResponseBin> | </ResponseBin> | ||
Строка 123: | Строка 98: | ||
</div> | </div> | ||
− | + | === Примеры использования === | |
− | == Примеры использования == | ||
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
Строка 165: | Строка 139: | ||
<Gateways> | <Gateways> | ||
<Gateway> | <Gateway> | ||
+ | <PaymentMethodId>1075</PaymentMethodId> | ||
<GatewayName>Uniteller</GatewayName> | <GatewayName>Uniteller</GatewayName> | ||
<PaymentCharge Currency="RUB">81.54</PaymentCharge> | <PaymentCharge Currency="RUB">81.54</PaymentCharge> | ||
Строка 171: | Строка 146: | ||
<UrlToCatch>http://CLIENT_DOMAIN/poffice__bookinfo?&booking_id=276965</UrlToCatch> | <UrlToCatch>http://CLIENT_DOMAIN/poffice__bookinfo?&booking_id=276965</UrlToCatch> | ||
<!--Пример ссылки--> | <!--Пример ссылки--> | ||
+ | </Gateway> | ||
+ | <Gateway> | ||
+ | <PaymentMethodId>1079</PaymentMethodId> | ||
+ | <GatewayName>Rapida</GatewayName> | ||
+ | <PaymentCharge Currency="RUB">123</PaymentCharge> | ||
+ | <RedirectUrl/> | ||
+ | <UrlToCatch xsi:nil="true"/> | ||
</Gateway> | </Gateway> | ||
</Gateways> | </Gateways> | ||
Строка 181: | Строка 163: | ||
</div> | </div> | ||
</div> | </div> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
+ | ==== Ответ с ошибкой==== | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> | ||
+ | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://release.mlsd.ru/wsdev/?version%3D1.0%26for%3DPaymentInitialization"> | ||
+ | <SOAP-ENV:Body> | ||
+ | <ns1:InitPaymentResponse> | ||
+ | <ResponseBin> | ||
+ | <Error> | ||
+ | <NewPrice/> | ||
+ | <Message>Unknown order status: Problematic</Message> | ||
+ | </Error> | ||
+ | </ResponseBin> | ||
+ | </ns1:InitPaymentResponse> | ||
+ | </SOAP-ENV:Body> | ||
+ | </SOAP-ENV:Envelope> | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | '''Примечание:''' если параметр RedirectUrl в ответе отсутствует, для инициализации оплаты необходимо использовать метод SelectPayment. | ||
+ | |||
+ | == Выбор конкретного способа оплаты == | ||
+ | WSDL находится по адресу: http://CLIENT_DOMAIN/wsdev/wsdl.php?version=1.0&for=SelectPayment | ||
+ | |||
+ | На данный момент этот веб-метод доступен только для платежного шлюза Рапида. | ||
+ | |||
+ | Запрос позволяет выбрать конкретный способ оплаты и получить платежный код для оплаты заказа, таймлимит на оплату и описание, заданное в настройках ПШ Рапида (содержимое поля "Сообщение пользователю"). | ||
+ | |||
+ | === Общий формат запроса / ответа === | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
+ | ==== Запрос ==== | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> | ||
+ | <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DSelectPayment"> | ||
+ | <soapenv:Header/> | ||
+ | <soapenv:Body> | ||
+ | <ver:SelectPayment> | ||
+ | <RequestBin> | ||
+ | <Request> | ||
+ | <OrderId>?</OrderId> | ||
+ | <!--OrderId — ID забронированного заказа в системе {{NameSystem}}. Обязательный параметр--> | ||
+ | <PaymentMethodId>?</PaymentMethodId> | ||
+ | <!--PaymentMethodId - ID данного способа оплаты, приходит в ответе на запрос PaymentInitialization response. Обязательный параметр--> | ||
+ | </Request> | ||
+ | <Source> | ||
+ | <ClientId>?</ClientId> | ||
+ | <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе "Администрирование" - "Веб-служба. Авторизация". Обязательный параметр.--> | ||
+ | <APIKey>?</APIKey> | ||
+ | <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе "Администрирование" - "Веб-служба. Авторизация". Обязательный параметр.--> | ||
+ | <Language>?</Language> | ||
+ | <!--Язык — пример: RU--> | ||
+ | <Currency>?</Currency> | ||
+ | <!-- Валюта — примеры: RUB, EUR--> | ||
+ | </Source> | ||
+ | </RequestBin> | ||
+ | </ver:SelectPayment> | ||
+ | </soapenv:Body> | ||
+ | </soapenv:Envelope> | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
+ | |||
+ | ==== Ответ ==== | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> | ||
+ | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DSelectPayment"> | ||
+ | <SOAP-ENV:Body> | ||
+ | <ns1:SelectPaymentResponse> | ||
+ | <ResponseBin> | ||
+ | <Response> | ||
+ | <TransactionId>?</TransactionId> | ||
+ | <!--TransactionId - ID платежной транзакции в системе Немо--> | ||
+ | <PaymentParameters> | ||
+ | <PaymentParameter> | ||
+ | <Key>Code</Key> | ||
+ | <Value>?</Value> | ||
+ | <!--Value - платежный код, приходит от платежного шлюза Рапида--> | ||
+ | </PaymentParameter> | ||
+ | <PaymentParameter> | ||
+ | <Key>Timelimit</Key> | ||
+ | <Value>?</Value> | ||
+ | <!--Value - таймлимит на оплату заказа--> | ||
+ | </PaymentParameter> | ||
+ | <PaymentParameter> | ||
+ | <Key>Description</Key> | ||
+ | <Value>?</Value> | ||
+ | <!--Value - краткое сообщение пользователю. Может содержать упомянутые выше платежный код, таймлимит и др. информацию. Настраивается в настройках реквизитов ПШ Рапида в соответствующем поле.--> | ||
+ | </PaymentParameter> | ||
+ | </PaymentParameters> | ||
+ | <Error> | ||
+ | <NewPrice/> | ||
+ | <Message>Сообщение об ошибке</Message> | ||
+ | </Error> | ||
+ | </Response> | ||
+ | </ResponseBin> | ||
+ | </ns1:SelectPaymentResponse> | ||
+ | </SOAP-ENV:Body> | ||
+ | </SOAP-ENV:Envelope> | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | === Примеры использования === | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
+ | ==== Запрос ==== | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> | ||
+ | <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DSelectPayment"> | ||
+ | <soapenv:Header/> | ||
+ | <soapenv:Body> | ||
+ | <ver:SelectPayment> | ||
+ | <RequestBin> | ||
+ | <Request> | ||
+ | <OrderId>279712</OrderId> | ||
+ | <PaymentMethodId>1079</PaymentMethodId> | ||
+ | </Request> | ||
+ | <Source> | ||
+ | <ClientId>--</ClientId> | ||
+ | <APIKey>--</APIKey> | ||
+ | <Language>RU</Language> | ||
+ | <Currency>RUB</Currency> | ||
+ | </Source> | ||
+ | </RequestBin> | ||
+ | </ver:SelectPayment> | ||
+ | </soapenv:Body> | ||
+ | </soapenv:Envelope> | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
+ | |||
+ | ==== Ответ ==== | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> | ||
+ | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DSelectPayment"> | ||
+ | <SOAP-ENV:Body> | ||
+ | <ns1:SelectPaymentResponse> | ||
+ | <ResponseBin> | ||
+ | <Response> | ||
+ | <TransactionId>117608085</TransactionId> | ||
+ | <PaymentParameters> | ||
+ | <PaymentParameter> | ||
+ | <Key>Code</Key> | ||
+ | <Value>a117608085a0CGN73</Value> | ||
+ | </PaymentParameter> | ||
+ | <PaymentParameter> | ||
+ | <Key>Timelimit</Key> | ||
+ | <Value>23:59 20.01.2015</Value> | ||
+ | </PaymentParameter> | ||
+ | <PaymentParameter> | ||
+ | <Key>Description</Key> | ||
+ | <Value>Ваш платежный код - a117608085a0CGN73. Оплатить заказ необходимо до 23:59 20.01.2015</Value> | ||
+ | </PaymentParameter> | ||
+ | </PaymentParameters> | ||
+ | </Response> | ||
+ | </ResponseBin> | ||
+ | </ns1:SelectPaymentResponse> | ||
+ | </SOAP-ENV:Body> | ||
+ | </SOAP-ENV:Envelope> | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | </div> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
+ | |||
+ | ==== Ответ с ошибкой==== | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> | ||
+ | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://release.mlsd.ru/wsdev/?version%3D1.0%26for%3DSelectPayment"> | ||
+ | <SOAP-ENV:Body> | ||
+ | <ns1:SelectPaymentResponse> | ||
+ | <ResponseBin> | ||
+ | <Error> | ||
+ | <NewPrice/> | ||
+ | <Message>Unknown order status: Problematic</Message> | ||
+ | </Error> | ||
+ | </ResponseBin> | ||
+ | </ns1:SelectPaymentResponse> | ||
+ | </SOAP-ENV:Body> | ||
+ | </SOAP-ENV:Envelope> | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | ==Фиксации оплаты через Агентский АПИ== | ||
+ | |||
+ | Сервис предназначен для фиксации оплаты в заказе. Фиксация оплаты доступна, если IP-адрес пользователя совпадает с IP-адресом, указанным в настройке '''Допустимые IP-адреса для выписки без оплаты или фиксации оплаты''' (раздел '''Настройки системы → Интеграция → Nemo 1.0 (SOAP API)'''). Если IP-адрес не указан или не совпадает, произойдет блокировка оплаты. | ||
+ | Сервис вызывается следующим образом: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=PayOrder | ||
+ | |||
+ | ===Общий формат запроса / ответа=== | ||
+ | |||
+ | В запросе необходимо указать: | ||
+ | * номер заказа в системе Nemo, по которому производится оплата, | ||
+ | * название платежного шлюза - ''Deposit'' или номер ПШ в системе Nemo. | ||
+ | Доступ к оплате имеет только пользователь, у которого есть на это права, а именно: | ||
+ | * Пользователь должен иметь доступ к указанной в запросе платежной системе | ||
+ | * IP адрес пользователя должен соответствовать адресу, указанному в настройке Допустимые ip-адреса для выписки без оплаты или фиксации оплаты | ||
+ | API пользователи, относящиеся к компаниям или субагентствам, не могут выполять выписку до проведения оплаты | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
+ | ==== Запрос ==== | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> | ||
+ | |||
+ | <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://nemojulia/nemoflights/?version%3D1.0%26for%3DPayOrder"> | ||
+ | <soapenv:Header/> | ||
+ | <soapenv:Body> | ||
+ | <ver:PayOrder> | ||
+ | <RequestBin> | ||
+ | <Request> | ||
+ | <PayOrder> | ||
+ | <BookID>?</BookID> | ||
+ | <!--BookID — Id забронированного заказа в системе Nemo--> | ||
+ | <PaymentGateway>?</PaymentGateway> | ||
+ | <!--PaymentGateway — Либо название платежного шлюза, например: Deposit, либо идентификатор ПШ в системе Nemo, например: 1880 --> | ||
+ | </PayOrder> | ||
+ | </Request> | ||
+ | <Source> | ||
+ | <ClientId>?</ClientId> | ||
+ | <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».--> | ||
+ | <APIKey>?</APIKey> | ||
+ | <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».--> | ||
+ | <Language>?</Language> | ||
+ | <!--Language — язык, например: RU--> | ||
+ | <Currency>?</Currency> | ||
+ | <!-- Currency — валюта, например: RUB, EUR--> | ||
+ | <ShowNames>?</ShowNames> | ||
+ | <!-- ShowNames — отображение названий аэропортов, авиакомпаний и воздушных судов: true - отображать, false - не отображать. Возвращает значение на том языке, который был указан в запросе. Для RU - русский вариант, для UKR, EN, ES - латинский вариант. Опциональный элемент. --> | ||
+ | <EndUserData> | ||
+ | <!--Блок с данными о конечном пользователе, необязательный, но необходим при при использовании запросов поиска и бронирования для поставщика TravelFusion--> | ||
+ | <EndUserIP>?</EndUserIP> | ||
+ | <!--IP адрес пользователя--> | ||
+ | <EndUserBrowserAgent>?</EndUserBrowserAgent> | ||
+ | <!--Браузер пользователя--> | ||
+ | <RequestOrigin>?</RequestOrigin> | ||
+ | <!--Страна и домен, с которого пользователь совершает поиск/бронирование--> | ||
+ | </EndUserData> | ||
+ | </Source> | ||
+ | </RequestBin> | ||
+ | </ver:PayOrder> | ||
+ | </soapenv:Body> | ||
+ | </soapenv:Envelope> | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="width:1000px"> | ||
+ | |||
+ | ==== Ответ ==== | ||
+ | <div class="mw-collapsible-content"> | ||
+ | <syntaxhighlight lang="xml" line enclose="div" style="font-size:9pt;background: #F9F9F9; border: 1px dashed #2F6FAB; padding: 10px 5px; margin: 10px 0;"> | ||
+ | |||
+ | <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/nemoflights/?version=1.0&for=PayOrder" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> | ||
+ | <SOAP-ENV:Body> | ||
+ | <ns1:PayOrderResponse> | ||
+ | <ResponseBin> | ||
+ | <Response> | ||
+ | <PayOrder ID="" Status="?" Code="?"> | ||
+ | <!--ID — Id брони в системе nemo.travel, целое число, обязательный--> | ||
+ | <!--Status — индикатор состояния брони, возможные значения: | ||
+ | booked — забронировано, | ||
+ | canceled — бронь отменена, | ||
+ | ticket — выписана | ||
+ | UNDEFINED — статус не определён--> | ||
+ | <!--Code — код брони в системе поставщика--> | ||
+ | <QueryPlace xsi:nil="true"/> | ||
+ | <!--QueryPlace — положение брони в очереди, Number — номер брони в очереди--> | ||
+ | <Flight FlightId="?"> | ||
+ | <!--FlightId — Id перелёта в системе nemo.travel--> | ||
+ | <WebService>?</WebService> | ||
+ | <!--WebService — поставщик перелёта--> | ||
+ | <ValCompany>?</ValCompany> | ||
+ | <!--ValCompany — код авиакомпании, являющейся валидирующим перевозчиком, IATA--> | ||
+ | <URL>?</URL> | ||
+ | <!--URL — ссылка на бронирование конкретного перелета--> | ||
+ | <Segments> | ||
+ | <Segment SegNum="?" SegGroupNum="?"> | ||
+ | <!--SegNum — номер сегмента в перелёте--> | ||
+ | <!--SegGroupNum – номер плеча перелёта--> | ||
+ | <SupplierCode>?</SupplierCode> | ||
+ | <!--SupplierCode – номер заказа в системе АК--> | ||
+ | <DepAirp CodeType="?" Name="?">?</DepAirp> | ||
+ | <!--DepAirp — аэропорт отправления, например: MOW — любой аэропорт в г.Москва | ||
+ | или SVO — Шереметьево--> | ||
+ | <DepTerminal>?</DepTerminal> | ||
+ | <!--DepTerminal — терминал пункта отправления, если пустое значение, | ||
+ | то в аэропорту всего 1 терминал--> | ||
+ | <ArrAirp CodeType="?" Name="?">?</ArrAirp> | ||
+ | <!--ArrAirp — аэропорт прибытия--> | ||
+ | <ArrTerminal xsi:nil="true"/> | ||
+ | <!--ArrTerminal — терминал пункта прибытия, если пустое значение, | ||
+ | то в аэропорту всего 1 терминал--> | ||
+ | <OpAirline>?</OpAirline> | ||
+ | <!--OpAirline — авиакомпания перевозчик, например: SU — Аэрофлот--> | ||
+ | <OpAirlineName>?</OpAirlineName> | ||
+ | <!--OpAirlineName - авиакомпания перевозчик, например: SU — Аэрофлот--> | ||
+ | <OpAirlineLogo>?</OpAirlineLogo> | ||
+ | <!--OpAirlineLogo - полное наименование АК на кириллице--> | ||
+ | <MarkAirline>?</MarkAirline> | ||
+ | <!--MarkAirline — авиакомпания, продающая перелёт--> | ||
+ | <MarkAirlineName>?</MarkAirlineName> | ||
+ | <!--MarkAirline — авиакомпания, продающая перелёт--> | ||
+ | <MarkAirlineLogo>?</MarkAirlineLogo> | ||
+ | <!--MarkAirlineName - полное наименование АК на кириллице--> | ||
+ | <FlightNumber>?</FlightNumber> | ||
+ | <!--FlightNumber — номер рейса--> | ||
+ | <AircraftName>?</AircraftName> | ||
+ | <!--AircraftName — наименование воздушного судна--> | ||
+ | <AircraftType>?</AircraftType> | ||
+ | <!--AircraftType — тип воздушного судна, код--> | ||
+ | <DepDateTime>?</DepDateTime> | ||
+ | <!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС--> | ||
+ | <ArrDateTime>?</ArrDateTime> | ||
+ | <!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС--> | ||
+ | <StopNum>?</StopNum> | ||
+ | <!--StopNum — количество остановок--> | ||
+ | <StopPoints/> | ||
+ | <BookingCodes> | ||
+ | <BookingCode ClassType="?"> | ||
+ | <!--ClassType — класс перелета, например: economy--> | ||
+ | <BookingCode>?</BookingCode> | ||
+ | <!--BookingCode — код класса бронирования, у разных авиакомпаний один и тот же класс | ||
+ | может записываться разными литерами, например: L--> | ||
+ | </BookingCode> | ||
+ | </BookingCodes> | ||
+ | <FlightTime>?</FlightTime> | ||
+ | <!--FlightTime — время перелёта в минутах--> | ||
+ | <RemainingSeats xsi:nil="true"/> | ||
+ | <TimeZone Departure="?" Arrival="?"/> | ||
+ | <!--Departure временная зона аэропорта отправления--> | ||
+ | <!--Arrival — временная зона аэропорта прибытия--> | ||
+ | <ETicket>?</ETicket> | ||
+ | <!--ETicket — признак электронного билета, значения: true / false--> | ||
+ | <isCharter>?</isCharter> | ||
+ | <!--isCharter — признак чартерного перелета, значения: true / false--> | ||
+ | <BaggageAllowances> | ||
+ | <!--BaggageAllowances — информация о багаже--> | ||
+ | <BaggageAllowance> | ||
+ | <PassengerType>?</PassengerType> | ||
+ | <!--PassengerType — тип пассажира, соответстует типу тарифа в PricingInfo --> | ||
+ | <Value>?</Value> | ||
+ | <!--Value — количество--> | ||
+ | <Measurement>?</Measurement> | ||
+ | <!--Measurement — мера измерения, может принимать значения: kg — килограмм, pc — багажное место, lb — фунт--> | ||
+ | </BaggageAllowance> | ||
+ | </BaggageAllowances> | ||
+ | </Segment> | ||
+ | </Segments> | ||
+ | <PricingInfo Refundable="?"> | ||
+ | <!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно--> | ||
+ | <PassengerFare Type="?" Quantity="?"> | ||
+ | <!--Type — тип тарифа--> | ||
+ | <!--Quantity — количество пассажиров данного типа--> | ||
+ | <TravellerRef> | ||
+ | <Ref>?</Ref> | ||
+ | <!--Ref — Номер пассажира--> | ||
+ | </TravellerRef> | ||
+ | <BaseFare Currency="?" Amount="?"/> | ||
+ | <!--BaseFare — базовая стоимость, в базовой валюте. Currency — код валюты, Amount — значение цены--> | ||
+ | <EquiveFare Currency="?" Amount="?"/> | ||
+ | <!--EquiveFare — базовая стоимость, в эквивалентной валюте(валюте продажи). | ||
+ | Currency — код валюты, Amount — значение цены--> | ||
+ | <TotalFare Currency="?" Amount="?"/> | ||
+ | <!--TotalFare — суммарная стоимость, в эквивалентной валюте. | ||
+ | Currency — код валюты, Amount — значение цены--> | ||
+ | <Taxes> | ||
+ | <Tax CurCode="?" TaxCode="?" Amount="?"/> | ||
+ | <!--CurCode — код валюты, TaxCode — код таксы, Amount — сумма таксы--> | ||
+ | </Taxes> | ||
+ | <Tariffs> | ||
+ | <Tariff Code="?" SegNum="?"> | ||
+ | <!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф--> | ||
+ | <FareFamilies xsi:nil="true"/> | ||
+ | </Tariff> | ||
+ | </Tariffs> | ||
+ | <FareCalc>?</FareCalc> | ||
+ | <!--FareCalc — строка расчёта цены--> | ||
+ | <LastTicketDateTime>?</LastTicketDateTime> | ||
+ | <!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС--> | ||
+ | </PassengerFare> | ||
+ | </PricingInfo> | ||
+ | <Commission/> | ||
+ | <Charges Currency="?">?</Charges> | ||
+ | <!--Charges — сборы, Currency — код валюты--> | ||
+ | <TotalPrice Currency="?">?</TotalPrice> | ||
+ | <!--TotalPrice — итоговая цена, Currency — код валюты--> | ||
+ | </Flight> | ||
+ | <Agency/> | ||
+ | <ItinReceipts Encoding="?" Format="?"> | ||
+ | <!--ItinReceipts — маршрут квитанция, Encoding — кодировка, Format — формат--> | ||
+ | <FareStored xsi:nil="true"/> | ||
+ | <PaymentTransactions> | ||
+ | <Transaction> | ||
+ | <Id>?</Id> | ||
+ | <!--Id — номер транзакции в Немо--> | ||
+ | <Status>?</Status> | ||
+ | <!--Status — статус транзакции--> | ||
+ | <GatewayName>?</GatewayName> | ||
+ | <!--GatewayName — название платежного шлюза--> | ||
+ | <MoneyPaid Currency="?">?</MoneyPaid> | ||
+ | <!--MoneyPaid — сумма оплаты--> | ||
+ | <!--Currency — валюта--> | ||
+ | <PaymentDateTime>?</PaymentDateTime> | ||
+ | <!--PaymentDateTime — дата и время оплаты--> | ||
+ | <CreateDateTime>?</CreateDateTime> | ||
+ | <!--CreateDateTime — дата и время создания платежной транзакции--> | ||
+ | <Description/> | ||
+ | </Transaction> | ||
+ | </PaymentTransactions> | ||
+ | <PaymentStatus>?</PaymentStatus> | ||
+ | <!--PaymentStatus — статус оплаты: | ||
+ | not_paid — не оплачено | ||
+ | partly_paid — оплачено, частично | ||
+ | fully_paid — оплачено, полностью--> | ||
+ | <Travellers/> | ||
+ | <AutoCancelDate>?</AutoCancelDate> | ||
+ | <!--AutoCancelDate — дата и время таймлимита автоаннуляции в формате ГГГГ-MM-ДДTЧЧ:ММ:СС определяемые по настройкам агентства--> | ||
+ | <TimeLimits> | ||
+ | <TicketingTimeLimit>?</TicketingTimeLimit> | ||
+ | <!--TicketingTimeLimit — Таймлимит на выписку в формате ГГГГ-MM-ДДTЧЧ:ММ:СС--> | ||
+ | <PriceTimeLimit>?</PriceTimeLimit> | ||
+ | <!--PriceTimeLimit — Таймлимит цены из ГРС в формате ГГГГ-MM-ДДTЧЧ:ММ:СС--> | ||
+ | <AdvancedPurchaseTimeLimit>?</AdvancedPurchaseTimeLimit> | ||
+ | <!--AdvancedPurchaseTimeLimit — Таймлимит цены из тарифных правил в формате ГГГГ-MM-ДДTЧЧ:ММ:СС--> | ||
+ | <AgencyTimeLimit>?</AgencyTimeLimit> | ||
+ | <!--AgencyTimeLimit - Таймлимит по настройкам в формате ГГГГ-MM-ДДTЧЧ:ММ:СС--> | ||
+ | </TimeLimits> | ||
+ | </PayOrder> | ||
+ | </Response> | ||
+ | </ResponseBin> | ||
+ | </ns1:PayOrderResponse> | ||
+ | </SOAP-ENV:Body> | ||
+ | </SOAP-ENV:Envelope> | ||
+ | </syntaxhighlight> | ||
+ | </div> | ||
+ | </div> | ||
+ | |||
+ | ===Возможные ошибки в результате выполнения запроса.=== | ||
+ | |||
+ | При выполнения запроса возможны следующие ошибки: | ||
+ | |||
+ | * ''Deposit gateway is not available for this order'' - оплата проводится под пользователем, не имеющим на это прав. | ||
+ | * ''You have not enough money to pay'' - недостаточно средств на депозитном счету для оплаты. При получении такой ошибки отправляется уведомление на почтовый адрес в профиле компании, указанный в настройке ''Адрес электронной почты''. | ||
+ | * ''Price to pay(X) is greater than in request'' - стоимость к оплате выше чем указана в запросе. | ||
+ | * ''Internal Error: Invalid BookID'' - не указан id заказа. | ||
+ | * ''Internal Error: Object not found'' - не найден заказ с указанным id. | ||
+ | * ''Internal Error: Invalid gateway name'' - не указан id платежного шлюза или его название. | ||
+ | * ''Gateway XXX is not available for this order'' - платежный шлюз недоступен для оплаты. | ||
+ | |||
+ | ==Запрет на выписку неоплаченных заказов по АПИ для субагента== | ||
+ | |||
+ | Субагентам выписка по АПИ доступна только в том случае, если заказ ''имеет статус оплаты''. В противном случае выписка блокируется. | ||
+ | |||
+ | Выписка заказов, ''не имеющих статуса оплаты'', доступна только менеджеру корневого агентства. Для успешной операции IP-адрес менеджера должен совпадать с IP-адресом параметра '''Допустимые IP-адреса для выписки без оплаты или фиксации оплаты''' в разделе '''Настройки системы → Интеграция → Nemo 1.0 (SOAP API)'''. | ||
== См. также == | == См. также == | ||
− | + | * [[Агентский API Авиабилеты]] | |
− | *[[ | + | * [[Agency API. Payments]] |
Текущая версия на 15:52, 5 декабря 2018
Содержание
Подключение
Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов.
Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю. Это можно сделать в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».
После добавления пользователя ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.
Получение списка доступных способов оплаты
WSDL находится по адресу: http://CLIENT_DOMAIN/wsdev/wsdl.php?version=1.0&for=PaymentInitialization На данный момент метод доступен для платежных шлюзов Юнителлер и Рапида.
Для получения результата необходим параметр «OrderId» — ID забронированного заказа, который необходимо оплатить.
Данный запрос позволяет получить список платёжных шлюзов, через которые есть возможность оплатить указанный заказ. По каждому платёжному шлюзу возвращается следующая информация:
- id способа оплаты
- имя платежного шлюза
- дополнительную наценку, которая добавляется к заказу при проведении оплаты через данный шлюз
- URL, перенаправляющий пользователя непосредственно на страницу оплаты через данный платёжный шлюз
- в случае отправки запроса с мобильной платформы может дополнительно возвращаться URL, на который происходит перенаправление пользователя для оплаты
Общий формат запроса / ответа
Запрос
Ответ
Примеры использования
Запрос
Ответ
Ответ с ошибкой
Примечание: если параметр RedirectUrl в ответе отсутствует, для инициализации оплаты необходимо использовать метод SelectPayment.
Выбор конкретного способа оплаты
WSDL находится по адресу: http://CLIENT_DOMAIN/wsdev/wsdl.php?version=1.0&for=SelectPayment
На данный момент этот веб-метод доступен только для платежного шлюза Рапида.
Запрос позволяет выбрать конкретный способ оплаты и получить платежный код для оплаты заказа, таймлимит на оплату и описание, заданное в настройках ПШ Рапида (содержимое поля "Сообщение пользователю").
Общий формат запроса / ответа
Запрос
Ответ
Примеры использования
Запрос
Ответ
Ответ с ошибкой
Фиксации оплаты через Агентский АПИ
Сервис предназначен для фиксации оплаты в заказе. Фиксация оплаты доступна, если IP-адрес пользователя совпадает с IP-адресом, указанным в настройке Допустимые IP-адреса для выписки без оплаты или фиксации оплаты (раздел Настройки системы → Интеграция → Nemo 1.0 (SOAP API)). Если IP-адрес не указан или не совпадает, произойдет блокировка оплаты. Сервис вызывается следующим образом: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=PayOrder
Общий формат запроса / ответа
В запросе необходимо указать:
- номер заказа в системе Nemo, по которому производится оплата,
- название платежного шлюза - Deposit или номер ПШ в системе Nemo.
Доступ к оплате имеет только пользователь, у которого есть на это права, а именно:
- Пользователь должен иметь доступ к указанной в запросе платежной системе
- IP адрес пользователя должен соответствовать адресу, указанному в настройке Допустимые ip-адреса для выписки без оплаты или фиксации оплаты
API пользователи, относящиеся к компаниям или субагентствам, не могут выполять выписку до проведения оплаты
Запрос
Ответ
Возможные ошибки в результате выполнения запроса.
При выполнения запроса возможны следующие ошибки:
- Deposit gateway is not available for this order - оплата проводится под пользователем, не имеющим на это прав.
- You have not enough money to pay - недостаточно средств на депозитном счету для оплаты. При получении такой ошибки отправляется уведомление на почтовый адрес в профиле компании, указанный в настройке Адрес электронной почты.
- Price to pay(X) is greater than in request - стоимость к оплате выше чем указана в запросе.
- Internal Error: Invalid BookID - не указан id заказа.
- Internal Error: Object not found - не найден заказ с указанным id.
- Internal Error: Invalid gateway name - не указан id платежного шлюза или его название.
- Gateway XXX is not available for this order - платежный шлюз недоступен для оплаты.
Запрет на выписку неоплаченных заказов по АПИ для субагента
Субагентам выписка по АПИ доступна только в том случае, если заказ имеет статус оплаты. В противном случае выписка блокируется.
Выписка заказов, не имеющих статуса оплаты, доступна только менеджеру корневого агентства. Для успешной операции IP-адрес менеджера должен совпадать с IP-адресом параметра Допустимые IP-адреса для выписки без оплаты или фиксации оплаты в разделе Настройки системы → Интеграция → Nemo 1.0 (SOAP API).