Перейти до вмісту

Підписки

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

Для роботи з підписками потрібна:

  1. Авторизація платформи — Basic Auth (для всіх методів)
  2. Авторизація користувача — заголовок X-CUSTOMER-AUTH з access-токеном (для методів роботи з підписками користувача)
Terminal window
curl -X POST https://api.rozetkapay.com/api/subscriptions/v1/plans \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"name": "Преміум підписка",
"description": "Доступ до всіх функцій",
"price": 9900,
"currency": "UAH",
"platforms": ["platform_id"],
"frequency_type": "monthly",
"frequency": 1,
"start_date": "2024-01-01T00:00:00Z"
}'
ПараметрОбов’язковийОпис
nameТакНазва плану
descriptionТакОпис плану
priceТакЦіна в копійках (9900 = 99 грн)
currencyТакВалюта (UAH)
platformsТакПлатформи, що використовують план
frequency_typeТакТип періоду: daily, weekly, monthly, yearly
frequencyТакКількість періодів
start_dateТакДата активації плану (RFC3339)
end_dateНіДата завершення плану
frequency_typefrequencyРезультат
daily2Кожні 2 дні
weekly1Щотижня
monthly1Щомісяця
monthly6Кожні 6 місяців
yearly1Щороку
{
"plan_id": "0fb23882-2845-49e7-9309-68aeee5d0d8f"
}
Terminal window
curl -X GET "https://api.rozetkapay.com/api/subscriptions/v1/plans/{plan_id}" \
-u "login:password"
Terminal window
curl -X GET "https://api.rozetkapay.com/api/subscriptions/v1/plans?platform=platform_id" \
-u "login:password"

Можна оновити тільки name та description:

Terminal window
curl -X PATCH "https://api.rozetkapay.com/api/subscriptions/v1/plans/{plan_id}" \
-u "login:password" \
-H "Content-Type: application/json" \
-d '{
"name": "Новий преміум",
"description": "Оновлений опис"
}'
Terminal window
curl -X DELETE "https://api.rozetkapay.com/api/subscriptions/v1/plans/{plan_id}" \
-u "login:password"
Terminal window
curl -X POST https://api.rozetkapay.com/api/subscriptions/v1/subscriptions \
-u "login:password" \
-H "X-CUSTOMER-AUTH: user_access_token" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "0fb23882-2845-49e7-9309-68aeee5d0d8f",
"auto_renew": true,
"callback_url": "https://your-site.com/subscription-callback",
"result_url": "https://your-site.com/subscription-success",
"description": "Підписка для user@example.com",
"start_date": "2024-01-15T10:00:00Z",
"customer": {
"email": "user@example.com",
"external_id": "user_123",
"payment_method": {
"type": "cc_token",
"cc_token": {
"token": "tok_card_token",
"use_3ds_flow": true
}
}
}
}'
ПараметрОбов’язковийОпис
plan_idТакID плану
auto_renewНіАвтопродовження (true за замовч.)
callback_urlТакURL для callbacks
result_urlТакURL після успішної оплати
descriptionТакОпис підписки
start_dateТакДата активації (RFC3339, UTC)
customerТакДані користувача
customer.payment_methodТакПлатіжний метод
priceНіЦіна (якщо не вказано — з плану)
trial_periodsНіКількість тріальних періодів

Платіжні методи для підписок

Section titled “Платіжні методи для підписок”
  • cc_token — токен картки
  • wallet — картка з гаманця
  • google_pay — Google Pay
  • apple_pay — Apple Pay
{
"payment": {
"id": "payment_123",
"subscription_id": "sub_abc123",
"details": {
"amount": 9900,
"currency": "UAH",
"status": "success",
"status_code": "subscription_successful"
},
"user_action": {
"type": "url",
"value": "https://pay.rozetkapay.com/3ds/..."
}
},
"subscription": {
"id": "sub_abc123",
"plan_id": "0fb23882-2845-49e7-9309-68aeee5d0d8f",
"state": "active",
"auto_renew": true,
"price": 9900,
"currency": "UAH",
"start_date": "2024-01-15T10:00:00Z",
"next_payment_date": "2024-02-15T10:00:00Z"
}
}

Для створення тріальної підписки вкажіть:

