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

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

Текущая версия на 15:52, 5 декабря 2018

Подключение

Это сервис внутри Nemo, который предназначен для выполнения различных операций, относящихся к оплате заказов.

Для подключения к данной веб-службе необходимо открыть доступ нужному пользователю. Это можно сделать в разделе «Настройки системы» → «Интеграция» → «Nemo 1.0 (SOAP API)».

После добавления пользователя ему будут присвоены Номер (ClientId) и API ключ клиента, которые нужно использовать для подключения.

Получение списка доступных способов оплаты

WSDL находится по адресу: http://CLIENT_DOMAIN/wsdev/wsdl.php?version=1.0&for=PaymentInitialization На данный момент метод доступен для платежных шлюзов Юнителлер и Рапида.

Для получения результата необходим параметр «OrderId» — ID забронированного заказа, который необходимо оплатить.

Данный запрос позволяет получить список платёжных шлюзов, через которые есть возможность оплатить указанный заказ. По каждому платёжному шлюзу возвращается следующая информация:

  • id способа оплаты
  • имя платежного шлюза
  • дополнительную наценку, которая добавляется к заказу при проведении оплаты через данный шлюз
  • URL, перенаправляющий пользователя непосредственно на страницу оплаты через данный платёжный шлюз
  • в случае отправки запроса с мобильной платформы может дополнительно возвращаться URL, на который происходит перенаправление пользователя для оплаты

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

Запрос

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

См. также