Рекуррентные платежи через СБП
Вы можете совершать оплату через СБП с одновременной привязкой счета плательщика и получением рекуррентного токена для последующих оплат.
Как сделать платеж
- Создайте платежную сессию
session/create
. - Отправьте запрос на проведение платежа с помощью метода
session/start/payment
. В параметреpayment_options.recurrent
передайте значениеtrue
. - Дождитесь вебхука
ready_to_confirm
для подтверждения проведения оплаты. Если всё в порядке, отправьте в ответ запросsession/confirm
для подтверждения транзакции илиsession/cancel
для отмены транзакции. - Дождитесь вебхука
action_required
. В параметреcustomer_interaction.inform.qr.content
передается диплинк на оплату, который либо можно показать плательщику в виде QR-кода, либо отправить по нему плательщика в приложение эмитента. - Дождитесь от Банка 131 вебхука
payment_finished
с результатом проведения платежа. В случае успеха оплаты в вебхуке будут переданы значенияsession.status=accepted
иpayments.status=succeeded
, а в параметреrecurrent.token
будет передан токен для последующих оплат. В случае какой-либо неудачи в вебхуке будут переданы значенияsession.status=cancelled
иpayments.status=failed
, а рекуррентный токен будет отсутствовать.
Пример вебхука payment_finished
- Успешная транзакция
- Неуспешная транзакция
{
"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"
}
}
}
{
"type": "payment_finished",
"session": {
"id": "ps_713610",
"status": "cancelled",
"created_at": "2022-03-01T11:57:31.652396Z",
"updated_at": "2022-03-01T11:57:31.861329Z",
"acquiring_payments": [
{
"id": "pm_308906",
"status": "failed",
"created_at": "2022-03-01T11:57:31.895773Z",
"finished_at": "2022-03-01T11:57:31.895773Z",
"customer": {
"reference": "user123"
},
"payment_details": {
"type": "faster_payment_system"
},
"amount_details": {
"amount": 229600,
"currency": "RUB"
},
"amounts": {
"fee": {
"merchant_fee": {
"amount": 1607,
"currency": "RUB"
}
}
},
"metadata": {
"parent_session_id": "ps_1667788995"
},
"error": {
"description": "QR expired",
"code": "qr_expired"
},
"payment_options": {
"return_url": "https://131.ru",
"recurrent": false
}
}
],
"error": {
"description": "Session cancelled",
"code": "session_cancelled"
},
"actions": {
"confirm": "2022-03-01T11:57:31.895773Z"
}
}
}