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

Материал из Центр поддержки системы бронировании
Перейти к навигации Перейти к поиску
м (Возможные ошибки в результате выполнения запроса.)
 
(не показано 55 промежуточных версий 9 участников)
Строка 1: Строка 1:
 +
[[Категория:Интеграция]]
 +
[[Категория:Агентский API]]
 
== Подключение ==
 
== Подключение ==
  
 
Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов.
 
Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов.
  
Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю.  Это можно сделать в разделе '''«Администрирование»''' ⇨ '''«Веб-служба. Авторизация»'''.
+
Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю.  Это можно сделать в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)»<!--{{Menu|Настройки системы|Интеграция|Nemo 1.0 (SOAP API)}}-->.
  
После добавления пользователя, ему будут присвоены Номер (ClientId) и 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">
Строка 71: Строка 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-->  
Строка 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>
 
                     <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>
Строка 179: Строка 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, на который происходит перенаправление пользователя для оплаты

Общий формат запроса / ответа

Запрос

 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DPaymentInitialization">
 2    <soapenv:Header/>
 3    <soapenv:Body>
 4       <ver:InitPayment>
 5          <RequestBin>
 6             <Request>
 7                <OrderId>?</OrderId>
 8              <!--OrderId — Id забронированного заказа в системе Nemo--> 
 9                <!--Optional:--> 
10                <ReturnUrlToCatch>?</ReturnUrlToCatch> <!--необязательный--> 
11                <!--ReturnUrlToCatch - Признак возвращать ли адрес, на который будет перенаправлен пользователь после оплаты: true(возвращать)/false(не возвращать)-->
12                <!--Optional:--> 
13             </Request>
14             <Source>
15                <ClientId>?</ClientId>
16         <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».--> 
17                <APIKey>?</APIKey>
18          <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».--> 
19                <Language>?</Language>
20         <!--Language — язык, например: RU--> 
21                <Currency>?</Currency>
22         <!-- Currency — валюта, например: RUB, EUR--> 
23             </Source>
24          </RequestBin>
25       </ver:InitPayment>
26    </soapenv:Body>
27 </soapenv:Envelope>

Ответ

 1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DPaymentInitialization">
 2    <SOAP-ENV:Body>
 3       <ns1:InitPaymentResponse>
 4          <ResponseBin>
 5             <Response>
 6                <Gateways>
 7                   <Gateway>
 8                      <PaymentMethodId>?</PaymentMethodId>
 9                       <!--PaymentMethodId - ID способа оплаты. Необходим при использовании запроса SelectPayment (см. ниже)-->
10                      <GatewayName>?</GatewayName>
11                      <!--GatewayName — имя платежного шлюза. Например: Uniteller -->
12                      <PaymentCharge Currency="?">?</PaymentCharge>
13 	          <!--PaymentCharge — наценка, которая добавляется к заказу при оплате через данный шлюз, Currency — код валюты (из запроса)-->
14                      <RedirectUrl>?</RedirectUrl>
15                      <!--RedirectUrl — URL, по которому происходит перенаправление пользователя непосредственно на страницу оплаты через данный платежный шлюз-->
16                      <UrlToCatch>?</UrlToCatch>
17 	          <!--UrlToCatch — URL для перехвата и дальнейшей обработки в случае отправки запроса с мобильной платформы, ведущий на страницу заказа-->
18                   </Gateway>
19                </Gateways>
20                <Error>
21                  <NewPrice/>
22                  <Message>Сообщение об ошибке</Message>
23                </Error>
24             </Response>
25          </ResponseBin>
26       </ns1:InitPaymentResponse>
27    </SOAP-ENV:Body>
28 </SOAP-ENV:Envelope>

Примеры использования

Запрос

 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DPaymentInitialization">
 2    <soapenv:Header/>
 3    <soapenv:Body>
 4       <ver:InitPayment>
 5          <RequestBin>
 6             <Request>
 7                <OrderId>276965</OrderId>
 8                <ReturnUrlToCatch>true</ReturnUrlToCatch>
 9             </Request>
10             <Source>
11                <ClientId>---</ClientId>
12                <APIKey>---</APIKey>
13                <Language>RU</Language>
14                <Currency>RUB</Currency>
15             </Source>
16          </RequestBin>
17       </ver:InitPayment>
18    </soapenv:Body>
19 </soapenv:Envelope>

