ПОДПИСЫВАЙТЕСЬ НА НАШ ТЕЛЕГРАМ-КАНАЛ @nemo_travel_official

Агентский API Оплата: различия между версиями

Материал из Центр поддержки системы бронировании
Перейти к навигации Перейти к поиску
м (Возможные ошибки в результате выполнения запроса.)
 
(не показано 56 промежуточных версий 9 участников)
Строка 1: Строка 1:
 +
[[Категория:Интеграция]]
 +
[[Категория:Агентский API]]
 
== Подключение ==
 
== Подключение ==
  
 
Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов.
 
Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов.
Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю.  Это можно сделать в разделе '''«Администрирование»''' ⇨ '''«Веб-служба. Авторизация»'''.
 
После добавления пользователя, ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.
 
  
 +
Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю.  Это можно сделать в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)»<!--{{Menu|Настройки системы|Интеграция|Nemo 1.0 (SOAP API)}}-->.
  
== Фиксация оплаты внешним запросом ==
+
После добавления пользователя ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.
 
 
Сервис предназначен для приема информации о получении оплаты и простановки статуса '''«Оплачено»''' для определенного заказа.
 
 
 
Сервис вызывается следующим образом: http://CLIENT_DOMAIN/index.php?go=payment/bill
 
 
 
'''Подпись запроса'''
 
 
 
Подпись sig сверяется c md5($booking_id.$secret)
 
 
 
$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
 
 
 
Дополнительная информация в статье [[Интеграция]]
 
 
 
 
 
== Перенаправление на платежный шлюз ==
 
  
 +
==  Получение списка доступных способов оплаты ==
  
 
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 забронированного заказа, который необходимо оплатить.  
+
Для получения результата необходим параметр «OrderId» — ID забронированного заказа, который необходимо оплатить.  
  
Данный запрос позволяет получить список платежных шлюзов, через которые есть возможность оплатить выбранный забронированный заказ.
+
Данный запрос позволяет получить список платёжных шлюзов, через которые есть возможность оплатить указанный заказ.
В качестве параметров передаются:
+
По каждому платёжному шлюзу возвращается следующая информация:
 +
* id способа оплаты
 
* имя платежного шлюза
 
* имя платежного шлюза
 
* дополнительную наценку, которая добавляется к заказу при проведении оплаты через данный шлюз
 
* дополнительную наценку, которая добавляется к заказу при проведении оплаты через данный шлюз
* URL, перенаправляющий пользователя непосредственно на страницу оплаты через данный платежный шлюз
+
* URL, перенаправляющий пользователя непосредственно на страницу оплаты через данный платёжный шлюз
* в случае отправки запроса с мобильной платформы может дополнительно возвращается URL, ведущий на страницу заказа, предназначенный для перехвата и дальнейшей обработки
+
* в случае отправки запроса с мобильной платформы может дополнительно возвращаться URL, на который происходит перенаправление пользователя для оплаты
  
== Общий формат запроса / ответа поиска ==
+
=== Общий формат запроса / ответа ===
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
Строка 69: Строка 40:
 
               <!--Optional:-->  
 
               <!--Optional:-->  
 
               <ReturnUrlToCatch>?</ReturnUrlToCatch> <!--необязательный-->  
 
               <ReturnUrlToCatch>?</ReturnUrlToCatch> <!--необязательный-->  
               <!--ReturnUrlToCatch - параметр, указывающий, что запрос идёт с мобильной платформы, значения: true / false-->
+
               <!--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-->  
Строка 102: Строка 73:
 
               <Gateways>
 
               <Gateways>
 
                   <Gateway>
 
                   <Gateway>
 +
                    <PaymentMethodId>?</PaymentMethodId>
 +
                      <!--PaymentMethodId - ID способа оплаты. Необходим при использовании запроса SelectPayment (см. ниже)-->
 
                     <GatewayName>?</GatewayName>
 
                     <GatewayName>?</GatewayName>
 
                     <!--GatewayName — имя платежного шлюза. Например: Uniteller -->
 
                     <!--GatewayName — имя платежного шлюза. Например: Uniteller -->
Строка 107: Строка 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>
Строка 121: Строка 98:
 
</div>
 
</div>
  
 
+
=== Примеры использования ===
== Примеры использования ==
 
  
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
 
<div class="toccolours mw-collapsible mw-collapsed" style="width:1000px">
Строка 163: Строка 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>
 
                     <RedirectUrl>http://CLIENT_DOMAIN/payment__select_outside?booking_id=276965&amp;one_time_booking_code=PZ7981&amp;method=27</RedirectUrl>
 
                     <RedirectUrl>http://CLIENT_DOMAIN/payment__select_outside?booking_id=276965&amp;one_time_booking_code=PZ7981&amp;method=27</RedirectUrl>
 +
                    <!--Пример ссылки-->
 
                     <UrlToCatch>http://CLIENT_DOMAIN/poffice__bookinfo?&amp;booking_id=276965</UrlToCatch>
 
                     <UrlToCatch>http://CLIENT_DOMAIN/poffice__bookinfo?&amp;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>
Строка 177: Строка 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).

См. также