Рекуррентные платежи

Получение подписок

Проверяйте состояние одной подписки или получайте постраничный список подписок мерчанта

По UUID Cashera

GET/integration/subscriptions/{uuid}
200 OK
curl https://api.cashera.cash/api/v1/integration/subscriptions/31dc7faa-c380-4ec7-a258-3202a2211e76 \
-H "X-Api-Key: $CASHERA_API_KEY"

По external_id

GET/integration/subscriptions/by-external-id/{external_id}
200 OK
curl https://api.cashera.cash/api/v1/integration/subscriptions/by-external-id/subscription-pro-10428 \
-H "X-Api-Key: $CASHERA_API_KEY"

Список подписок

GET/integration/subscriptions
ПолеТипОписание
pageintegerНомер страницы от 1. По умолчанию 1
per_pageintegerРазмер страницы от 1 до 100. По умолчанию 20
200 OK
curl "https://api.cashera.cash/api/v1/integration/subscriptions?page=1&per_page=20" \
-H "X-Api-Key: $CASHERA_API_KEY"

В ответах создания, получения и отмены подписки, а также в каждом элементе списка возвращаются interval и interval_count. Например, monthly с 3 означает списание раз в 3 месяца.

Как читать условия и суммы

ПолеТипОписание
amountintegerБазовая сумма одного списания в копейках
gross_amountintegerФактическая сумма клиента с комиссией в копейках
net_amountintegerСумма за вычетом комиссии в копейках. Не означает, что будущая оплата уже получена
fee_amountintegerКомиссия в копейках; gross_amount минус net_amount
agreement_modestringh2h или hosted, выбранный при создании способ подключения
next_charge_atstring | nullСледующая дата по расписанию с часовым поясом. null означает, что дата не указана; не подставляйте свою
last_charge_atstring | nullВремя последней попытки по состоянию подписки, не доказательство успешной оплаты

Суммы и расписание в подписке описывают её текущие условия. После изменения тарифа они могут отличаться от предыдущих оплат. Суммы и результат конкретного периода смотрите в транзакциях подписки. Ответы отдельных объектов не имеют обёртки data; списки имеютdata и meta.

Доступ только к своим подпискам

API-ключ определяет мерчанта. Список, счётчик meta.total, поиск по UUID и external_id, история списаний и отмена доступны только для его подписок. Чужой или неизвестный UUID возвращает 404. Параметр merchant_idне переключает владельца. В URL используется UUID Cashera, а не идентификатор провайдера. Совпадающие external_id у разных мерчантов не смешиваются.

Актуальность статуса

GET возвращает сохранённое состояние Cashera и не выполняет запрос к провайдеру при каждом обращении. Состояние обновляют входящие уведомления и плановая сверка: каждые 15 минут обрабатывается до 100 подписок. При большой очереди или ошибках провайдера обновление конкретной подписки может занять больше времени.

Если после ошибки создания возвращается pending_agreement и confirmation_url: null, следуйте инструкции по ошибке подтверждения. Пустая ссылка не означает успешную привязку. GET не перезапускает подтверждение и не выдаёт новую ссылку.

Вебхуки - основной способ отслеживания

Для оперативных изменений используйте событие subscription.status_updated. GET-запросы подходят для сверки, восстановления пропущенного события и интерфейса истории. Значения описаны в справочнике статусов.