Инструменты страницы

Запрос на оплату с помощью Google Pay (googlePay)

Для оплаты через Google Pay используется запрос googlePay.

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

Разница в запросах между токенизированными и нетокенизированными картами отсутствует.

В настоящем документе при описании параметров запросов и ответов используются следующие обозначения типов данных:

  • A<n> – последовательность латинских букв длины <n>;
  • A..<n> – последовательность латинских букв длиной, не превышающей <n>;
  • N<n> – последовательность цифр длины <n>;
  • N..<n> – последовательность цифр длиной, не превышающей <n>;
  • AN<n> – последовательность латинских букв и цифр фиксированной длины <n>;
  • AN..<n> – последовательность латинских букв и цифр длиной, не превышающей <n>;
  • ANS<n> – последовательность латинских букв, цифр и символов фиксированной длины <n>
  • ANS..<n> – последовательность латинских букв, цифр и символов длиной, не превышающей <n>;
  • UTC – дата и время, при этом: дата должна быть передана без указания часового пояса, время московское, для протокола SOAP используется стандартная кодировка xs:dateTime.

Параметры запроса

Параметры запроса представлены в таблице ниже.

Название Тип Обязательно Описание

merchant

AN..255

Да

Логин продавца в платёжном шлюзе.

orderNumber

ANS..32

Да

Номер (идентификатор) заказа в системе магазина, уникален для каждого магазина в пределах системы - до 30 символов. Если номер заказа генерируется на стороне платёжного шлюза, этот параметр передавать необязательно.

paymentToken

AN..8192

Да

Токен, полученный от Google Pay и закодированный в Base64.

ip

ANS..39

Да

IP-адрес покупателя. IPv6 поддерживается во всех запросах (до 39 символов).

amount

N..12

Да

Сумма платежа в минимальных единицах валюты.

description

ANS..598

Нет

Описание заказа в свободной форме. В процессинг «Сбербанка» для включения в финансовую отчётность продавца передаются только первые 24 символа этого поля.

Чтобы получить возможность отправлять это поле в процессинг, обратитесь в техническую поддержку.

language

A2

Нет

Язык в кодировке ISO 639-1. Если не указан, будет использован язык, указанный в настройках магазина как язык по умолчанию.

additionalParameters

Не актуально

Нет

Дополнительные параметры заказа, которые сохраняются для просмотра из личного кабинета продавца. Для каждого дополнительного параметра следует использовать блок entry, в который входят следующие вложенные параметры.

Название Тип Описание

key

Строка

Имя дополнительного параметра.

value

ANS..2000

Значение дополнительного параметра - до 2000 символов.

Ниже представлен пример использования.

<entry>
    <key>parameter_1</key>
    <value>value_1</value>
</entry>
<entry>
    <key>parameter_2</key>
    <value>value_2</value>
</entry>

Если у продавца настроена фискализация, при указании в качестве дополнительных параметров email (адрес электронной почты покупателя) и/или phone (номер сотового телефона покупателя) эти параметры в первую очередь используются для отправки фискального чека.

В параметре запрещено передавать зарезервированные имена (в случае их передачи заказ может быть отклонен):

  • sbrf_spasibo:amount_bonus
  • sbrf_sbermiles:amount_bonus
  • loyaltyId
  • overridenClientId

preAuth

A..5

Нет

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

  • true (истина) - параметр включён, производится двухстадийная оплата;
  • false (ложь) - параметр выключен, производится одностадийная оплата (средства списываются сразу).

Если параметр не указан в запросе, происходит одностадийная оплата.

Возможность проводить двухстадийные платежи предоставляется по отдельному запросу.

Этот параметр можно передавать как булевым значением (без кавычек), так и строкой (с кавычками).

clientId

ANS..255

Нет

Номер (идентификатор) клиента в системе магазина. Используется для реализации функционала связок. Может присутствовать, если магазину разрешено создание связок.

Указание этого параметра при платежах по связке необходимо - в противном случае платёж будет неуспешен.

currencyCode

N3

Нет

Цифровой код валюты платежа ISO 4217. Если не указан, считается равным коду валюты по умолчанию.

email

