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



Запрос возврата средств оплаты (refund)

Для возврата средств используется запрос refund.do.

По этому запросу средства по указанному заказу будут возвращены плательщику. Запрос закончится ошибкой в случае, если средства по этому заказу не были списаны. Система позволяет возвращать средства более одного раза, но в общей сложности не более первоначальной суммы списания.

Для выполнения операции возврата необходимо наличие соответствующих права в системе.

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

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

Пользуясь протоколом REST, тело сообщения запроса следует отправлять с типом: 'Content-Type: application/x-www-form-urlencoded'.

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

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

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

userName

AN..30

Да

Логин служебной учётной записи продавца.

password

AN..200

Да

Пароль служебной учётной записи продавца.

amount

N..12

Нет

Сумма частичной отмены. Параметр, обязательный для частичной отмены.

orderId

ANS36

Да

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

jsonParams

Строка

Нет

Дополнительные параметры запроса. Формат вида: {«Имя1»: «Значение1», «Имя2»: «Значение2»}. При указании «showLoyalty»:«false» взаимодействие с сервисом лояльности осуществляться не будет.

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

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

externalRefundId

AN..30

Нет

Идентификатор возврата. При попытке повторного возврата, проверяется externalRefundId: если есть, то возвращается успешный ответ с данными о возврате, если нет - осуществляется возврат.

Если в запросе указать amount=0, производится возврат на всю сумму заказа.

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

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

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

errorCode

N..2

Нет

Код ошибки. Может отсутствовать, если результат не привёл к ошибке.

errorMessage

AN..512

Нет

Описание ошибки на языке, переданном в параметре language в запросе.

Коды ошибок

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

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

5

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

5

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

5

[orderId] не задан.

5

Неверная сумма.

5 Ошибка значение параметра запроса
5 Неверный формат параметра refundItems
5 [refundItems.item.quantity] превышает допустимое значение
5 [refundItems.item.itemAmount] превышен
5 Неуспешно
6

Неверный номер заказа.

7

Платёж должен быть в корректном состоянии.

7

Сумма возврата превышает сумму списания.

7

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