Ответ

 1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DPaymentInitialization">
 2    <SOAP-ENV:Body>
 3       <ns1:InitPaymentResponse>
 4          <ResponseBin>
 5             <Response>
 6                <Gateways>
 7                   <Gateway>
 8                      <PaymentMethodId>1075</PaymentMethodId>
 9                      <GatewayName>Uniteller</GatewayName>
10                      <PaymentCharge Currency="RUB">81.54</PaymentCharge>
11                      <RedirectUrl>http://CLIENT_DOMAIN/payment__select_outside?booking_id=276965&amp;one_time_booking_code=PZ7981&amp;method=27</RedirectUrl>
12                      <!--Пример ссылки-->
13                      <UrlToCatch>http://CLIENT_DOMAIN/poffice__bookinfo?&amp;booking_id=276965</UrlToCatch>
14                      <!--Пример ссылки-->
15                   </Gateway>
16                  <Gateway>
17                      <PaymentMethodId>1079</PaymentMethodId>
18                      <GatewayName>Rapida</GatewayName>
19                      <PaymentCharge Currency="RUB">123</PaymentCharge>
20                      <RedirectUrl/>
21                      <UrlToCatch xsi:nil="true"/>
22                   </Gateway>
23                </Gateways>
24             </Response>
25          </ResponseBin>
26       </ns1:InitPaymentResponse>
27    </SOAP-ENV:Body>
28 </SOAP-ENV:Envelope>

Ответ с ошибкой

 1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://release.mlsd.ru/wsdev/?version%3D1.0%26for%3DPaymentInitialization">
 2    <SOAP-ENV:Body>
 3       <ns1:InitPaymentResponse>
 4          <ResponseBin>
 5             <Error>
 6              <NewPrice/>
 7              <Message>Unknown order status: Problematic</Message>
 8             </Error>
 9          </ResponseBin>
10       </ns1:InitPaymentResponse>
11    </SOAP-ENV:Body>
12 </SOAP-ENV:Envelope>

Примечание: если параметр RedirectUrl в ответе отсутствует, для инициализации оплаты необходимо использовать метод SelectPayment.

Выбор конкретного способа оплаты

WSDL находится по адресу: http://CLIENT_DOMAIN/wsdev/wsdl.php?version=1.0&for=SelectPayment

На данный момент этот веб-метод доступен только для платежного шлюза Рапида.

Запрос позволяет выбрать конкретный способ оплаты и получить платежный код для оплаты заказа, таймлимит на оплату и описание, заданное в настройках ПШ Рапида (содержимое поля "Сообщение пользователю").

Общий формат запроса / ответа

Запрос

 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DSelectPayment">
 2   <soapenv:Header/>
 3   <soapenv:Body>
 4     <ver:SelectPayment>
 5       <RequestBin>
 6         <Request>
 7           <OrderId>?</OrderId>
 8            <!--OrderId — ID забронированного заказа в системе {{NameSystem}}. Обязательный параметр-->
 9           <PaymentMethodId>?</PaymentMethodId>
10           <!--PaymentMethodId - ID данного способа оплаты, приходит в ответе на запрос PaymentInitialization response. Обязательный параметр-->
11         </Request>
12         <Source>
13           <ClientId>?</ClientId>
14            <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе "Администрирование" - "Веб-служба. Авторизация". Обязательный параметр.-->
15           <APIKey>?</APIKey>
16            <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе "Администрирование" - "Веб-служба. Авторизация". Обязательный параметр.-->
17           <Language>?</Language>
18           <!--Язык — пример: RU-->
19           <Currency>?</Currency>
20           <!-- Валюта — примеры: RUB, EUR-->
21         </Source>
22       </RequestBin>
23     </ver:SelectPayment>
24   </soapenv:Body>
25 </soapenv:Envelope>

Ответ

 1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DSelectPayment">
 2   <SOAP-ENV:Body>
 3       <ns1:SelectPaymentResponse>
 4          <ResponseBin>
 5             <Response>
 6                <TransactionId>?</TransactionId>
 7                <!--TransactionId - ID платежной транзакции в системе Немо-->
 8                <PaymentParameters>
 9                   <PaymentParameter>
