Изменения

Перейти к навигации Перейти к поиску

Агентский API Оплата

18 364 байта добавлено, 15:52, 5 декабря 2018
м
Возможные ошибки в результате выполнения запроса.
[[Категория:Интеграция]]
[[Категория:Агентский API]]
== Подключение ==
Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов.
Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю. Это можно сделать в разделе '''«Администрирование»''' ⇨ '''«Веб-служба. Авторизация»'''«Настройки системы» → «Интеграция» → «Nemo 1После добавления пользователя, ему будут присвоены Номер 0 (ClientIdSOAP API) и API ключ клиента, которые нужно использовать для подключения.  == Фиксация оплаты внешним запросом == Сервис предназначен для приема информации о получении оплаты и простановки статуса '''«Оплачено»''' для определенного заказа. Сервис вызывается следующим образом: http://CLIENT_DOMAIN/index»<!--{{Menu|Настройки системы|Интеграция|Nemo 1.php?go=payment/bill  '''Подпись запроса''' Подпись sig сверяется c md50 ($booking_id.$secretSOAP API$booking_id }}- Id заказа в системе Nemo, $secret - значение настройки в разделе '''«Администрирование»''' ⇨ '''«Настройки агентства»''' ⇨ '''''«Ключ безопасности для сервиса выставления оплаты и получения XML выгрузки»''''' '''Пример:''' <pre>Если booking_id: 263330ключ безопасности: 12345 То sig=md5(26333012345) = a439a4492131f4b866ed1a17d018d3a6</pre> Для фиксации оплаты получается такая ссылка:http://CLIENT_DOMAIN/index.php?go=payment/bill&booking_id=263330&sig=a439a4492131f4b866ed1a17d018d3a6 Дополнительная информация в статье [[Интеграция]]
После добавления пользователя ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.
== Получение списка доступных способов оплаты ==
 
WSDL находится по адресу: http://CLIENT_DOMAIN/wsdev/wsdl.php?version=1.0&for=PaymentInitialization
На данный момент метод доступен для платежных шлюзов Юнителлер и Рапида.
Для получения результата необходим параметр «OrderId» — Id ID забронированного заказа, который необходимо оплатить.
Данный запрос позволяет получить список платёжных шлюзов, через которые есть возможность оплатить указанный заказ.
* дополнительную наценку, которая добавляется к заказу при проведении оплаты через данный шлюз
* URL, перенаправляющий пользователя непосредственно на страницу оплаты через данный платёжный шлюз
* в случае отправки запроса с мобильной платформы может дополнительно возвращается возвращаться URL, на который происходит перенаправление пользователя для оплаты
=== Общий формат запроса / ответа ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
<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-->
</div>
=== Примеры использования ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
Запрос позволяет выбрать конкретный способ оплаты и получить платежный код для оплаты заказа, таймлимит на оплату и описание, заданное в настройках ПШ Рапида (содержимое поля "Сообщение пользователю").
=== Общий формат запроса / ответа ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
<Request>
<OrderId>?</OrderId>
<!--OrderId — Id ID забронированного заказа в системе Nemo{{NameSystem}}. Обязательный параметр-->
<PaymentMethodId>?</PaymentMethodId>
<!--PaymentMethodId - ID данного способа оплаты, приходит в ответе на запрос PaymentInitialization response. Обязательный параметр-->
</div>
=== Примеры использования ===
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
<ResponseBin>
<Error>
<NewPrice/> <Message>Unknown order status: Problematic</Message>
</Error>
</ResponseBin>
</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]]
1382
правки

Навигация

'