7 Ожидаемая сумма заказа не соответствует текущей сумме
7 Неверная сумма возврата (менее одного рубля)
7 Происходит процессинг данной транзакции. Пожалуйста, повторите запрос позднее
7 Системная ошибка
7 Данному платежу установлен флаг chargeback
7 Для проведения возврата по свободной позиции, [positionId] должен присутствовать в корзине заказа
7 Для проведения возврата на свободную сумму, [positionId] не должен присутствовать в корзине заказа
7 Обычные возвраты и возвраты по свободной позиции не поддерживаются после возврата на свободную сумму
7 Возвраты на свободную сумму и по свободной позиции не поддерживают заказы, оплаченные баллами лояльности
7 Обычный возврат отклонен. По одному или нескольким элементам корзины был проведен возврат по свободной позиции
7 Параметр positionId является обязательным для возврата по свободной сумме и свободной позиции
7 Обычный возврат и возврат по свободной позиции недоступны после возврата на свободную сумму. Вы пытаетесь провести обычный возврат.
7 Обычный возврат и возврат по свободной позиции недоступны после возврата на свободную сумму. Вы пытаетесь провести возврат по свободной позиции.
7 Возвраты на свободную сумму и по свободной позиции недоступны для заказов без корзины
7 Данный тип платежа не поддерживает возврат
8 Не удалось провести возврат бонусов
8 [customerDetails] не заполнены поля параметра
8 [customerDetails.email] неверный формат
8 [customerDetails.phone] неверный формат
8 [customerDetails.contact] неверный формат
8 [customerDetails.deliveryInfo.deliveryType] неверный формат
8 [customerDetails.deliveryInfo.country] обязательное поле
8 [customerDetails.deliveryInfo.country] неверный формат
8 [customerDetails.deliveryInfo.city] обязательное поле
8 [customerDetails.deliveryInfo.city] неверный формат
8 [customerDetails.deliveryInfo.postAddress] обязательное поле
8 [customerDetails.deliveryInfo.postAddress] неверный формат
8 [refundItems] обязательное поле
8 [refundItems.item.positionId] обязательное поле
8 [refundItems.item] неверный формат
8 [refundItems.item.name] обязательное поле
8 [refundItems.item.name] неверный формат
8 [refundItems.item.itemDetailsParams.name] обязательное поле
8 [refundItems.item.itemDetailsParams.name] неверный формат
8 [refundItems.item.itemDetailsParams.value] обязательное поле
8 [refundItems.item.itemDetailsParams.value] неверный формат
8 [refundItems.item.quantity] обязательное поле
8 [refundItems.item.quantity] недопустимое значение
8 [refundItems.item.quantity.value] неверный формат
8 [refundItems.item.quantity.measure] неверный формат
8 [refundItems.item.quantity.value] Слишком большая дробная часть
8 [refundItems.item.quantity.value] Слишком большое либо слишком маленькое значение
8 [refundItems.item.quantity.value] Слишком маленькое значение для возврата
8 [refundItems.item.itemAmount] неверный формат
8 [refundItems.item.currency] неверный формат
8 [refundItems.item.itemCode] обязательное поле
8 [refundItems.item.itemCode] неверный формат
8 [loyalties.loyalty.loyaltyProgramName] обязательное поле
8 [loyalties.loyalty.loyaltyProgramName] неверный формат
8 [loyalties.loyalty.positionId] обязательное поле
8 [loyalties.loyalty.positionId] неверный формат
8 [loyalties.loyalty.bonusAmountForDebit] неверный формат
8 [loyalties.loyalty.bonusAmountForCredit] неверный формат
8 [refundItems.totalAmount] сумма товарных позиций в корзине не совпадает с общей суммой
8 [loyalties.withParams.sum] Сумма бонусных баллов в корзине не совпадает с общей суммой баллов заказа
8 Сумма бонусных балов к списанию в корзине превышает допустимое количество
8 [loyalties.loyalty.positionId] товарной позиции с данным positionId не существует
8 [loyalties.loyalty.name] неверный формат
8 [loyalties.loyalty.name] программы лояльности с таким именем не существует
8 [refundItems.items] оригинальный заказ не содержит товарных позиций
8 [refundItems.item.quantity.measure] обязательное поле
8 [refundItems.items.currency] валюта в корзине не соответствует валюте заказа
8 [refundItems.items.currency] неверный формат
8 превышена сумма возврата
8 [refundItems.items] обязательное поле
8 [refundItems.item.positionId] неверный формат
8 [items.item.position] оригинальный заказ не содержит товарной позиции с данным номером
8 [items.item.name] оригинальный заказ не содержит товарной позиции с данным именем
8 [items.item.code] оригинальный заказ не содержит товарной позиции с данным кодом
8 [items.item.quantity] количество экземпляров товарной позиции не соответствует таковому в оригинальном заказе
8 [items.item.amount] превышена сумма возврата товарной позиции
8 [refundAmount] при полном возврате возвращаемая сумма должна соответствовать таковой в оригинальном заказе
8 [item.quantity.value] обязательное поле
8 [item.itemAmount] обязательное поле
8 [item.currency] обязательное поле
8 необходима корзина для проведения возврата либо некорректная сумма для проведения полного возврата заказа
8 [refundItems.item.quantity.value] Слишком большая дробная часть
8 [refundItems.item.quantity.value] Слишком большое либо слишком маленькое значение
8 [refundItems.item.quantity.value] Слишком маленькое значение для возврата
8 Выявлено нарушение статистики
8 [orderBundle.loyalties.loyalty] оплата с использованием лояльности отключена для этого мерчанта
8 [item.itemCode] дублируется
8 [refundOrder.item.tax.type] некорректный
8 [refundOrder.item.tax.sum] обязательный
8 [refundOrder.item.tax.sum] некорректный
8 Несоответствие между [orderBundle.cartItems.item.itemPrice] и [orderBundle.cartItems.item.itemAmount]
8 [wrong.transaction.state] Транзакция должна быть в состоянии Deposited
8 Корзина данного заказа не содержит [positionId]
8 Если сумма возврата по товарной позиции частичная, то и значение quantity должно быть тоже частичным
8 Корзина товаров в запросе не ожидается
8 [orderBundle.cartItems.item.itemPrice] обязательное поле
10 Некорректное имя дополнительного ОФД параметра
10 Некорректное значение дополнительного ОФД параметра

Примеры

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

amount=500&currency=643&language=ru&orderId=5e97e3fd-1d20-4b4b-a542-f5995f5e8208

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

{"errorCode":0}