Terminal window
curl -X POST https://api.rozetkapay.com/api/subscriptions/v1/subscriptions \
-u "login:password" \
-H "X-CUSTOMER-AUTH: user_access_token" \
-H "Content-Type: application/json" \
-d '{
"plan_id": "0fb23882-2845-49e7-9309-68aeee5d0d8f",
"price": 100,
"trial_periods": 3,
"use_plan_price_on_auto_renew": true,
"auto_renew": true,
"callback_url": "https://your-site.com/callback",
"result_url": "https://your-site.com/result",
"start_date": "2024-01-15T10:00:00Z",
"customer": {
"payment_method": {
"type": "cc_token",
"cc_token": {
"token": "tok_card_token",
"use_3ds_flow": true
}
}
}
}'
ПараметрОпис
priceЦіна за тріальний період (напр. 1 грн)
trial_periodsКількість тріальних періодів
use_plan_price_on_auto_renewПісля тріалу використовувати ціну плану
Terminal window
curl -X GET "https://api.rozetkapay.com/api/subscriptions/v1/subscriptions/{subscription_id}" \
-u "login:password" \
-H "X-CUSTOMER-AUTH: user_access_token"

Отримання всіх підписок користувача

Section titled “Отримання всіх підписок користувача”
Terminal window
curl -X GET "https://api.rozetkapay.com/api/subscriptions/v1/subscriptions" \
-u "login:password" \
-H "X-CUSTOMER-AUTH: user_access_token"

Оновлення auto_renew:

Terminal window
curl -X PATCH "https://api.rozetkapay.com/api/subscriptions/v1/subscriptions/{subscription_id}" \
-u "login:password" \
-H "X-CUSTOMER-AUTH: user_access_token" \
-H "Content-Type: application/json" \
-d '{
"auto_renew": false
}'

Підписка залишається активною до next_payment_date:

Terminal window
curl -X DELETE "https://api.rozetkapay.com/api/subscriptions/v1/subscriptions/{subscription_id}/deactivate" \
-u "login:password" \
-H "X-CUSTOMER-AUTH: user_access_token"

Підписка одразу стає неактивною:

Terminal window
curl -X DELETE "https://api.rozetkapay.com/api/subscriptions/v1/subscriptions/{subscription_id}/cancel" \
-u "login:password" \
-H "X-CUSTOMER-AUTH: user_access_token"

Отримання платежів по підписці

Section titled “Отримання платежів по підписці”
Terminal window
curl -X GET "https://api.rozetkapay.com/api/subscriptions/v1/subscriptions/{subscription_id}/payments" \
-u "login:password" \
-H "X-CUSTOMER-AUTH: user_access_token"
СтатусОпис
activeПідписка активна
inactiveПідписка неактивна
pendingОчікує обробки

Діаграма життєвого циклу

Section titled “Діаграма життєвого циклу”
┌─────────────────┐
│ Створення │
│ підписки │
└────────┬────────┘
┌─────────────────┐ ┌─────────────────┐
│ Оплата │────▶│ Active │
│ (успішна) │ │ │
└─────────────────┘ └────────┬────────┘
┌───────────────────────┼───────────────────────┐
│ │ │
│ │ next_payment_date │
│ │ │
│ auto_renew ▼ auto_renew │
│ = true ┌─────────┐ = false │
│ ┌────────│ Оплата │────────┐ │
│ │ └─────────┘ │ │
│ ▼ ▼ │
│ ┌─────────┐ ┌─────────┐ │
│ │ Active │ │Inactive │ │
│ │(renewed)│ │ │ │
│ └─────────┘ └─────────┘ │
│ │
│ Deactivate Cancel │
▼ ▼ │
┌─────────────────┐ ┌─────────────────┐ │
│ Деактивація │ │ Скасування │ │
│ (до next_date) │ │ (одразу) │ │
└────────┬────────┘ └────────┬────────┘ │
│ │ │
▼ ▼ │
┌─────────────────────────────────────────────────────────┘
│ Inactive
└─────────────────────────────────────────────────────────

При зміні статусу підписки або платежу надсилається callback:

{
"subscription_id": "sub_abc123",
"event": "payment_success",
"payment": {
"id": "payment_456",
"amount": 9900,
"currency": "UAH",
"status": "success"
},
"subscription": {
"state": "active",
"next_payment_date": "2024-03-15T10:00:00Z"
}
}