Запрос на оплату с помощью Android Pay (payment.do)

Для регистрации заказа используется запрос payment.do (см. ниже).

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

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

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

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

merchant

AN..255

Да

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

orderNumber

ANS..32

Да

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

description

ANS..512

Нет

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

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

language

A2

Нет

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

additionalParameters

Не актуально

Нет

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

{
    "firstParamName": "firstParamValue",
    "secondParamName": "secondParamValue"
}

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

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

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

preAuth

A..5

Нет

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

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

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

clientId

ANS..255

Нет

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

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

paymentToken

Строка

Да

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

ip

ANS..39

Нет

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

amount

N..12

Нет

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

Перед суммированием всех товарных позиций для каждой товарной позиции произведение количества (quantity) и стоимости (price) округляется до целого числа. Т. е., если после десятичной запятой стоит 5 и более, то округление происходит в большую сторону. Ниже приведены примеры округления.

  1. Если quantity = 0,111, а price = 5500, то результат: 611 (округлённое 610,5).
  2. Если quantity = 1,455, а price = 6900, то результат: 10040 (округлённое 10039,5).
  3. Если quantity = 1,211, а price = 6988, то результат: 8462 (округлённое 8462,468).

Таким образом, параметр amount должен быть равен сумме округлённых товарных позиций.

currencyCode

N3

Нет

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

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

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

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

success

A..5

Да

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

  • true (истина) - запрос обработан успешно;
  • false (ложь) - запрос не прошёл.

data

Не актуально

Да

Возвращается, только если платёж прошёл успешно и содержит один вложенный параметр (см. ниже).

orderId

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

Следующий параметр возвращается, если используются связки.

bindingId

Идентификатор созданной ранее связки. Может использоваться, только если у продавца есть разрешение на работу со связками. Если этот параметр передаётся в данном запросе, то это означает:
1. Данный заказ может быть оплачен только с помощью связки;
2. Плательщик будет перенаправлен на платёжную страницу, где требуется только ввод CVC.

Параметры ниже обязательны, только если используется дополнительная аутентификация на ACS банка-эмитента.

acsUrl

При успешном ответе в случае платежа с использованием 3-D Secure. URL-адрес для перехода на сервер контроля доступа.

paReq

При успешном ответе в случае платежа с использованием 3-D Secure. Payment Authentication Request - запрос на аутентификацию платежа.

termUrl

При успешном ответе в случае платежа, в котором выполнялась проверка на принадлежность карты к 3-D Secure. URL-адрес для возврата с сервера контроля доступа.

error

Не актуально

Да

Возвращается, только если платёж не прошёл. Ниже представлены вложенные параметры.

code

Код ошибки.

description

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

message

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

Коды ошибок

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

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

5

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

5

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

7

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

10

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

10

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

10

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

10

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

10

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

Пример запроса POST

{
    "merchant": "OurBestMerchantLogin",
    "orderNumber": "UAF-203974-DE",
    "language": "RU",
    "preAuth": true,
    "description" : "Test description",
    "additionalParameters":
    {
        "firstParamName": "firstParamValue",
        "secondParamName": "secondParamValue"
    },
    "paymentToken": "eyJtZXJjaGFudCI6ICJrdXBpdmlwIiwib3JkZXJOdW1iZXIiOiAyMDUxOTIzMzkxLCJwYXltZW50VG9rZW4iOiAie1wiZXBoZW1lcmFsUHVibGljS2V5XCI6XCJrZXlcIixcImVuY3J5cHRlZE1lc3NhZ2VcIjpcIm1lc3NhZ2VcIixcInRhZ1wiOlwidGFnXCJ9In0=",
    "ip" : "127.0.0.1",
    "amount" : "230000",
    "currency" : "643"
}

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

Успешная оплата

{
"success":true,
"data": {
    "orderId": "12312312123"
  }
}

Неуспешная оплата

{
  "error": {
    "code": 1,
    "description": "Processing Error",
    "message": "Недостаточно средств на карте"
  },
  "success": false
}