api/wallet/reverse - Отмена или возврат средств
- HTTP‑метод:
POST - URL:
/api/wallet/reverse - Форма взаимодействия: Сервер-сервер
- Формат тела запроса:
application/json - Назначение: выполнение отмены или возврата средств по операциям пополнения Кошелька и покупки с его помощью.
Важно: Идентификатор кошелька необходимо указывать только для отмены операций, созданных в рамках
payer.wallet_public_id.
URL
1 | |
1 | |
Структура запроса
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
terminal |
str |
✔ | Уникальный идентификатор учетной записи ТСП в ПЦ. |
order_id |
int |
✔ | Уникальный идентификатор платежа (Заказа) в ПЦ. |
signature |
str |
✔ | Цифровая подпись запроса. Алгоритм расчёта — см. Формирование подписи. |
| Необязательные параметры | |||
payer |
object |
Данные Кошелька. Значимое поле (см. структуру payer/receiver): wallet_public_id. Применяется только для сделок, которые были выполнены с указанием этого параметра. Для возвратов операций relocate-funds укажите в этом поле уникальный идентификатор Кошелька получателя средств из оригинальной (отменяемой) операции. |
|
amount |
int |
Общая сумма Возврата/Отмены в минимальных единицах валюты. Для рублей — копейки. Если не указана — считается, что запрос сделан на полную остаточную сумму заказа. Сумма не может быть больше суммы отменяемого Заказа. | |
currency |
int |
Код валюты по ISO4217 (643 для RUB; 978 для EUR; 840 для USD). Если не указан — берется из Заказа. | |
unique_key |
str |
Ключ уникальности запроса. Генерируется на стороне ТСП. При получении ключа ПЦ выполняет проверку на наличие дубликата среди обрабатываемых запросов и созданных операций. Формат: допустимы цифры [0-9], латинские буквы [a-zA-Z], дефис и нижнее подчёркивание [-_]. |
|
Структура ответа
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
order_id |
int |
✔ | Идентификатор заказа в ПЦ. Пример: 1009982 |
order_status |
str |
✔ | Статус заказа. Пример: REGISTERED |
client_id |
str |
Идентификатор пользователя ТСП. Пример: test |
|
tx_id |
int |
✔ | Идентификатор операции в ПЦ. Пример: 5587788 |
tx_completed_at |
datetime |
✔ | Дата и время совершения операции в ПЦ. Пример: 2024.01.28 00:23:19 |
tx_type |
str |
✔ | Тип операции. Пример: P2PTRANSFER |
tx_status |
str |
✔ | Статус операции. Пример: APPROVED |
tx_reason_code |
int |
✔ | Код ответа на операцию ПЦ. Пример: 1 |
message |
str |
Краткое описание кода ответа на операцию ПЦ. Пример: Successful financial transaction |
|
payer_pm_number |
str |
Маскированный номер карты Плательщика. Пример: 480938******7309 |
|
amount |
int |
✔ | Сумма операции в минимальных единицах валюты. Пример: 100 |
currency |
int |
Код валюты по ISO4217. Пример: 643 |
|
tx_approval_code |
str |
✔ | Код авторизации, полученный в Банке на данную операцию. Пример: 122004 |
unique_key |
str |
Ключ уникальности запроса. Пример: unique_key |
|
terminal_id |
str |
✔ | Уникальный идентификатор учётной записи ТСП в ПЦ. Пример: 893 |
bin_issuer |
str |
Идентификационный номер банка-Эмитента. Пример: JOINT STOCK COMMERCIAL BANK MOSCOW INDUSTRIAL BANK |
|
expdate |
str |
Дата истечения срока действия карты. Пример: 10/2024 |
|
iso |
int |
Код валюты по ISO4217. Пример: 643 |
|
bank_terminal_id |
str |
✔ | Идентификатор банковского терминала. Пример: POS_1 |
signature |
str |
Цифровая подпись сообщения. |
Пример ответов
{
"order_id": 1009982,
"order_status": "REGISTERED",
"client_id": "test",
"tx_id": 5587788,
"tx_completed_at": "2024.01.28 00:23:19",
"tx_type": "P2PTRANSFER",
"tx_status": "APPROVED",
"tx_reason_code": 1,
"message": "Successful financial transaction",
"payer_pm_number": "480938******7309",
"amount": 100,
"currency": 643,
"tx_approval_code": "122004",
"unique_key": "unique_key",
"terminal_id": "893",
"bin_issuer": "JOINT STOCK COMMERCIAL BANK MOSCOW INDUSTRIAL BANK",
"expdate": "10/2024",
"iso": 643,
"bank_terminal_id": "POS_1",
"signature": "8f2a1c9e3b7d4056a1f8c2e9d3b6a70158fce29b4d7a1e6c0938fa2d17bc45e9"
}
{
"error_code": "TERMINAL_NOT_FOUND",
"technical_message": "Terminal not found",
"timestamp": 1751976000,
"details": null,
"request_id": "b3b3c1f0-4b3a-4f3a-9b1a-1234567890ab"
}
{
"duplicated_operation": {
"unique_key": "test2",
"tx_id": 449800,
"tx_type": "REVERSE",
"tx_status": "APPROVED",
"order_id": 480413,
"client_id": "721716fc-6837-4dbc-8308-37de445c30f0"
},
"code": "DUPLICATE_UNIQUE_KEY",
"description": "Another request with unique key is in progress",
"signature": "1a4f9c02e7b3d685f0a219c4e7b03d58f61ca2e9b7d0143f5a8c62e9d0b7415"
}
Примечания
- При получении запроса ПЦ проверяет:
- Если в запросе передан параметр
unique_key, то ПЦ проверяет запрос на наличие дубля; - Правильность расчета подписи и корректность параметров запроса;
-
Статус Заказа должен быть
AUTHORIZEDилиCOMPLETED. -
Дальнейшие проверки и обработка запроса зависят от того, какая операция подлежит отмене/возврату:
- Если отмена/возврат выполняется для pay-in-debit: отмена возможна только на полную сумму заказа. При указании
payer.wallet_public_idсумма баланса Кошелька не изменяется; - Если отмена/возврат выполняется для complete или одной из операций пополнения (pay-in-*): если в запросе указан
payer.wallet_public_id, такой же идентификатор Кошелька должен быть задан у отменяемой операции. Сумма возврата не должна превышать сумму баланса Кошелька. При успешной операции баланс Кошелька уменьшится на величинуamount; -
Если отмена/возврат выполняется для purchase: если в запросе указан
payer.wallet_public_id, такой же идентификатор Кошелька должен быть задан у отменяемой операции. При успешной операции баланс Кошелька увеличится на величинуamount. -
По окончании работы сервиса в случае успешной операции если сумма списания равна остаточной сумме заказа, то статус заказа меняется на
CANCELED.