Skip to Content

Отличия Sandbox ↔ Production

Песочница повторяет контракт боевого сервиса — адреса методов, структуру запросов, подпись и формат ответов, — но не сам биллинг подписок. Ниже собрано всё, что ведёт себя иначе, чтобы это не выяснилось уже на боевом контуре.

ЧтоКак ведёт себя песочница
Деньги и SMSСписаний нет, SMS не отправляются — ни PIN при CreateSubscription, ни повторный при ResendPinCode
Состояние подпискиХранится. SubscriptionID из CreateSubscription переиспользуется всеми остальными методами, статус меняется по ходу сценария. Повторный CreateSubscription для того же номера отклоняется с SubscriptionAlreadyCreated, как в бою
Отказы сервисаВоспроизводятся зарезервированными окончаниями номера (0001…0003), неверным PIN и «картами с ошибкой» — см. «Отказы и лимиты». Пороги частоты те же, что в бою
GetSubscriptionStatusОтдаёт реальный статус: Pending → Active → Cancelled / ApprovingFailed, а при включённом цикле списаний — ещё Redelivering, RenewingFailed и Closed. OperatorID — всегда 22, Country — всегда ru
СписанияДенег никто не снимает, исход задаётся заранее: <TestInfo><ExpectedBillingResult>, период сжимается до секунд (BillingPeriodSeconds). Без этого блока списаний нет вовсе — в бою они идут по расписанию проекта. Число попыток при отказе фиксировано (3), в бою зависит от тарифа
Подтверждение PINPIN фиксированный — 1234, 3 попытки; после третьей подписка навсегда в ApprovingFailed. Случайный PIN не выдаётся: SMS мок не отправляет, и автоматический сценарий на этом бы ломался
Карта и СБПCustomerType=Card отдаёт рабочий AuthorizeUrl — мок-страницу оплаты. Реквизиты не проверяются и никуда не передаются; отказ воспроизводится последними 4 цифрами карты 0001…0005. СБП и SberPay не различаются — оба ведут на один QR-экран
Виджет оплатыРаботает: embed.js публикуется, токен берётся из AuthorizeUrl. На демо-проекте подключены СБП, Alfa Pay и SberPay; T-Pay в виджете подписок отключён, как в бою. BillingStartTimeUtc в будущем откладывает первую оплату — TrialExists=true, в виджете только СБП. Настоящих банков нет, поэтому начальный шаг не подтвердить из приложения банка — довести сценарий до success даёт кнопка симуляции внутри виджета (в бою её нет). Денег никто не снимает: после успешного шага приходит APPROVED, отдельного уведомления о первом списании нет
КоллбекУходит при фактической смене статуса: APPROVED после подтверждения (PIN или оплата), REJECTED при отказе карты, CANCELLED после CancelSubscription, плюс события цикла списаний, если он включён. Задержка первого — 15 секунд, уведомления цикла уходят в момент списания
ХранениеЖурналы запросов и коллбеков чистятся по расписанию

Подпись проверяется по-настоящему. HMAC-SHA256 и допустимый дрейф времени работают ровно так же, как в бою: это та часть интеграции, которую песочница проверяет всерьёз — см. «Подпись запросов». Коллбек тоже отправляется по-настоящему, с подписью и ретраем.

Перед переходом в прод: получить боевые SubscriptionProjectID и SecretKey — доступы песочницы в бою не работают; проверить обработчик на полном цикле списаний (см. «Хуки песочницы: Списания») — в бою эти события приходят по расписанию проекта и составляют основной поток уведомлений.