Sandbox
Sandbox — изолированное окружение для разработки и тестирования. Никакие реальные операции не происходят: документы не отправляются провайдеру, СБП-переводов не существует, крипто-транзакций в блокчейне нет. Идеально для CI/CD и QA.
Как включить
Используйте sk_test_ ключ вместо sk_live_. Сгенерируйте его в Личном Кабинете → API ключи → переключатель MAIN / SANDBOX → Sandbox → Сгенерировать Sandbox ключи.
Authorization: Bearer sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Customer'ы созданные через
sk_test_имеютenv='sandbox' sk_live_ключ не видит sandbox-customer'ов (404)- Балансы, транзакции, KYC-state — отдельные для каждой среды
Чем sandbox отличается от live
| Name | Type | Required | Description |
|---|---|---|---|
KYC
|
|
optional |
Документы НЕ отправляются провайдеру. SMS-код всегда 000000. Verify-code мгновенно переводит в verified уровень 2.
|
Buy (СБП)
|
|
optional |
QR — fake URL. Никакой банк не задействован. Транзакция автоматически переходит в completed через ~5 секунд после создания, USDT кредитится по mock-курсу.
|
Sell (СБП)
|
|
optional |
Через 5 секунд completed; никакой банковский перевод не происходит. locked consume'ится корректно для проверки логики.
|
Crypto deposit
|
|
optional |
Адрес возвращается с префиксом TSAND... — на него ничего не отправляйте. Депозиты в sandbox можно симулировать только через сэндбокс-utility (нет в v1).
|
Crypto withdraw
|
|
optional |
locked блокирует средства, через 5 секунд consume'ится. Никаких реальных on-chain транзакций.
|
Webhooks
|
|
optional |
Полноценно работают. Subscribe через sk_test_ → webhook'ы для sandbox-событий. URL'ы партнёра нормально получают HMAC-подписанные POST'ы.
|
Rates
|
|
optional |
Курсы реальные (живой RateService). Это позволяет тестировать математику пересчёта.
|
Полный flow в sandbox
Полная sandbox-проверка (создать customer → consent → KYC → buy → sell → withdraw):
# 1. Customer
UUID=$(curl -s -X POST https://fin-os.io/api/v1/customers \
-H "Authorization: Bearer sk_test_..." \
-d '{"name": "Sandbox Test"}' | jq -r .data.uuid)
# 2. Consent
curl -X POST https://fin-os.io/api/v1/customers/$UUID/consent \
-H "Authorization: Bearer sk_test_..." -d '{"ip": "1.2.3.4"}'
# 3. KYC fast-path (sandbox)
curl -X POST https://fin-os.io/api/v1/customers/$UUID/kyc/start \
-H "Authorization: Bearer sk_test_..." -d '{"phone": "+79001112233"}'
curl -X POST https://fin-os.io/api/v1/customers/$UUID/kyc/verify-code \
-H "Authorization: Bearer sk_test_..." -d '{"code": "000000"}'
# 4. Buy
TX=$(curl -s -X POST https://fin-os.io/api/v1/customers/$UUID/payments/buy \
-H "Authorization: Bearer sk_test_..." \
-d '{"amount_rub": 1000, "bank_id": "sber"}' | jq -r .data.uuid)
sleep 6
# 5. Statuse → completed, USDT credited
curl -X GET https://fin-os.io/api/v1/customers/$UUID/payments/buy/$TX/status \
-H "Authorization: Bearer sk_test_..."
# 6. Balance
curl -X GET https://fin-os.io/api/v1/customers/$UUID/balance \
-H "Authorization: Bearer sk_test_..."
Magic-значения в sandbox
| Name | Type | Required | Description |
|---|---|---|---|
SMS-код
|
|
optional |
000000 — единственный код, который пройдёт verify-code.
|
Deposit address
|
|
optional |
Префикс TSAND, далее md5(customer_uuid + currency). На реальную транзакцию не сработает.
|
Tx hash
|
|
optional |
Sandbox-транзакции получают tx_hash вида SBX_xxx. Не валидный для блокчейн-explorer'ов.
|
Status delay
|
|
optional |
Транзакции автоматически переходят pending → completed через ~5 секунд после создания (при первом /status вызове).
|
Лимиты в sandbox
Те же, что в live (диапазоны сумм, max документов, rate-limits). Это сделано намеренно — чтобы партнёр в sandbox видел реальные граничные кейсы.
Очистка sandbox-данных
Sandbox-customer'ы и их транзакции не удаляются автоматически. Для очистки используйте DELETE /api/v1/customers/{uuid} — soft-delete. Полная очистка sandbox-окружения по запросу — пишите admin@fin-os.io.