Платежи через виджет
Вы можете принимать оплату банковскими картами через платежный виджет Банка 131. В этом случае данные карт хранятся в Банке 131, а не на вашем сервисе.
Шаг 1. Создайте платежную сессию
Отправьте запрос на создание платежной сессии session/create. В ответе вы получите идентификатор сессии.
Пример создания платежной сессии
- cURL
- PHP
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 '{
"customer": {
"reference": "user123",
"contacts": [{
"email": "user@gmail.com"
}]
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"metadata": "order123"
}'
use Bank131\SDK\API\Request\Builder\RequestBuilderFactory;
use Bank131\SDK\Client;
use Bank131\SDK\Config;
$config = new Config(
'https://demo.bank131.ru',
'your_project_name',
file_get_contents('/path/to/your/private_key.pem')
);
$client = new Client($config);
$request = RequestBuilderFactory::create()
->createPaymentSession()
->setAmount(10000, 'rub')
->setMetadata('order123')
->build();
$response = $client->session()->create($request);
Шаг 2. Получите публичный токен
Публичный токен нужен, чтобы инициализировать виджет. Отправьте запрос Банку 131 на создание токена (token), передав в нем тип виджета acquiring_widget. В ответе вы получите публичный токен.
Чтобы проводить рекуррентные списания, добавьте в платежную форму чекбокс Соглашаюсь на автоплатежи. Для этого передайте в параметре
show_recurrent_checkboxзначениеtrue.
Пример получения публичного токена
- cURL
- PHP
curl -X POST \
https://demo.bank131.ru/api/v1/token \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"acquiring_widget": {
"session_id": "ps_123456"
}
}'
use Bank131\SDK\API\Request\Builder\RequestBuilderFactory;
use Bank131\SDK\Client;
use Bank131\SDK\Config;
$config = new Config(
'https://demo.bank131.ru',
'your_project_name',
file_get_contents('/path/to/your/private_key.pem')
);
$client = new Client($config);
$request = RequestBuilderFactory::create()
->issuePublicTokenBuilder()
->setAcquiringWidget(
'ps_123456',
'https://success.url',
'https://failed.url',
false
)
->build();
$publicTokenResponse = $client->widget()->issuePublicToken($request);
$publicToken = $publicTokenResponse->getPublicToken();
Шаг 3. Инициализируйте виджет на сайте
Инициализируйте виджет на сайте с помощью публичного токена, полученного на предыдущем шаге.
После этого покупатель сможет ввести данные своей банковской карты в форму сбора данных, а Банк 131 инициирует платеж без вашего участия.
Шаг 4. Дождитесь вебхука о готовности платежа
Банк 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_123456",
"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": "order123"
}]
}
}'
Шаг 5. Подтвердите или отмените платеж
Проверьте данные и подтвердите (session/confirm) или отмените (session/cancel) платеж.
Если вы получили вебхук
action_required, значит банк покупателя запрашивает прохождение аутентификации 3D Secure. Перенаправление происходит автоматически.
Пример с подтверждением и отменой платежа
- Подтверждение платежа
- Отмена платежа
- cURL
- PHP
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_123456"
}'
use Bank131\SDK\Client;
use Bank131\SDK\Config;
$config = new Config(
'https://demo.bank131.ru',
'your_project_name',
file_get_contents('/path/to/your/private_key.pem')
);
$client = new Client($config);
$response = $client->session()->confirm('session_id');
- cURL
- PHP
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_123456"
}'
use Bank131\SDK\Client;
use Bank131\SDK\Config;
$config = new Config(
'https://demo.bank131.ru',
'your_project_name',
file_get_contents('/path/to/your/private_key.pem')
);
$client = new Client($config);
$response = $client->session()->cancel('session_id');
Шаг 6. Дождитесь вебхука о результате платежа
Банк 131 отправит вам вебхук payment_finished. Информация о результате платежа содержится в параметре status массива acquiring_payments/payment_list.
Статус succeeded означает, что оплата прошла успешно. Если статус failed — оплата не прошла из‑за ошибки.
Схема платежа

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