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

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

Наш 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"
},
"amounts": {
"net": {
"amount": 1000,
"currency": "RUB"
},
"gross": {
"amount": 1000,
"currency": "RUB"
}
}
}],
"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"
}
}'




ИИ-помощник