Перейти к основному содержимому

Выплаты по токену

Создайте токен или хеш для банковской карты и используйте его для всех последующих выплат. В этом случае нужно выполнять требования стандарта PCI DSS в зависимости от выбранного способа защиты.

Способы создания:

Полученный токен можно использовать для выплат независимо от проекта (X-PARTNER-PROJECT), в рамках которого он был создан.

к сведению

Выплаты по токену и хешу можно делать также с расчетных и номинальных счетов.

Шаг 1. Создайте платежную сессию

Отправьте запрос на создание платежной сессии session/create. В ответе вы получите идентификатор сессии. Этот идентификатор используется во всех последующих методах.

Вы можете создать сессию и выплату одновременно (session/init/payout). В этом случае сразу передайте параметры выплаты с токеном или хешем, и пропустите следующий шаг. Не рекомендуем использовать этот способ.

Если вы делаете выплату с номинального счета, используйте метод session/init/payout/nominal, а если с расчетного счета, то метод session/init/payout/rko. В этом случае сразу передайте параметры выплаты с токеном или хешем, и пропустите следующий шаг.

Пример создания платежной сессии
curl -X POST \
https://demo.bank131.ru/api/v1/session/create \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"metadata": "good"
}'
Пример ответа
{
"status": "ok",
"session": {
"id": "ps_3230",
"status": "created",
"created_at": "2025-05-27T02:03:00.000000Z",
"updated_at": "2025-05-27T02:03:00.000000Z"
},
"metadata": "good"
}

Шаг 2. Отправьте выплату

Выполните запрос session/start/payout, передав идентификатор сессии и параметры выплаты с токеном или хешем.

к сведению

Вы можете проверить данные токена, хеша или карты с помощью метода token/info. Например, можно узнать последние 4 цифры номера карты, чтобы показать получателю, на какую именно карту придет выплата.

Пример выплаты с токенизированными данными
curl -X POST \
https://demo.bank131.ru/api/v1/session/start/payout \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_3230",
"payment_method": {
"type": "card",
"card": {
"type": "tokenized_card",
"tokenized_card": {
"token": "759c9852dde2211d7531b3d905c1d513fbfb914bee87fb567d99c7b2f2c2ad44"
}
}
},
"participant_details": {
"recipient": {
"full_name": "Иванов Иван Иванович"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "good"
}'
Пример ответа
{
"status": "ok",
"session": {
"id": "ps_3230",
"status": "in_progress",
"created_at": "2025-05-27T02:03:00.000000Z",
"updated_at": "2025-05-27T02:03:00.000000Z",
"payments": [{
"id": "po_2025",
"status": "in_progress",
"created_at": "2025-05-27T02:03:00.000000Z",
"payment_method": {
"type": "card",
"card": {
"type": "tokenized_card",
"tokenized_card": {
"token": "759c9852dde2211d7531b3d905c1d513fbfb914bee87fb567d99c7b2f2c2ad44"
}
}
},
"participant_details": {
"recipient": {
"full_name": "Иванов Иван Иванович"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "good"
}]
}
}'

Шаг 3. Дождитесь вебхука о готовности выплаты

Банк 131 отправит вам вебхук ready_to_confirm о готовности провести выплату и ожидании вашего подтверждения или отмены.

Пример вебхука о готовности выплаты
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "ready_to_confirm",
"session": {
"id": "ps_3230",
"status": "in_progress",
"created_at": "2025-05-27T02:03:00.000000Z",
"updated_at": "2025-05-27T02:03:00.000000Z",
"next_action": "confirm",
"payments": [{
"id": "po_2025",
"status": "pending",
"created_at": "2025-05-27T02:03:00.000000Z",
"payment_method": {
"type": "card",
"card": {
"type": "tokenized_card",
"tokenized_card": {
"token": "759c9852dde2211d7531b3d905c1d513fbfb914bee87fb567d99c7b2f2c2ad44"
}
}
},
"participant_details": {
"recipient": {
"full_name": "Иванов Иван Иванович"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "good"
}]
}
}'

Шаг 4. Подтвердите или отмените выплату

Проверьте данные и подтвердите (session/confirm) или отмените (session/cancel) выплату.

Пример с подтверждением выплаты
curl -X POST \
https://demo.bank131.ru/api/v1/session/confirm \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_3230"
}'
Пример с отменой выплаты
curl -X POST \
https://demo.bank131.ru/api/v1/session/cancel \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"session_id": "ps_3230"
}'

Шаг 5. Дождитесь вебхука о результате выплаты

Банк 131 отправит вам вебхук payment_finished. Информация о результате выплаты содержится в параметре status объекта payments/payout_list.

Статус succeeded означает, что выплата прошла успешно. Если статус failed — выплата не прошла из-за ошибки.

Какие бывают статусы выплаты >

Посмотреть коды ошибок >

Пример обработки вебхука с помощью SDK
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::PAYMENT_FINISHED) {
$session = $hook->getSession();
//do your logic here
}




ИИ-помощник