Платеж одним запросом
Вы можете отправить платеж одним запросом, без промежуточных шагов (если без них можно обойтись). Результат платежа сразу вернется вам в ответ.
Этот вариант подходит, если:
- у вас есть сертификат PCI DSS,
- вы не используете виджет платежной формы.
Здесь описан платеж без холдирования. Подробнее о платежах с холдированием
Как подключить
Для таких платежей есть специальный метод session/init/payment/sync
. Сообщите менеджеру Банка 131, что хотите его использовать.
В этом случае вы не будете получать вебхуки от Банка 131.
Узнавать о статусе операций можно будет с помощью запроса
session/status
.
Как провести платеж
Отправьте запрос session/init/payment/sync
.
Данный метод не рекомендуется к использованию, кроме тех случаев, когда он уже был реализован вами ранее.
В поле payment_method.type
передайте значение card
.
В объекте bank_card
передайте данные банковской карты пользователя.
В поле payment_options.return_url
обязательно передайте адрес, на который нужно
вернуть пользователя, когда платеж пройдет.
Результат платежа вернется в ответ на запрос в поле payment.status
:
succeeded
— оплата прошла успешно;failed
— оплата не прошла из-за ошибки;pending
— пользователю нужно пройти аутентификацию по 3D Secure.
Пример запроса на оплату
- cURL
curl --location --request POST 'https://proxy.bank131.ru/api/v1/session/init/payment/sync' \
--header 'Content-Type: application/json' \
--header 'X-PARTNER-SIGN: signature' \
--header 'X-PARTNER-PROJECT: your_project_name' \
--data-raw '{
"payment_details": {
"type": "card",
"card": {
"type": "bank_card",
"bank_card": {
"number": "4242424242424242",
"expiration_month": "01",
"expiration_year": "22",
"security_code": "123"
}
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"return_url": "https://131.ru"
}
}'
Когда не приходит результат
Иногда в ответ на запрос не приходит окончательный статус платежа. Например, если платеж проходит слишком долго или карта пользователя требует 3D Secure.
Слишком долгий платеж
Если платеж проходит не сразу (дольше 40 секунд), в ответ вернется промежуточный статус платежа — in_progress
.
Чтобы узнать окончательный статус платежа, отправьте запрос session/status
.
Карта с 3D Secure
Если карта пользователя требует 3D Secure, в ответ на запрос придут
данные для редиректа.
Перенаправьте пользователя на адрес customer_interaction.redirect.url
.
После этого отправьте запрос session/status
,
чтобы узнать окончательный статус платежа.