Платеж одним запросом
Вы можете отправить платеж одним запросом, без промежуточных шагов (если без них можно обойтись). Результат платежа сразу вернется вам в ответ.
Этот вариант подходит, если:
- у вас есть сертификат PCI DSS;
- вы не используете виджет платежной формы.
Здесь описан платеж без холдирования. Подробнее о платежах с холдированием
Как подключить
Для таких платежей есть специальный метод session/init/payment/sync
. Сообщите менеджеру Банка 131, что хотите его использовать.
В этом случае вы не будете получать вебхуки от Банка 131.
Узнавать о статусе операций можно будет с помощью запроса
session/status
.
Как провести платеж
Отправьте запрос session/init/payment/sync
.
В поле payment_method.type
передайте значение card
.
В объекте BankCard
передайте данные банковской карты пользователя.
В поле payment_options.return_url
обязательно передайте адрес, на который нужно
вернуть пользователя, когда платеж пройдет.
Результат платежа вернется в ответ на запрос в поле payment.status
:
succeeded
— оплата прошла успешно;failed
— оплата не прошла из-за ошибки;pending
— пользователю нужно пройти аутентификацию по 3-D Secure.
Пример запроса на оплату
curl --location --request POST 'https://proxy.bank131.ru/api/v1/session/init/payment/sync' \
--header 'Content-Type: application/json' \
--header 'X-PARTNER-SIGN: sign' \
--header 'X-PARTNER-PROJECT: project' \
--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"
}
}'
Когда не приходит результат
Иногда в ответ на запрос не приходит окончательный статус платежа. Например, если платеж проходит слишком долго или карта пользователя требует 3-D Secure.
Слишком долгий платеж
Если платеж проходит не сразу (дольше 40 секунд), в ответ вернется промежуточный статус платежа — in_progress
.
Чтобы узнать окончательный статус платежа, отправьте запрос session/status
.
Карта с 3-D Secure
Если карта пользователя требует 3-D Secure, в ответ на запрос придут
данные для редиректа.
Перенаправьте пользователя на адрес customer_interaction.redirect.url
.
После этого отправьте запрос session/status
,
чтобы узнать окончательный статус платежа.