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

Выплата одним запросом

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

Этот вариант подходит, если вы перечисляете деньги:

  • на банковский счет;
  • на банковскую карту с PCI DSS на вашей стороне.

Как подключить

Сообщите менеджеру Банка 131, что хотите использовать этот вариант. Тогда все ваши выплаты будут проходить этим способом.

Как отправить выплату

С помощью запроса session/init/payout.

Для выплаты на счет:

  • в параметре PaymentMethod.type передайте bank_account;
  • в объекте bank_account.ruпередайте БИК банка, номер счета, ФИО получателя и назначение выплаты.

Посмотреть параметры для выплаты на счет

Для выплаты на карту:

  • в параметреPaymentMethod.type передайте card;
  • в объекте BankCard передайте данные банковской карты получателя.

Если это карта российского банка, вам понадобится номер карты, имя получателя и сумма в копейках (если платите 100 рублей, в поле amount_details.amount нужно передать 10000).

Посмотреть параметры для выплаты на российские карты

Примеры запроса для выплаты на счёт

curl -X POST \
https://demo.bank131.ru/api/v1/session/init/payout \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: sign' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-d'{
"payment_method": {
"type": "bank_account",
"bank_account": {
"system_type": "ru",
"ru": {
"bik": "044525971",
"account": "40817810100000270411",
"full_name": "Иванов Иван Иванович",
"description": "Перевод средств по договору № 5015553111 Иванов Иван Иванович НДС не облагается"
}
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "good"
}'

Как узнать о результате

Дождитесь вебхука payment_finished или запросите статус выплаты с помощью метода session/status.

Результат выплаты приходит в поле payment.status.

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

Подробнее о статусах выплаты

Пример вебхука с результатом выплаты

curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: a4f1698616d6ad7b8b73a9d72d281eeb443b64dee3f38df430eeed6aa29e1dc' \
-d '{
"type": "payment_finished",
"session": {
"id": "3230",
"status": "accepted",
"created_at": "2018-05-27T02:03:00.000000Z",
"updated_at": "2018-05-27T02:03:00.000000Z",
"payments": [
{
"id": "2018",
"status": "succeeded",
"created_at": "2018-05-27T02:03:00.000000Z",
"customer": {
"reference": "user123",
"contacts": [
{
"email": "user@gmail.com"
}
]
},
"payment_method": {
"type": "card",
"card": {
"last4": "4242",
"brand": "visa"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "good"
}
]
}
}'

Пример обработки вебхука с помощью 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
}