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

Кошелёк Pay API

Документация перемещена

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

https://developers.koshelek.app

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

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

Приложение «Кошелёк» не участвует в процессе возврата — т.е. сканировать карту лояльности для оформления возврата не нужно.

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

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

Для полного возврата необходимо указать:

  • товары (items), которые были были указаны в запросе оплаты.

  • количество товара (quantity), равное количеству, переданному в запросе оплаты;

  • сумму возврата (refundAmount), равную итоговой сумме оплаты (totalAmount);

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

Для частичного возврата необходимо указать:

  • только те товары (items), которые необходимо вернуть;

  • только то количество товара (quantity), которое необходимо вернуть;

  • сумму возврата (refundAmount) меньше итоговой суммы оплаты (totalAmount);

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

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

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

Для запуска сценария возврата на кассе необходимо инициировать отправку запроса возврата (/refund) на узел Кошелька. Если запрос дошел до узла Кошелька, то инициируется процесс возврата. Отменить его будет невозможно.

  1. Если касса по каким-то причинам не получила ответ от Кошелька на этот запрос, то можно отправить повторный запрос с тем же значением параметра requestId — это обязательно, так как если первый запрос дошел до узла Кошелька, но ответ на него был потерян, то хост Кошелька поймет, что это повторный вызов первого запроса — касса получит ответ на первый запрос (действует правило идемпотентности).

  2. Если первый запрос не дошёл до узла Кошелька, а второй дошёл, то он будет обработан, как первый.

  3. Если касса получила ответ от узла Кошелька, то в нем будет содержаться поле refTransactionId. Для получения информации по статусу этой операции возврата кассе нужно использовать запрос статуса по операции (/status), содержащий полученное значение параметра refTransactionId.

Если касса не получила ответ на первый запрос возврата (/refund) и инициирует новый запрос с измененным значением параметра requestId, узел Кошелька обработает его как новый запрос на возврат, и в таком случае возможен двойной возврат средств на счёт пользователя.

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

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

  • Зелёным цветом отмечены успешные статусы.

  • Красным отмечены неуспешные статусы.

  • Жёлтым отмечены промежуточные статусы.

Last updated