Skip to content

Удержание платежа

API Документация: удерживать создание, удерживать заряд и удерживать отклонение

Этот API позволяет вам временно заблокировать средства пользователя, а затем списать удержанную сумму.

  • Hold Create резервирует указанную сумму на карте пользователя на ограниченный период времени.
  • Hold Charge обрабатывает платеж, взимая полную или меньшую часть удержанной суммы.
  • Удержание средств API позволяет отменить ранее созданное удержание средств пользователя. После отмены удержания зарезервированная сумма разблокируется, и в отношении этого удержания невозможно взимать дополнительные средства.

1. Удерживайте Создать

Метод: POST
URL: BASE_URL/merchant/payment/hold/create/
Заголовок:

http
Authorization: Bearer <ACCESS_TOKEN>

Тело запроса

ПолеПример данныхТипТребуетсяОписание
amount1000intДаСумма в SUM (1000 = 1000 SUM)
userId123stringНетПользователь ID заявлен мерчантом
account{"field_name": "sample data"}dictНетОтправьте пустой dict {}, если нет дополнительных данных
cardId9f877739-bc25-4f0f-a13f-ec485fd04250stringДаКарта ID создана в системе Paylov
time10intДаВремя выдержки в минутах. Макс.: 40320 (28 дней)
externalIdexternalId1stringНетВнешний ID. Максимальная длина: 64 символа
serviceId9f877739-bc25-4f0f-a13f-ec485fd04250stringНетПредоставлено Платежной системой
json

{
  "userId": "string",
  "cardId": "string",
  "amount": 10,  # 10 = 10 Sum
  "account": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "time": 10,
  "externalId": "string", # max_chars: 64
  "serviceId": "uuid" 
}
ПолеТипТребуетсяОписание
userIdstringДаУникальный идентификатор пользователя.
cardIdstringДаУникальный идентификатор карты, используемой в удержании.
amountintegerДаСумма, которую необходимо удерживать. (сумма в сумме)
accountobjectНетСодержит дополнительные свойства учетной записи.
account.additionalProp1stringНеобязательноДанные пользовательского аккаунта.
account.additionalProp2stringНеобязательноДанные пользовательского аккаунта.
account.additionalProp2stringНеобязательноДанные пользовательского аккаунта.
timeintegerДаПродолжительность удержания в минутах. Максимально допустимое значение — 28 дней (40320 минут).

Успешный ответ

json

{
  "result": {
    "transactionId": "uuid4"
  }
}
Полеsample_dataТипОписание
transactionIduuid4stringУникальный идентификатор пользователя.

2. Удержание заряда

Метод: POST
URL: /merchant/payment/hold/charge/
Заголовок:

http
Authorization: Bearer <ACCESS_TOKEN>

Тело запроса

json

{
  "transactionId": "string",
  "amount": 10
}
ПолеТипТребуетсяОписание
transactionIdstringДаУникальный идентификатор пользователя.
amountintegerДаСумма, которую необходимо снять с удержания.

Успешный ответ

json

{
  "result": {
    "transactionId": "string",
    "cardId": "string",
    "payedAt": "YYYY-MM-DD HH:mm:ss"
  }
}
ПолеТипОписание
transactionIdstringУникальный идентификатор пользователя.
cardIdstringКарта, использованная для списания средств.
payedAtstringВременная метка обработки платежа в формате YYYY-MM-DD HH:mm:ss.

3. Удержать Отпустить

Этот API полезен, когда зарезервированные средства должны быть снова доступны пользователю. Удерживаемые деньги будут доступны пользователю банковской карты.

Метод: POST
URL /merchant/payment/hold/dismiss/
Заголовок:

http
Authorization: Bearer <ACCESS_TOKEN>

Тело запроса

json

{
  "transactionId": "string"
}
ПолеТипТребуетсяОписание
transactionIdstringДаУникальный идентификатор транзакции удержания, которую вы хотите отменить.

Успешный ответ

json

{
  "result": {
    "transactionId": "uuid",
    "status": "cancelled"
  }
}
ПолеТипОписание
transactionIdstring (UUID)Уникальный ID отмененной транзакции удержания.
statusstringСтатус транзакции.

HOLD Статус

Метод: GET
Конечная точка: BASE_URL/merchant/payment/hold/status/
queryParams: externalId или transactionId

Пример запроса GET с внешним идентификатором

Метод: GET
URL: BASE_URL/merchant/payment/hold/status/?externalId=123
Заголовок:

http
Authorization: Bearer <ACCESS_TOKEN>

Ответ

json
{
  "result": {
    "transactionId": "d1be13da-4355-4b27-956d-d83b87e013f1",
    "status": "cancelled",
    "cancelTime": "2025-02-03 11:13:42",
    "payedAt": null,
    "amount": 10,
    "serviceId": "d1be13da-4355-4b27-956d-d83b87e013f1"
  }
}

Статусы результатов

paid — успешная транзакция
cancelled - отмененная транзакция
hold — транзакция удержания, может взиматься плата, если время удержания не истекло
created

Структура ответа на ошибку

json
{
  "error": {
    "code": "hold_not_found",
    "message": "hold_not_found"
  }
}

Коды ошибок

plaintext
hold_not_found
hold_time_expired
invalid_amount
field_not_valid
gateway_not_working
field_required
transaction_not_found