ANS..40

Нет

Адрес электронной почты покупателя. Можно указать несколько адресов электронной почты через запятую и без пробелов - в этом случае чек будет отправлен на все указанные адреса.

phone

NS..12

Нет

Номер телефона клиента. Примеры:

  • +79000000000
  • 89000000000
  • 9000000000
  • 79000000000

В случае передачи номера в отдельном параметре и в дополнительных параметрах, в качестве основного использоваться будет номер, указанный в настоящем параметре phone.

returnUrl

ANS..512

Да

Адрес, на который требуется перенаправить пользователя в случае успешной оплаты, а также в случае неуспешной оплаты (при отсутствии переданного параметра failUrl). Адрес должен быть указан полностью, включая используемый протокол (например, https://test.ru вместо test.ru). В противном случае пользователь будет перенаправлен по адресу следующего вида: http://<адрес_платёжного_шлюза>/<адрес_продавца>.

Адрес нельзя указывать относительным путем, т.е. они не должны начинаться на «.» и «/». В противном случае вернется ошибка 4: «URL возврата некорректен». Например:

failUrl

ANS..512

Нет

Адрес, на который требуется перенаправить пользователя в случае неуспешной оплаты. Адрес должен быть указан полностью, включая используемый протокол (например, https://test.ru вместо test.ru). В противном случае пользователь будет перенаправлен по адресу следующего вида: http://<адрес_платёжного_шлюза>/<адрес_продавца>.

Адрес нельзя указывать относительным путем, т.е. они не должны начинаться на «.» и «/». В противном случае вернется ошибка 4: «URL возврата некорректен». Например:

Параметр необязательный. В таком случае при неуспешной оплате, так же как и при успешной оплате, будет происходить переход на returnUrl.

dynamicCallbackUrl

ANS..512

Нет

Параметр позволяет воспользоваться функциональность динамической отправки callback-уведомлений. В нем можно передать адрес, на который будут отправляться все «платежные» callback-уведомления, активированные для продавца. Под платежными понимаются callback-уведомления о следующих событиях: успешный холд, платеж отклонен по таймауту,  платеж cardpresent отклонен, успешное списание, возврат, отмена. При этом активированные для мерчанта callback-уведомления, не относящиеся к платежам (включение/выключение связки, создание связки), будут отправляться на статический адрес для callback-ов.

Для использования функциональности динамической отправки callback-уведомлений необходимо, чтобы у мерчанта была выставлена соответствующая настройка: Тип callback-а: Динамический (CALLBACK_TYPE = DYNAMIC).

Чтобы мерчант мог получать callback-уведомления, для него необходима активация пермиссии: Разрешено выполнять callback операции.

При аутентификации по протоколу 3DS 2.0 также передаются следующие параметры:

Название Тип Обязательно Описание

threeDSServerTransId

ANS..36

См. описание

Идентификатор транзакции созданный на сервере 3DS.

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

threeDSVer2FinishUrl

AN..512

Нет

Адрес переадресации клиента после аутентификации на сервере ACS.

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

threeDSMethodNotificationUrl

AN..512

Нет

Адрес для отправки уведомления о прохождении проверки 3D Secure.

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

При аутентификации по протоколу 3DS 2.0 после повторного запроса на оплату и необходимости перенаправления клиента на ACS в ответе будут присутствовать следующие параметры.

Название Тип Обязательно Описание

acsUrl

AN..512

Да, в случае необходимости перенаправления на ACS

Адрес перенаправления на адрес сервера ACS.

packedCReq

ANS..*

Да, в случае необходимости перенаправления на ACS

Запакованные данные challenge request. Это значение следует использовать как значение параметра creq ссылки на ACS (acsUrl), для перенаправления клиента на ACS.

Пример первого запроса

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mer="http://server/webservices/merchant">
   <soapenv:Header/>
   <soapenv:Body>
      <mer:googlePay>
         <arg0>
            <merchant>OurBestMerchantLogin</merchant>
            <orderNumber>UAF-203974-DE</orderNumber>
            <language>RU</language>
            <preAuth>true</preAuth>
            <paymentToken>eyJhcHBsaWNhdGlvblByaW1hcnlBY2NvdW50TnVtYmVyIjoiNDExMTExMTExMTExMTExMSIsImFwcGxpY2F0aW9uRXhwaXJhdGlvbkRhdGUiOiIxOTEyMjAiLCJjdXJyZW5jeUNvZGUiOiI2NDMiLCJ0cmFuc2FjdGlvbkFtb3VudCI6MzY1MDAsImRldmljZU1hbnVmYWN0dXJlcklkZW50aWZpZXIiOiIwNDAwMTAwMzAyNzMiLCJwYXltZW50RGF0YVR5cGUiOiIzRFNlY3VyZSIsInBheW1lbnREYXRhIjp7Im9ubGluZVBheW1lbnRDcnlwdG9ncmFtIjoiQWtaTzVYUUFBMHJoQnhvYXVmYStNQUFCQUFBPSIsImVjaUluZGljYXRvciI6IjcifX0=/<paymentToken>
            <ip>127.0.0.1</ip>
            <amount>230000</amount>
         <currencyCode>643</currencyCode>
         <returnUrl>https://test.ru</returnUrl>
         </arg0>
      </mer:googlePay>
   </soapenv:Body>
</soapenv:Envelope>

Пример повторного запроса

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:mer="http://server/webservices/merchant">
   <soapenv:Header/>
   <soapenv:Body>
      <mer:googlePay>
         <arg0>
            <merchant>OurBestMerchantLogin</merchant>
            <orderNumber>UAF-203974-DE</orderNumber>
            <language>RU</language>
            <preAuth>true</preAuth>
            <paymentToken>eyJhcHBsaWNhdGlvblByaW1hcnlBY2NvdW50TnVtYmVyIjoiNDExMTExMTExMTExMTExMSIsImFwcGxpY2F0aW9uRXhwaXJhdGlvbkRhdGUiOiIxOTEyMjAiLCJjdXJyZW5jeUNvZGUiOiI2NDMiLCJ0cmFuc2FjdGlvbkFtb3VudCI6MzY1MDAsImRldmljZU1hbnVmYWN0dXJlcklkZW50aWZpZXIiOiIwNDAwMTAwMzAyNzMiLCJwYXltZW50RGF0YVR5cGUiOiIzRFNlY3VyZSIsInBheW1lbnREYXRhIjp7Im9ubGluZVBheW1lbnRDcnlwdG9ncmFtIjoiQWtaTzVYUUFBMHJoQnhvYXVmYStNQUFCQUFBPSIsImVjaUluZGljYXRvciI6IjcifX0=/<paymentToken>
            <ip>127.0.0.1</ip>
            <amount>230000</amount>
         <currencyCode>643</currencyCode>
         <returnUrl>https://test.ru</returnUrl>
         <threeDSServerTransId>f44d6d21-1874-45a5-aeb0-1c710dd6e134</threeDSServerTransId>
         <threeDSVer2FinishUrl>https:test.com</threeDSVer2FinishUrl>
         </arg0>
      </mer:googlePay>
   </soapenv:Body>
</soapenv:Envelope>

Параметры ответа

Параметры ответа представлены в таблице ниже.

Название Тип Обязательно Описание

success

A..5

Да

Указывает на успешность запроса. Доступны следующие значения:

  • true (истина) - запрос обработан успешно;
  • false (ложь) - запрос не прошёл.
Блок data (возвращается, только если запрос прошёл успешно)

orderId

ANS36

Да

Номер заказа в платежной системе. Уникален в пределах системы. Отсутствует, если регистрация заказа не удалась по причине ошибки, детализированной в errorCode.

termUrl

AN..512

Только если используется дополнительная аутентификация на ACS банка-эмитента

Ссылка перенаправления плательщика после аутентификации.

acsUrl

AN..512

Только если используется дополнительная аутентификация на ACS банка-эмитента

Адрес перенаправления на адрес сервера ACS.

paReq

AN..512

Только если используется дополнительная аутентификация на ACS банка-эмитента

Запрос аутентификации плательщика.

bindingId

AN..255

Параметр возвращается, если используются связки

Идентификатор связки, созданной ранее.

Блок error (возвращается, только если запрос завершился с ошибкой)

code

N..2

Да

Код ошибки.

description ANS..512 Да Подробное техническое объяснение ошибки - содержимое этого параметра не предназначено для отображения пользователю.

message

AN..512

Да

Понятное описание ошибки - предназначено для отображения пользователю.

При аутентификации по протоколу 3DS 2.0 при первичном запросе возвращаются следующие параметры:

Название Тип Обязательно Описание

is3DSVer2

A..5

Да

Флаг, обозначающий то, что платёж/перевод будет проведён по протоколу 3DS версии 2.0. Доступны следующие значения:

  • true (истина) - платёж/перевод будет проведён по протоколу 3DS версии 2.0;
  • false (ложь) - платёж/перевод не будет проводиться по протоколу 3DS версии 2.0.

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

threeDSServerTransId

ANS..36

Да

Идентификатор транзакции созданный на сервере 3DS.

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

threeDSMethodURL

ANS..512

Нет

URL-адрес ACS для сбора данных о браузере.

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

threeDSMethodURLServer

ANS..512

Да

URL-адрес сервера 3DS для сбора данных о браузере для включения в запрос аутентификации AReq (Authentication Request) от сервера 3DS к серверу ACS.

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

threeDSMethodDataPacked

ANS..1024

Нет

Данные CReq (Challenge Response) для отправки на сервер ACS, закодированные в Base64.

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

threeDSMethodURLServerDirect

ANS..512

Нет

URL-адрес на метод 3dsmethod.do для выполнения 3DS метода на сервере 3DS через ПШ (при наличии соответствующей пермиссии).

Параметр используется при проведения аутентификации клиента по протоколу 3DS версии 2.0.

Пример ответа на первый запрос

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns1:googlePayResponse xmlns:ns1="http://server/webservices/merchant">
         <return>
            <success>true</success>
            <data>
               <orderId>12312312123</orderId>
               <is3DSVer2>true</is3DSVer2>
               <threeDSServerTransId>f44d6d21-1874-45a5-aeb0-1c710dd6e134</threeDSServerTransId>
               <threeDSMethodURLServer>https://test.com/3dsserver/gatherClientInfo?threeDSServerTransID=f44d6d21-1874-45a5-aeb0-1c710dd6e134</threeDSMethodURLServer>
            </data>
            <orderStatus errorCode="0"/>
         </return>
      </ns1:googlePayResponse>
   </soap:Body>
</soap:Envelope>

Пример ответа на повторный запрос

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns1:googlePayResponse xmlns:ns1="http://server/webservices/merchant">
         <return>
            <success>true</success>
            <data>
            <is3DSVer2>true</is3DSVer2>
            <acsUrl>https://test.com/acs2/acs/creq</acsUrl>
            <packedCReq>eyJ0aHJlZURTU2VydmVyVHJhbnNJRCI6IjVmMzEyMjdlLTljZmQtNDQwYi1hNDNjLTE4NjljMzNhNGI5YiIsImFjc1RyYW5zSUQiOiI5YTQyYzQ4ZC1hNWRiLTQ3NjEtYmI4Mi05ZmY5MmM0NzZiM2QiLCJjaGFsbGVuZ2VXaW5kb3dTaXplIjoiMDQiLCJtZXNzYWdlVHlwZSI6IkNSZXEiLCJtZXNzYWdlVmVyc2lvbiI6IjIuMS4wIn0=</packedCReq>
            </data>
            <orderStatus errorCode="0"/>
         </return>
      </ns1:googlePayResponse>
   </soap:Body>
</soap:Envelope>

Коды ошибок

Код ошибки Текст ошибки
0

Обработка запроса прошла без системных ошибок.

1 Недостаточно средств на карте
5

Доступ запрещён.

5

Пользователь должен сменить свой пароль.

7

Системная ошибка.

10

Некорректное значение параметра [paymentToken].

10

Некорректное значение параметра [orderNumber].

10

Некорректное значение параметра [merchant].

10

Некорректное значение параметра [ip].

10

Расшифровка переданных данных неуспешна.

10 Отсутствует приватный ключ