10                      <Key>Code</Key>
11                      <Value>?</Value>
12                      <!--Value - платежный код, приходит от платежного шлюза Рапида-->
13                   </PaymentParameter>
14                   <PaymentParameter>
15                      <Key>Timelimit</Key>
16                      <Value>?</Value>
17                      <!--Value - таймлимит на оплату заказа-->
18                   </PaymentParameter>
19                   <PaymentParameter>
20                      <Key>Description</Key>
21                      <Value>?</Value>
22                      <!--Value - краткое сообщение пользователю. Может содержать упомянутые выше платежный код, таймлимит и др. информацию. Настраивается в настройках реквизитов ПШ Рапида в соответствующем поле.-->
23                   </PaymentParameter>
24                </PaymentParameters>
25                <Error>
26                 <NewPrice/>
27                 <Message>Сообщение об ошибке</Message>
28                </Error>
29             </Response>
30          </ResponseBin>
31       </ns1:SelectPaymentResponse>
32    </SOAP-ENV:Body>
33 </SOAP-ENV:Envelope>

Примеры использования

Запрос

 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DSelectPayment">
 2   <soapenv:Header/>
 3   <soapenv:Body>
 4     <ver:SelectPayment>
 5       <RequestBin>
 6         <Request>
 7           <OrderId>279712</OrderId>
 8           <PaymentMethodId>1079</PaymentMethodId>
 9         </Request>
10         <Source>
11           <ClientId>--</ClientId>
12           <APIKey>--</APIKey>
13           <Language>RU</Language>
14           <Currency>RUB</Currency>
15         </Source>
16       </RequestBin>
17     </ver:SelectPayment>
18   </soapenv:Body>
19 </soapenv:Envelope>

Ответ

 1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://CLIENT_DOMAIN/wsdev/?version%3D1.0%26for%3DSelectPayment">
 2   <SOAP-ENV:Body>
 3       <ns1:SelectPaymentResponse>
 4          <ResponseBin>
 5             <Response>
 6                <TransactionId>117608085</TransactionId>
 7                  <PaymentParameters>
 8                   <PaymentParameter>
 9                      <Key>Code</Key>
10                      <Value>a117608085a0CGN73</Value>
11                   </PaymentParameter>
12                   <PaymentParameter>
13                      <Key>Timelimit</Key>
14                      <Value>23:59 20.01.2015</Value>
15                   </PaymentParameter>
16                   <PaymentParameter>
17                      <Key>Description</Key>
18                      <Value>Ваш платежный код - a117608085a0CGN73. Оплатить заказ необходимо до 23:59 20.01.2015</Value>              
19                   </PaymentParameter>
20                </PaymentParameters>
21             </Response>
22          </ResponseBin>
23       </ns1:SelectPaymentResponse>
24    </SOAP-ENV:Body>
25 </SOAP-ENV:Envelope>

Ответ с ошибкой

 1 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://release.mlsd.ru/wsdev/?version%3D1.0%26for%3DSelectPayment">
 2    <SOAP-ENV:Body>
 3       <ns1:SelectPaymentResponse>
 4          <ResponseBin>
 5             <Error>
 6               <NewPrice/>
 7               <Message>Unknown order status: Problematic</Message>
 8             </Error>
 9          </ResponseBin>
10       </ns1:SelectPaymentResponse>
11    </SOAP-ENV:Body>
12 </SOAP-ENV:Envelope>

Фиксации оплаты через Агентский АПИ

Сервис предназначен для фиксации оплаты в заказе. Фиксация оплаты доступна, если IP-адрес пользователя совпадает с IP-адресом, указанным в настройке Допустимые IP-адреса для выписки без оплаты или фиксации оплаты (раздел Настройки системы → Интеграция → Nemo 1.0 (SOAP API)). Если IP-адрес не указан или не совпадает, произойдет блокировка оплаты. Сервис вызывается следующим образом: http://CLIENT_DOMAIN/nemoflights/wsdl.php?for=PayOrder

Общий формат запроса / ответа

В запросе необходимо указать:

  • номер заказа в системе Nemo, по которому производится оплата,
  • название платежного шлюза - Deposit или номер ПШ в системе Nemo.

Доступ к оплате имеет только пользователь, у которого есть на это права, а именно:

  • Пользователь должен иметь доступ к указанной в запросе платежной системе
  • IP адрес пользователя должен соответствовать адресу, указанному в настройке Допустимые ip-адреса для выписки без оплаты или фиксации оплаты

API пользователи, относящиеся к компаниям или субагентствам, не могут выполять выписку до проведения оплаты

