Платежи с холдированием
Вы можете проводить платежи с холдированием: сначала замораживать сумму платежа на карте покупателя, а потом списывать отдельным запросом. Между заморозкой и списанием есть время, например, чтобы отправить заказ покупателю.
Как это работает
На самом деле все платежи банковскими картами проходят в две стадии. Сначала авторизация — банк проверяет, что нужная сумма есть на карте, и блокирует ее. Затем клиринг — банк списывает деньги.
При обычном платеже картой между авторизацией и клирингом практически нет паузы.
При платеже с холдированием вы решаете, когда провести клиринг. Банк списывает деньги не сразу, а по вашей команде. Можно списать полную сумму или меньше.
При проведении платежей MIT через кошельки ЮMoney возможно только полное списание захолдированной суммы.
Как включить холдирование
Холдирование включается на стороне Банка 131. Все ваши платежи могут проходить или с холдированием, или без него (тогда сумма платежа будет списываться автоматически, сразу после авторизации).
Если хотите проводить платежи с холдированием, напишите вашему менеджеру в Банке 131.
Срок холдирования
Деньги замораживаются на карте до 7 дней. Если до конца этого срока вы не спишете их и не разблокируете, деньги разблокируются автоматически.
Если вам нужно, чтобы деньги после окончания срока холдирования списывались, а не разблокировались, напишите менеджеру в Банке 131.
Сценарий платежа c холдированием
- Параметры карты передаются в открытом виде
- С виджетом платежной формы
Чтобы провести платеж с холдированием, выполните следующие шаги:
-
Создайте платежную сессию отдельно от платежа (
session/create) или одновременно с ним (session/init/payment). -
Если вы создавали сессию отдельно от старта платежа, отправьте запрос
session/start/payment. -
Дождитесь от Банка 131 вебхука
ready_to_confirm— это значит, что Банк готов провести платеж и ждет вашего подтверждения. -
Подтвердите проведение платежа (
session/confirm) или отмените его (session/cancel). -
Если вы получите от Банка 131 вебхук
action_required, это значит, что для проведения платежа нужны дополнительные действия. Например, пользователю нужно пройти 3D Secure. Перенаправьте пользователя на адрес для 3D Secure. -
Дождитесь от Банка 131 вебхука
ready_to_capture. Это значит, что деньги для оплаты успешно заморожены на банковской карте пользователя. Их можно списать — сразу или через некоторое время. Списать можно полную сумму или меньше — передайте нужную сумму вamount_details.Пример вебхука
- cURL
- PHP
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "ready_to_capture",
"session": {
"id": "ps_3230",
"status": "in_progress",
"created_at": "2018-05-27T02:03:00.000000Z",
"updated_at": "2018-05-27T02:03:00.000000Z",
"acquiring_payments": [{
"id": "pm_2018",
"status": "pending",
"created_at": "2018-05-27T02:03:00.000000Z",
"customer": {
"reference": "user123",
"contacts": [{
"email": "user@gmail.com"
}]
},
"payment_details": {
"type": "card",
"card": {
"last4": "4242",
"brand": "visa"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "good"
}]
}
}'use Bank131\SDK\Client;
use Bank131\SDK\Config;
use Bank131\SDK\Services\WebHook\Hook\WebHookTypeEnum;
$config = new Config(
'https://demo.bank131.ru',
'your_project_name',
file_get_contents('/path/to/your/private_key.pem'),
file_get_contents('/path/to/bank131/public_key.pem')
);
$client = new Client($config);
$hook = $client->handleWebHook('sign from headers', 'request body');
if ($hook->getType() === WebHookTypeEnum::READY_TO_CAPTURE) {
$session = $hook->getSession();
//do your logic here
} -
Спишите захолдированную или меньшую сумму (
session/capture), либо отмените оплату (session/cancel). -
Дождитесь от Банка 131 вебхука
payment_finishedс результатом проведения платежа. Статусsucceededсообщает вам, что платеж успешно проведен.
Схема платежа с холдированием

Чтобы провести платеж с холдированием с использованием виджета платежной формы, выполните следующие шаги:
-
Выполните шаги 1—5.
Если вы получите вебхук
action_required, отправьте в ответ код HTTP 200 OK — пользователь будет перенаправлен для прохождения 3D Secure в виджете. -
Дождитесь от Банка 131 вебхука
ready_to_capture. Это значит, что деньги для оплаты успешно заморожены на банковской карте пользователя. Их можно списать — сразу или через некоторое время. Списать можно полную сумму или меньше — передайте нужную сумму вamount_details.Пример вебхука
- cURL
- PHP
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "ready_to_capture",
"session": {
"id": "ps_3230",
"status": "in_progress",
"created_at": "2018-05-27T02:03:00.000000Z",
"updated_at": "2018-05-27T02:03:00.000000Z",
"acquiring_payments": [{
"id": "pm_2018",
"status": "pending",
"created_at": "2018-05-27T02:03:00.000000Z",
"customer": {
"reference": "user123",
"contacts": [{
"email": "user@gmail.com"
}]
},
"payment_details": {
"type": "card",
"card": {
"last4": "4242",
"brand": "visa"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "good"
}]
}
}'use Bank131\SDK\Client;
use Bank131\SDK\Config;
use Bank131\SDK\Services\WebHook\Hook\WebHookTypeEnum;
$config = new Config(
'https://demo.bank131.ru',
'your_project_name',
file_get_contents('/path/to/your/private_key.pem'),
file_get_contents('/path/to/bank131/public_key.pem')
);
$client = new Client($config);
$hook = $client->handleWebHook('sign from headers', 'request body');
if ($hook->getType() === WebHookTypeEnum::READY_TO_CAPTURE) {
$session = $hook->getSession();
//do your logic here
} -
Спишите захолдированную или меньшую сумму (
session/capture), либо отмените оплату (session/cancel). -
Дождитесь от Банка 131 вебхука
payment_finishedс результатом проведения платежа. Статусsucceededсообщает вам, что платеж успешно проведен.
Схема платежа с холдированием
