Тестовая среда
Запросы на sk_test ходят в наш симулятор. Исход платежа — детерминированный, по последним двум цифрам суммы.
Все запросы по тестовому ключу sk_test_… попадают в наш симулятор, не в реальный банк. Симулятор детерминированный: исход платежа зависит от последних двух цифр суммы в копейках. Это сделано так, чтобы вы могли воспроизводить нужные сценарии в скрипте без хитрых триггеров.
Триггеры исходов для платежей
| Сумма (копейки) | Что произойдёт |
|---|---|
…00 | succeeded мгновенно. Полезно для UI smoke-тестов. |
…99 | failed с failure_code insufficient_funds. |
…66 | failed с failure_code fraud_blocked. |
…50 | requires_action: платёж в pending, payment_url ведёт на нашу страницу 3DS-эмуляции, где можно нажать «Оплатить» или «Отменить». |
любая другая | pending, через ~3 секунды переходит в succeeded (имитирует обычный СБП). |
> 10 000 000 ₽ | failed с failure_code limit_exceeded — потолок sandbox. |
Триггеры исходов для выплат
| Сумма (копейки) | Что произойдёт |
|---|---|
…00 | succeeded мгновенно. |
…99 | failed с reason insufficient_funds_in_payout_balance. |
…66 | failed с reason recipient_blacklisted_aml. |
любая другая | pending, через ~3 секунды переходит в succeeded. |
Примеры
amount: 100099(1000 руб 99 коп) — проверка обработкиinsufficient_funds.amount: 250050(2500 руб 50 коп) — проверка 3DS-флоу.amount: 500000(5000 руб 00 коп) — быстрый success без задержки.amount: 150042(1500 руб 42 коп) — реалистичный async-флоу с pending в succeeded.
Дополнительные поля в test-ответах
В test-режиме POST /payments и POST /payouts возвращают пару дополнительных полей, чтобы вы видели запланированный исход симулятора, не дожидаясь webhook'а:
| Поле | Значение |
|---|---|
mode | "test" вместо обычного "live" |
simulator | запланированный финальный статус (succeeded / failed / requires_action / pending) |
failure_code | для failed-исходов — код отказа (insufficient_funds, fraud_blocked, …) |
failure_message | человеко-читаемое описание для failed-исходов |
В metadata платежа в test-режиме автоматически проставляются служебные ключи mode: "test", simulator_outcome и (для отказов) simulator_failure_code. По ним удобно фильтровать тестовые платежи в логах.
Webhook'и в test-режиме
Webhook-уведомления приходят на тот же endpoint, что вы настроили в ЛК (или на per-payment webhook_url). Подпись и формат идентичны production — код webhook-handler'а адаптировать под test не нужно.
sk_test_ на sk_live_. URL и handler'ы остаются те же.