Запрос

 1 <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ver="http://nemojulia/nemoflights/?version%3D1.0%26for%3DPayOrder">
 2    <soapenv:Header/>
 3    <soapenv:Body>
 4   	<ver:PayOrder>
 5      	<RequestBin>
 6         	<Request>
 7            	<PayOrder>
 8               	<BookID>?</BookID>
 9         			<!--BookID — Id забронированного заказа в системе Nemo-->
10               	<PaymentGateway>?</PaymentGateway>
11         			<!--PaymentGateway — Либо название платежного шлюза, например: Deposit, либо идентификатор ПШ в системе Nemo, например: 1880 -->
12               </PayOrder>
13         	</Request>
14         	<Source>
15            	<ClientId>?</ClientId>
16   			 <!--ClientId — ID клиента в системе Nemo. Можно посмотреть/добавить в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».-->
17            	<APIKey>?</APIKey>
18    		 <!--APIKey — секретный ключ доступа к API Nemo. Можно посмотреть/добавить в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».-->
19            	<Language>?</Language>
20    		 <!--Language — язык, например: RU-->
21            	<Currency>?</Currency>
22    		 <!-- Currency — валюта, например: RUB, EUR-->
23            	<ShowNames>?</ShowNames>
24            	<!-- ShowNames — отображение названий аэропортов, авиакомпаний и воздушных судов: true - отображать, false - не отображать. Возвращает значение на том языке, который был указан в запросе. Для RU - русский вариант, для UKR, EN, ES - латинский вариант. Опциональный элемент.  -->
25            	<EndUserData>
26               	<!--Блок с данными о конечном пользователе, необязательный, но необходим при при использовании запросов поиска и бронирования для поставщика TravelFusion-->
27               	<EndUserIP>?</EndUserIP>
28                	<!--IP адрес пользователя-->
29               	<EndUserBrowserAgent>?</EndUserBrowserAgent>
30                	<!--Браузер пользователя-->
31               	<RequestOrigin>?</RequestOrigin>
32    		<!--Страна и домен, с которого пользователь совершает поиск/бронирование-->
33            	</EndUserData>
34         	</Source>
35      	</RequestBin>
36   	</ver:PayOrder>
37    </soapenv:Body>
38 </soapenv:Envelope>

