RozetkaPay

Рекурентні платежі

Повторювані платежі через recurrent_id без повноцінних планів підписок

Рекурентні платежі дозволяють списувати кошти з картки клієнта без його повторної участі. На відміну від Підписок, цей сценарій не використовує плани та авторизацію користувача — достатньо зберегти recurrent_id після першого платежу і викликати endpoint повторного списання.

Коли використовувати

СценарійІнструмент
Прості повторні списання за однакову послугу без планівРекурентні платежі (цей гайд)
Плани, трейли, авторизація користувача, next_payment_dateПідписки

Крок 1. Ініціювання рекурентного платежу

На першому платежі передайте init_recurrent_payment: true:

curl -X POST https://api.rozetkapay.com/api/payments/v1/new \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"amount": 199,
"currency": "UAH",
"external_id": "order_init_1",
"mode": "direct",
"init_recurrent_payment": true,
"callback_url": "https://your-site.com/callback",
"customer": {
"external_id": "user_123",
"email": "user@example.com",
"payment_method": {
"type": "cc_token",
"cc_token": { "token": "tok_abc", "use_3ds_flow": true }
}
}
}'

У відповіді (та в callback після завершення 3DS) буде поле details.recurrent_id:

{
"is_success": true,
"details": {
"status": "success",
"amount": "199",
"currency": "UAH",
"recurrent_id": "rec_d9adbef7-b4b9-465d-bbd9-a565902e0b2d"
}
}

Збережіть recurrent_id на вашому боці — він буде єдиним у рамках підписки платника.

Крок 2. Повторне списання

Для кожного наступного списання викликайте окремий endpoint:

curl -X POST https://api.rozetkapay.com/api/payments/v1/recurrent \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"recurrent_id": "rec_d9adbef7-b4b9-465d-bbd9-a565902e0b2d",
"external_id": "order_monthly_042",
"amount": 199,
"callback_url": "https://your-site.com/callback"
}'

Параметри

ПараметрОбов’язковийТипОпис
recurrent_idТакstringID рекурент-прив’язки, отриманий на першому платежі
external_idТакstringУнікальний номер цього замовлення
amountТакnumberСума списання
callback_urlНіstringURL для callback
confirmНіbooleanЗа замовчуванням true — списати одразу. false — заблокувати, потім викликати POST /api/payments/v1/confirm
payloadНіstringДодаткові дані

Весь перелік полів — у API Reference →

Відповідь

Структура така сама, як у звичайному платежі. Див. Платіжні сценарії.

Двостадійні рекурентні списання

Якщо потрібно спочатку заблокувати суму, передайте confirm: false у запиті рекурентного списання та викличте POST /api/payments/v1/confirm так само, як у двостадійній оплаті.

Повернення та відміна

Повернення та скасування виконуються звичайними методами за external_id конкретного списання — див. Повернення коштів.

Callbacks

Кожне рекурентне списання генерує callback з тим самим форматом та підписом, що і звичайні платежі — див. Callbacks / Webhooks.