Автосписания
Автосписание — платёж без участия покупателя: абонемент, подписка, регулярная оплата услуги. Покупатель один раз платит по СБП и в приложении банка соглашается привязать счёт; дальше вы списываете деньги запросом с сервера.
Как включить. В кабинете: Интеграция → Платёжная страница → «Разрешить автосписания по СБП». Тестовый и боевой магазины включаются отдельно. Пока галочка снята, запросы с save_payment_method и payment_method_id отвечают 403 recurring_disabled.
Ограничения. Способ оплаты сохраняется только при оплате по СБП. Автосписания с карты пока не поддерживаются.
Шаг 1. Первый платёж с сохранением способа
Создайте платёж с save_payment_method: true и идентификатором покупателя в customer.id. Покупатель попадает на страницу с QR СБП (карта для такого платежа не предлагается), платит и подтверждает привязку счёта в приложении банка.
curl -X POST https://platezhka.online/api/v1/payments \\
-H "Authorization: Bearer sk_test_XXXX" -H "Idempotency-Key: sub-305-first" -H "Content-Type: application/json" \\
-d '{"amount": 250000, "order_id": "sub-305-2026-10", "description": "Абонемент, октябрь",
"save_payment_method": true, "customer": {"id": "client-305", "email": "player@example.com"},
"return_url": "https://club.example/subscriptions/305"}'
После оплаты приходят два события: payment_method.saved с объектом способа оплаты и payment.succeeded, где способ указан в поле payment_method. Сохраните payment_method.id у себя рядом с покупателем.
{
"id": "pm_5cDeFgHiJkLmNoPqRsTuVw",
"object": "payment_method",
"type": "sbp",
"status": "active",
"title": "СБП",
"test": true,
"customer_id": "client-305",
"first_payment_id": "pay_3kZ1x9QmT0aBcDeFgHiJkL",
"created_at": "2026-10-05T12:05:00+03:00"
}
Покупатель может оплатить, но отказаться от привязки. Тогда платёж будет успешным, а события payment_method.saved и поля payment_method не будет: предложите привязать счёт при следующей оплате. Событие payment_method.saved может прийти на несколько минут позже payment.succeeded.
Шаг 2. Списание без участия покупателя
Создайте платёж с payment_method_id. Страница оплаты не нужна: ответ уже содержит результат.
curl -X POST https://platezhka.online/api/v1/payments \\
-H "Authorization: Bearer sk_test_XXXX" -H "Idempotency-Key: sub-305-2026-11" -H "Content-Type: application/json" \\
-d '{"amount": 250000, "order_id": "sub-305-2026-11", "description": "Абонемент, ноябрь",
"payment_method_id": "pm_5cDeFgHiJkLmNoPqRsTuVw"}'
| status в ответе | Что это значит |
|---|---|
| succeeded | Деньги списаны. Придёт payment.succeeded и чек. |
| canceled | Списание не прошло: cancel_reason = charge_failed, причина в decline.message. Повторять тот же платёж нельзя — создайте новый или попросите покупателя оплатить обычным способом. |
| pending | Банк ещё не ответил. Результат придёт вебхуком; не создавайте второй платёж за тот же период. |
График и суммы списаний ведёте вы: мы не списываем сами по расписанию. Обязательно передавайте Idempotency-Key (например, номер подписки и период), чтобы повтор запроса не списал деньги дважды. Контакт для чека берётся из первого платежа, если не передан customer.
Управление способами оплаты
| Поле | Тип | Описание |
|---|---|---|
| id | string | Идентификатор способа оплаты, pm_… |
| object | string | Всегда payment_method |
| type | string | Тип способа оплаты: sbp |
| status | string | active — можно списывать, inactive — отключён: active inactive |
| title | string | Название для показа покупателю |
| test | boolean | true для способа оплаты тестового магазина |
| customer_id | string | Покупатель в вашей системе (customer.id первого платежа) |
| first_payment_id | string | Платёж, при котором способ сохранён |
| last_used_at | datetime | Последнее списание |
| created_at | datetime | Время сохранения |
- GET /payment_methods?customer_id=client-305 — способы оплаты покупателя.
- GET /payment_methods/{id} — один способ.
- DELETE /payment_methods/{id} — отключить: списаний по нему больше не будет (status = inactive). Саму привязку счёта покупатель снимает в приложении своего банка.
Дайте покупателю в своём интерфейсе понятный способ отменить подписку и вызывайте при этом DELETE.
Как проверить
В тестовом магазине создайте платёж с save_payment_method: true, откройте payment_url и под QR в виджете нажмите «Оплата с привязкой (158)». Затем создайте платёж с полученным payment_method_id. Сценарий «Оплата без привязки (1581)» проверяет отказ покупателя от привязки.