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

Рекуррентные платежи через СБП

Наш API позволяет:

Как получить токен для рекуррентных платежей со списанием средств​

  1. Создайте платежную сессию session/create.
  2. Отправьте запрос на проведение платежа с помощью метода session/start/payment. В параметре payment_options.recurrent передайте значение true.
  3. Дождитесь вебхука ready_to_confirm для подтверждения проведения оплаты. Если всё в порядке, отправьте в ответ запрос session/confirm для подтверждения транзакции или session/cancel для отмены транзакции.
  4. Дождитесь вебхука action_required. В параметре customer_interaction.inform.qr.content передается диплинк на оплату, который либо можно показать плательщику в виде QR-кода, либо отправить по нему плательщика в приложение эмитента.
  5. Дождитесь от Банка 131 вебхука payment_finished с результатом проведения платежа. В случае успеха оплаты в вебхуке будут переданы значения status=accepted (объект session) и status=succeeded (массив payments/payout_list), а в параметре recurrent.token будет передан токен для последующих оплат. В случае какой-либо неудачи в вебхуке будут переданы значения status=cancelled (объект session) и status=failed (массив payments/payout_list), а токен для рекуррентных платежей будет отсутствовать.
Пример вебхука payment_finished
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"type": "payment_finished",
"session": {
"id": "ps_713610",
"status": "accepted",
"created_at": "2024-08-08T08:06:51.841432Z",
"updated_at": "2024-08-08T08:14:56.168219Z",
"acquiring_payments": [{
"id": "pm_308906",
"status": "succeeded",
"created_at": "2024-08-08T08:06:51.931193Z",
"finished_at": "2024-08-08T08:14:55.996273Z",
"customer": {
"reference": "user123",
"contacts": [{
"phone": "7123*****45"
}]
},
"payment_details": {
"type": "faster_payment_system"
},
"recurrent": {
"token": "6a6a29c4193a8e1049231e1497a3c5f180e120b20db81b39f53ec478029b53cf",
"created_at": "2024-08-08T10:10:27+03:00",
"finished_at": "2034-08-08T10:10:27+03:00",
"is_active": true,
"type": "recurrent_token"
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"payment_options": {
"recurrent": true
}
}],
"actions": {
"confirm": "2024-08-08T08:06:52.184593Z",
"capture": "2024-08-08T08:14:55.699095Z"
}
}
}'

Схема привязки счета к СБП

Как получить токен для рекуррентных платежей без списания средств​

Чтобы получить токен для рекуррентных платежей без списания средств, необходимо пройти все стандартные шаги по проведению платежа через СБП.

При создании запроса session/start/payment или session/init/payment укажите "type": "faster_payment_system_binding" и "recurrent": true.

В объекте amount_details укажите 1 рубль (сумма не будет списана).

В вебхуке payment_finished вернется токен для совершения рекуррентных платежей.

Пример запроса
curl -X POST \
https://demo.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "faster_payment_system_binding"
},
"amount_details": {
"amount": 100,
"currency": "rub"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"recurrent": true
}
}'

Получив токен, принимайте рекуррентные платежи стандартным образом.

Пример запроса
curl -X POST \
https://demo.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "recurrent",
"recurrent": {
"token": "e9876f32bcd947f79c324cf2da5726304a894f6ae2037de7705fdb3e0a134d39"
}
},
"amount_details": {
"amount": 10000,
"currency": "rub"
},
"customer": {
"reference": "lucky"
}
}'

Как создать несколько привязок СБП для одного плательщика и банка​

При каждом повторном создании привязки СБП для одного плательщика и одного банка-эмитента на стороне банка может отображаться сообщение: «Вы уже привязали счет». Это вводит плательщика в заблуждение: он не может однозначно понять, была ли создана новая привязка на самом деле.

Чтобы обеспечить корректное создание неограниченного количества уникальных привязок и избежать описанной выше неоднозначности, необходимо передавать в запросе дополнительный объект subscription_service_info, содержащий идентификатор и название привязки.

Чтобы включить данную функциональность, обратитесь к вашему менеджеру в Банке 131.

Пример запроса
curl -X POST \
https://demo.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "faster_payment_system",
"faster_payment_system": {
"subscription_service_info": {
"id": "54f731a9f86b46188b7961cb933fb3ff", // идентификатор привязки
"name": "subscription2" // название привязки
}
}
},
"amount_details": {
"amount": 1000,
"currency": "rub"
},
"customer": {
"reference": "lucky"
},
"payment_options": {
"recurrent": true
}
}'