FAQ — подписки
Как проверить подпись до первого запроса?
Прогоните тест-векторы (subs_sigtest.) локально: у подписок один проход HMAC — ключ SecretKey, сообщение SubscriptionProjectID + Now. Негативные векторы — обратный порядок конкатенации и MD5-формула старых редакций спеки — обязаны не совпасть. Формула целиком — в разделе Подпись запросов.
Чем подписка отличается от контракта в разовых платежах?
Тем, кто инициирует списание. В подписках график ведёт платформа по расписанию проекта; контракт в разовых платежах только привязывает реквизиты, а каждое списание мерчант запускает сам отдельным CreateInvoice. Подробнее — в разделе Обзор протокола.
Как сделать подписку с оплатой картой или через СБП?
Передайте в CreateSubscription поля CustomerType=Card и CustomerId — в ответе придёт AuthorizeUrl, адрес страницы оплаты; для QR-кода СБП допишите к нему ?useSbpQr=True. Шаг ApproveSubscription в этом сценарии не нужен: подписка активируется по факту оплаты. См. Методы.
Когда придёт коллбек?
При фактической смене статуса: APPROVED после подтверждения PIN-кодом или оплаты, REJECTED при отказе карты, CANCELLED после отмены. Задержка первой отправки — 15 секунд. См. Коллбек.
Пришло повторное уведомление — что делать?
Отвечать 200 и дедуплицировать по заголовку X-Event-Id (он же RequestID): между попытками доставки одного события он не меняется. Ошибка в ответ на дубль заставит платформу повторять снова.
Sandbox
Какой PIN вводить в песочнице?
Фиксированный — 1234, SMS песочница не отправляет. Даётся три попытки, после третьей подписка навсегда переходит в ApprovingFailed. Полный список упрощений — в разделе Отличия Sandbox ↔ Production.
Как перейти из песочницы в Production?
Боевой адрес и креды выдаёт менеджер i-Free; формула подписи и набор методов те же. Что меняется — собрано в разделе Отличия Sandbox ↔ Production.