# BaaS
# Тестирование ЭСП
Для тестирования создания ЭСП используется отдельный sanbox сервис, которые в зависимости от переданных ФИО создает ЭСП для проведения успешных и неуспещных операций.
# Подключение к тестовому окружению
Перед началом интеграции обратитесь в Службу поддержки (opens new window) для получения:
client_idиclient_secretOAuth-приложения;- доступа к Sandbox для API виртуальных счетов;
- (опционально) настройки webhook URL для уведомлений о статусе кошельков.
Эти данные используются для получения access_token и выполнения запросов к API.
# Окружения API виртуальных счетов
| Environment | Base URL |
|---|---|
| Sandbox | https://sandbox-payment-tokens.mandarin.io |
| Production | https://payment-tokens.mandarin.io |
# Скоупы OAuth
Для работы с виртуальными счетами запрашивайте скоупы через пробел, например:
payment-tokens:tokens.write payment-tokens:tokens.read payment-tokens:otp.write
| Скоуп | Назначение |
|---|---|
payment-tokens:tokens.write | Создание ЭСП |
payment-tokens:tokens.read | Проверка статуса ЭСП |
payment-tokens:otp.write | Отправка и подтверждение OTP |
# Аутентификация
Запросы к API виртуальных счетов в тестовом окружении аутентифицируются по протоколу OAuth 2.0 (Bearer). Подробнее — в разделе Аутентификация запросов.
# Тестовые ФИО для создания ЭСП
В Sandbox результат создания кошелька зависит от переданных ФИО:
# Успешное создание кошелька
| Поле | Значение |
|---|---|
first_name | Успех |
last_name | Успешный |
middle_name | Успехович |
# Ошибка создания кошелька
| Поле | Значение |
|---|---|
first_name | Неуспех |
last_name | Неуспешный |
middle_name | Неуспехович |
# Создание виртуального счета (ЭСП)
Запрос
curl --request POST \
--url https://sandbox-payment-tokens.mandarin.io/api/v1/tokens/generate \
--header 'Mid: {{mid}}' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {{access_token}}' \
--data-raw '{
"first_name": "Иван",
"last_name": "Иванов",
"middle_name": "Иванович",
"birth_date": "1990-12-22",
"citizenship": "RU",
"registration_address": "г. Москва, ул. Петровка, д.2, кв.1",
"living_address": "г. Москва, ул. Петровка, д.2, кв.1",
"document": {
"document_type": "Passport",
"serial": "1234",
"number": "123456",
"issue_date": "2002-04-24T15:23:14.969Z",
"birth_place": "г. Москва",
"issuer": "ОВД района Фили Давыдково",
"issue_code": "404-004",
"expiration_date": null
},
"inn": "1234567890",
"snils": "140-120-150 35",
"phones": [
{
"phone": "79004001234",
"type": "Personal"
}
],
"email": "ivanoff@mail.ru",
"phone_check": true,
"terms_agreement": true,
"is_public_official_person": false,
"presence_of_beneficiary": false,
"beneficiary_information": false,
"exist_fatf_government_bills": false,
"affiliation_with_foreign_taxpayers": false
}'
Ответ в случае успешного запроса на создание виртуального счета (ЭСП) (200 ОК)
{
"id": "06dca2f1-4e1c-44e7-8848-3e9e3adba875",
"status": "Processing",
"created_at": "2025-11-21T10:33:27.021823Z",
"processed_at": null,
"finished_at": null
}
# Тестирование card2wallet2account
Сценарий card2wallet2account (пополнение ЭСП с карты + частичный роутинг саб-мерчантам) тестируется в Sandbox. Техническое описание операции — в разделе BaaS.
# Чеклист перед первым тестовым платежом
- ✓ Получены sandbox
client_id,client_secret, MID - ✓ OAuth-токен запрашивается с нужными скоупами:
secure:transactions.write payment-tokens:tokens.read(для создания ЭСП дополнительно:payment-tokens:tokens.write payment-tokens:otp.write) - ✓ Создан и активирован тестовый ЭСП (
status = Success) — см. Тестовые ФИО - ✓ Создан хотя бы один
accountIdсаб-мерчанта - ✓ Подключён сценарий card2wallet2account у менеджера Mandarin
- ✓ Настроен callback URL (доступен извне или через туннель)
- ✓
orderIdуникален для каждого запроса
# Тестовые сценарии
| # | Сценарий | Ожидание |
|---|---|---|
| 1 | Полный роутинг: price = 100, routing = 100 | Успех, все средства распределены |
| 2 | Частичный роутинг: price = 100, routing = 50 | Успех, 50 ₽ на саб-мерчанта, 50 ₽ на кошельке |
| 3 | Превышение: price = 100, routing = 150 | Ошибка 400 |
| 4 | ЭСП не активирован (status != Success) | Ошибка при создании транзакции |
| 5 | Неверный accountId | Ошибка при создании транзакции |
| 6 | Повторный orderId | Ошибка или идемпотентный ответ (зависит от настроек) |
# Проверка остатка на кошельке
После успешного платежа с частичным роутингом проверьте баланс:
curl --request GET \
--url https://sandbox-payment-tokens.mandarin.io/api/v1/tokens/{{payment_token_id}}/wallet/balance \
--header 'Authorization: Bearer {{access_token}}' \
--header 'Mid: {{mid}}'
При возникновении ошибок см. BaaS (ЭСП) в справочнике кодов ошибок.