Links

Сценарий 3. Возврат оплаты

Кошелёк Pay API
Документация перемещена
Информация на этой странице не обновляется и может быть устаревшей. Наиболее полная и актуальная версия документации для разработчиков доступна по новому адресу:

Описание сценария возврата

Сценарий возврата описывает действия, которые необходимо выполнить, чтобы вернуть покупателю оплаченную сумму. Сценарий может быть выполнен только при наличии уже завершенной операции оплаты.
Приложение «Кошелёк» не участвует в процессе возврата — т.е. сканировать карту лояльности для оформления возврата не нужно.
(для просмотра в полном разрешении откройте изображение в новой вкладке)

Обработка частных случаев возврата

1. Полный возврат

Для полного возврата необходимо указать:
  • товары (items), которые были были указаны в запросе оплаты.
  • количество товара (quantity), равное количеству, переданному в запросе оплаты;
  • сумму возврата (refundAmount), равную итоговой сумме оплаты (totalAmount);

2. Частичный возврат

Для частичного возврата необходимо указать:
  • только те товары (items), которые необходимо вернуть;
  • только то количество товара (quantity), которое необходимо вернуть;
  • сумму возврата (refundAmount) меньше итоговой суммы оплаты (totalAmount);

3. Возврат нештучного товара

Для нештучного товара (т.е. товара, у которого единица измерения measure отличается от PIECE — например, весового товара) доступен только полный возврат нештучных позиций.

Альтернативные сценарии возврата и возможные ошибки

Для запуска сценария возврата на кассе необходимо инициировать отправку запроса возврата (/refund) на узел Кошелька. Если запрос дошел до узла Кошелька, то инициируется процесс возврата. Отменить его будет невозможно.
  1. 1.
    Если касса по каким-то причинам не получила ответ от Кошелька на этот запрос, то можно отправить повторный запрос с тем же значением параметра requestId — это обязательно, так как если первый запрос дошел до узла Кошелька, но ответ на него был потерян, то хост Кошелька поймет, что это повторный вызов первого запроса — касса получит ответ на первый запрос (действует правило идемпотентности).
  2. 2.
    Если первый запрос не дошёл до узла Кошелька, а второй дошёл, то он будет обработан, как первый.
  3. 3.
    Если касса получила ответ от узла Кошелька, то в нем будет содержаться поле refTransactionId. Для получения информации по статусу этой операции возврата кассе нужно использовать запрос статуса по операции (/status), содержащий полученное значение параметра refTransactionId.
Если касса не получила ответ на первый запрос возврата (/refund) и инициирует новый запрос с измененным значением параметра requestId, узел Кошелька обработает его как новый запрос на возврат, и в таком случае возможен двойной возврат средств на счёт пользователя.

Статусы транзакции отмены / возврата

На диаграмме состояний приведены переходы между различными статусами транзакции в процессе выполнения сценариев отмены или возврата платежа через Кошелёк Pay API.
  • Зелёным цветом отмечены успешные статусы.
  • Красным отмечены неуспешные статусы.
  • Жёлтым отмечены промежуточные статусы.
Статусы транзакции отмены / возврата