Ответ

  1 <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">
  2   <SOAP-ENV:Body>
  3 	<ns1:PayOrderResponse>
  4   	<ResponseBin>
  5     	<Response>
  6       	<PayOrder ID="" Status="?" Code="?">
  7       	<!--ID — Id брони в системе nemo.travel, целое число, обязательный-->
  8       	<!--Status — индикатор состояния брони, возможные значения:
  9                                            	booked — забронировано,
 10                                            	canceled — бронь отменена,
 11                                            	ticket — выписана
 12                                            	UNDEFINED — статус не определён-->
 13       	<!--Code — код брони в системе поставщика-->
 14         	<QueryPlace xsi:nil="true"/>
 15    		 <!--QueryPlace — положение брони в очереди, Number — номер брони в очереди-->
 16         	<Flight FlightId="?">
 17    		 <!--FlightId — Id перелёта в системе nemo.travel-->
 18           	<WebService>?</WebService>
 19    		   <!--WebService — поставщик перелёта-->
 20           	<ValCompany>?</ValCompany>
 21    		   <!--ValCompany — код авиакомпании, являющейся валидирующим перевозчиком, IATA-->
 22           	<URL>?</URL>
 23    		   <!--URL — ссылка на бронирование конкретного перелета-->
 24           	<Segments>
 25             	<Segment SegNum="?" SegGroupNum="?">
 26             	<!--SegNum — номер сегмента в перелёте-->
 27             	<!--SegGroupNum – номер плеча перелёта-->   			 
 28               	<SupplierCode>?</SupplierCode>
 29    			   <!--SupplierCode – номер заказа в системе АК-->
 30               	<DepAirp CodeType="?" Name="?">?</DepAirp>
 31    			   <!--DepAirp — аэропорт отправления, например: MOW — любой аэропорт в г.Москва
 32                	или SVO — Шереметьево-->
 33               	<DepTerminal>?</DepTerminal>
 34    			   <!--DepTerminal — терминал пункта отправления, если пустое значение,
 35               	то в аэропорту всего 1 терминал-->
 36               	<ArrAirp CodeType="?" Name="?">?</ArrAirp>
 37    			   <!--ArrAirp — аэропорт прибытия-->
 38               	<ArrTerminal xsi:nil="true"/>
 39    			   <!--ArrTerminal — терминал пункта прибытия, если пустое значение,
 40               	то в аэропорту всего 1 терминал-->
 41               	<OpAirline>?</OpAirline>
 42    			   <!--OpAirline — авиакомпания перевозчик, например: SU — Аэрофлот-->
 43               	<OpAirlineName>?</OpAirlineName>
 44    			   <!--OpAirlineName - авиакомпания перевозчик, например: SU — Аэрофлот-->
 45               	<OpAirlineLogo>?</OpAirlineLogo>
 46    			   <!--OpAirlineLogo - полное наименование АК на кириллице-->   			 
 47               	<MarkAirline>?</MarkAirline>
 48    			   <!--MarkAirline — авиакомпания, продающая перелёт-->
 49               	<MarkAirlineName>?</MarkAirlineName>
 50    			   <!--MarkAirline — авиакомпания, продающая перелёт-->
 51               	<MarkAirlineLogo>?</MarkAirlineLogo>
 52    			   <!--MarkAirlineName - полное наименование АК на кириллице-->
 53               	<FlightNumber>?</FlightNumber>
 54    			   <!--FlightNumber — номер рейса-->
 55               	<AircraftName>?</AircraftName>
 56    			   <!--AircraftName — наименование воздушного судна-->
 57               	<AircraftType>?</AircraftType>
 58    			   <!--AircraftType — тип воздушного судна, код-->
 59               	<DepDateTime>?</DepDateTime>
 60    			   <!--DepDateTime — дата и время отправления, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
 61               	<ArrDateTime>?</ArrDateTime>
 62    			   <!--ArrDateTime — дата и время прибытия, формат ГГГГ-MM-ДДTЧЧ:ММ:СС-->
 63               	<StopNum>?</StopNum>
 64    			   <!--StopNum — количество остановок-->
 65               	<StopPoints/>
 66               	<BookingCodes>
 67                 	<BookingCode ClassType="?">
 68    				 <!--ClassType — класс перелета, например: economy-->
 69                   	<BookingCode>?</BookingCode>
 70    				   <!--BookingCode — код класса бронирования, у разных авиакомпаний один и тот же класс
 71                   	может записываться разными литерами, например: L-->
 72                 	</BookingCode>
 73               	</BookingCodes>
 74               	<FlightTime>?</FlightTime>
 75    			   <!--FlightTime — время перелёта в минутах-->
 76               	<RemainingSeats xsi:nil="true"/>
 77               	<TimeZone Departure="?" Arrival="?"/>
 78    			   <!--Departure временная зона аэропорта отправления-->
 79               	<!--Arrival — временная зона аэропорта прибытия-->
 80               	<ETicket>?</ETicket>
 81    			   <!--ETicket — признак электронного билета, значения: true / false-->
 82               	<isCharter>?</isCharter>
 83    			   <!--isCharter — признак чартерного перелета, значения: true / false-->
 84               	<BaggageAllowances>
 85    			   <!--BaggageAllowances — информация о багаже-->
 86                 	<BaggageAllowance>
 87                   	<PassengerType>?</PassengerType>
 88    				   <!--PassengerType — тип пассажира, соответстует типу тарифа в PricingInfo -->
 89                   	<Value>?</Value>
 90    				   <!--Value — количество-->
 91                   	<Measurement>?</Measurement>
 92    				   <!--Measurement — мера измерения, может принимать значения: kg — килограмм, pc — багажное место, lb — фунт-->
 93                 	</BaggageAllowance>
 94               	</BaggageAllowances>
 95             	</Segment>
 96           	</Segments>
 97           	<PricingInfo Refundable="?">
 98    		   <!--Refundable — возвратный/невозвратный, true/false. Если пустое, то не известно-->
 99             	<PassengerFare Type="?" Quantity="?">
