Сценарий 3. Возврат оплаты
Кошелёк Pay API
Документация перемещена
Информация на этой странице не обновляется и может быть устаревшей. Наиболее полная и актуальная версия документации для разработчиков доступна по новому адресу:
Описание сценария возврата
Сценарий возврата описывает действия, которые необходимо выполнить, чтобы вернуть покупателю оплаченную сумму. Сценарий может быть выполнен только при наличии уже завершенной операции оплаты.
Приложение «Кошелёк» не участвует в процессе возврата — т.е. сканировать карту лояльности для оформления возврата не нужно.
Обработка частных случаев возврата
1. Полный возврат
Для полного возврата необходимо указать:
товары (
items
), которые были были указаны в запросе оплаты.количество товара (
quantity
), равное количеству, переданному в запросе оплаты;сумму возврата (
refundAmount
), равную итоговой сумме оплаты (totalAmount
);
2. Частичный возврат
Для частичного возврата необходимо указать:
только те товары (
items
), которые необходимо вернуть;только то количество товара (
quantity
), которое необходимо вернуть;сумму возврата (
refundAmount
) меньше итоговой суммы оплаты (totalAmount
);
3. Возврат нештучного товара
Для нештучного товара (т.е. товара, у которого единица измерения measure
отличается от PIECE
— например, весового товара) доступен только полный возврат нештучных позиций.
Альтернативные сценарии возврата и возможные ошибки
Для запуска сценария возврата на кассе необходимо инициировать отправку запроса возврата (/refund
) на узел Кошелька. Если запрос дошел до узла Кошелька, то инициируется процесс возврата. Отменить его будет невозможно.
Если касса по каким-то причинам не получила ответ от Кошелька на этот запрос, то можно отправить повторный запрос с тем же значением параметра
requestId
— это обязательно, так как если первый запрос дошел до узла Кошелька, но ответ на него был потерян, то хост Кошелька поймет, что это повторный вызов первого запроса — касса получит ответ на первый запрос (действует правило идемпотентности).Если первый запрос не дошёл до узла Кошелька, а второй дошёл, то он будет обработан, как первый.
Если касса получила ответ от узла Кошелька, то в нем будет содержаться поле
refTransactionId
. Для получения информации по статусу этой операции возврата кассе нужно использовать запрос статуса по операции (/status
), содержащий полученное значение параметраrefTransactionId
.
Если касса не получила ответ на первый запрос возврата (/refund
) и инициирует новый запрос с измененным значением параметра requestId
, узел Кошелька обработает его как новый запрос на возврат, и в таком случае возможен двойной возврат средств на счёт пользователя.
Статусы транзакции отмены / возврата
На диаграмме состояний приведены переходы между различными статусами транзакции в процессе выполнения сценариев отмены или возврата платежа через Кошелёк Pay API.
Зелёным цветом отмечены успешные статусы.
Красным отмечены неуспешные статусы.
Жёлтым отмечены промежуточные статусы.
Last updated