100    			 <!--Type — тип тарифа-->
101             	<!--Quantity — количество пассажиров данного типа-->
102               	<TravellerRef>
103                 	<Ref>?</Ref>
104    				 <!--Ref — Номер пассажира-->
105               	</TravellerRef>
106               	<BaseFare Currency="?" Amount="?"/>
107               	<!--BaseFare — базовая стоимость, в базовой валюте. Currency — код валюты, Amount — значение цены-->
108               	<EquiveFare Currency="?" Amount="?"/>
109               	<!--EquiveFare — базовая стоимость, в эквивалентной валюте(валюте продажи).
110               	Currency — код валюты, Amount — значение цены-->
111               	<TotalFare Currency="?" Amount="?"/>
112               	<!--TotalFare — суммарная стоимость, в эквивалентной валюте.
113               	Currency — код валюты, Amount — значение цены-->
114               	<Taxes>
115                 	<Tax CurCode="?" TaxCode="?" Amount="?"/>
116    				 <!--CurCode — код валюты, TaxCode — код таксы, Amount — сумма таксы-->
117               	</Taxes>
118               	<Tariffs>
119                 	<Tariff Code="?" SegNum="?">
120    				 <!--Code — код тарифа, SegNum — номер сегмента, к которому применён тариф-->
121                   	<FareFamilies xsi:nil="true"/>
122                 	</Tariff>
123               	</Tariffs>
124               	<FareCalc>?</FareCalc>
125    			   <!--FareCalc — строка расчёта цены-->
126               	<LastTicketDateTime>?</LastTicketDateTime>
127    			   <!--LastTicketDateTime — дата и время таймлимита по выписке в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
128             	</PassengerFare>
129           	</PricingInfo>
130           	<Commission/>
131           	<Charges Currency="?">?</Charges>
132    		   <!--Charges — сборы, Currency — код валюты-->
133           	<TotalPrice Currency="?">?</TotalPrice>
134    		   <!--TotalPrice — итоговая цена, Currency — код валюты-->
135         	</Flight>
136         	<Agency/>
137         	<ItinReceipts Encoding="?" Format="?">
138    		 <!--ItinReceipts — маршрут квитанция, Encoding — кодировка, Format — формат-->
139         	<FareStored xsi:nil="true"/>
140         	<PaymentTransactions>
141           	<Transaction>
142             	<Id>?</Id>
143    			 <!--Id — номер транзакции в Немо-->
144             	<Status>?</Status>
145    			 <!--Status — статус транзакции-->
146             	<GatewayName>?</GatewayName>
147    			 <!--GatewayName — название платежного шлюза-->
148             	<MoneyPaid Currency="?">?</MoneyPaid>
149    			 <!--MoneyPaid — сумма оплаты-->
150             	<!--Currency — валюта-->
151             	<PaymentDateTime>?</PaymentDateTime>
152    			 <!--PaymentDateTime — дата и время оплаты-->
153             	<CreateDateTime>?</CreateDateTime>
154    			 <!--CreateDateTime — дата и время создания платежной транзакции-->
155             	<Description/>
156           	</Transaction>
157         	</PaymentTransactions>
158         	<PaymentStatus>?</PaymentStatus>
159    		 <!--PaymentStatus — статус оплаты:
160                                     	not_paid — не оплачено
161                                     	partly_paid — оплачено, частично
162                                     	fully_paid — оплачено, полностью-->
163         	<Travellers/>
164                 <AutoCancelDate>?</AutoCancelDate>
165                   <!--AutoCancelDate — дата и время таймлимита автоаннуляции в формате ГГГГ-MM-ДДTЧЧ:ММ:СС определяемые по настройкам агентства-->
166                   <TimeLimits>
167                     <TicketingTimeLimit>?</TicketingTimeLimit>
168                     <!--TicketingTimeLimit — Таймлимит на выписку в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
169                     <PriceTimeLimit>?</PriceTimeLimit>
170                     <!--PriceTimeLimit — Таймлимит цены из ГРС в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
171                     <AdvancedPurchaseTimeLimit>?</AdvancedPurchaseTimeLimit>
172                     <!--AdvancedPurchaseTimeLimit — Таймлимит цены из тарифных правил в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
173                     <AgencyTimeLimit>?</AgencyTimeLimit>
174                     <!--AgencyTimeLimit - Таймлимит по настройкам в формате ГГГГ-MM-ДДTЧЧ:ММ:СС-->
175                   </TimeLimits>
176       	</PayOrder>
177      	</Response>
178   	</ResponseBin>
179 	</ns1:PayOrderResponse>
180   </SOAP-ENV:Body>
181 </SOAP-ENV:Envelope>

Возможные ошибки в результате выполнения запроса.

При выполнения запроса возможны следующие ошибки:

  • 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).

См. также