Тестирование

Тестовые ключи, карты и сценарии

В тестовом режиме проходят все сценарии — успех, отказ, 3-D Secure, возвраты и вебхуки, — а деньги не списываются.

Временный ключ песочницы
curl -X POST https://api.nordpay.pro/v1/sandbox/keys \
  -H "Content-Type: application/json" \
  -d '{}'
Ответ · 201
{
  "secret_key": "sk_test_51c8…f2a9",
  "webhook_secret": "a3f9…7c1e",
  "merchant_id": "mch_test_7Hq2",
  "expires_at": "2026-11-09T12:00:00Z"
}

Тестовые ключи

  • Временный ключ песочницы — POST /v1/sandbox/keys без авторизации. Создаёт отдельный тестовый магазин на 24 часа и возвращает secret_key и webhook_secret. Не больше 10 ключей в час с одного IP-адреса.
  • Постоянный тестовый ключ — в кабинете, раздел «Вебхуки и API-ключи», режим «Тест». Платежи по нему видны в кабинете.
Получить ключ и отправить первые запросы можно без терминала — в песочнице.
Лимит выдачи ключей · 429
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limited",
    "message": "Слишком много ключей с одного адреса, попробуйте позже",
    "request_id": "req_0d6f3a29b1"
  }
}

Тестовые карты

Вводите на странице оплаты тестового платежа. Срок действия — любой в будущем, CVC — любые три цифры.

НомерКартаРезультат
4242 4242 4242 4242Успешная оплата
5555 5555 5555 4444Успешная оплата
2200 0000 0000 0004Успешная оплата
2200 0000 0000 0012Запрос 3-D Secure, затем успех
4000 0000 0000 0002Отказ: payment_declined
4000 0000 0000 9995Отказ: insufficient_funds

Для карты 2200 0000 0000 0012 откроется тестовое окно 3-D Secure: введите любой код из 4–6 цифр.

Отказ по тестовой карте
{
  "id": "pay_2Kq8sD1fVxJ7mN4p",
  "object": "payment",
  "status": "failed",
  "method": "card",
  "card": {
    "brand": "visa",
    "last4": "9995"
  },
  "failure": {
    "code": "insufficient_funds",
    "message": "Недостаточно средств"
  }
}

СБП и USDT в тесте

В тестовом режиме QR-код СБП и адрес кошелька — учебные: переводить по ним реальные деньги не нужно. На странице оплаты тестового платежа есть кнопки «Оплатить успешно» и «Отклонить» — они задают исход и запускают вебхуки так же, как настоящая оплата.

В песочнице работают все пять сетей USDT. Адрес выдаётся в формате выбранной сети, а после «оплаты» подтверждения приходят по одному через SSE и вебхуки — так можно проверить, как ваш интерфейс показывает прогресс. Ссылка explorer_url в тесте ведёт на настоящий обозреватель сети, но учебной транзакции там нет.

Сети USDT
СетьЗачислениеПример адреса
TRON TRC20trc2019 подтверждений
около минуты
TJHF5yEb46hbaNgdv2uy4PAtumFZG9RiLv
TON Jettonton1 подтверждение
несколько секунд
UQBaLWowuu0AfLvpXwr6Mjk6JJ1VaKLD5hKD32DDzC9eRtyn
BNB Smart Chain BEP20bep2015 подтверждений
около минуты
0xae0ad59ac51c481c06b20874f1274d73f4c40df5
Ethereum ERC20erc2012 подтверждений
3–5 минут
0x409e9f502a590bcbfdfbbfad834bdf8c7aaed63b
Solana SPLsol32 подтверждения
до 30 секунд
3XWcTLJ6gK75MdfwH8LCXugXS5Mc3gmMJPziMz3vwCNa
Не отправляйте реальные USDT на адрес из тестового платежа — такие переводы не зачисляются.
Тестовый платёж в USDT BEP20
curl -X POST https://api.nordpay.pro/v1/payments \
  -H "Authorization: Bearer $NORDPAY_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 250000,
    "currency": "RUB",
    "method": "crypto",
    "crypto_network": "bep20",
    "description": "Тест USDT BEP20"
  }'
Ответ: адрес в выбранной сети
{
  "id": "pay_2Kq8sD1fVxJ7mN4p",
  "method": "crypto",
  "status": "pending",
  "crypto_network": "bep20",
  "crypto": {
    "asset": "USDT",
    "network": "bep20",
    "chain": "BNB Smart Chain",
    "standard": "BEP20",
    "address": "0xae0ad59ac51c481c06b20874f1274d73f4c40df5",
    "amount_crypto": "51.70",
    "rate": "96.52",
    "confirmations": 0,
    "confirmations_required": 15,
    "tx_hash": null,
    "explorer_url": null,
    "expires_at": "2026-11-08T13:00:00Z"
  },
  "livemode": false
}

Симуляция исхода

Для автотестов исход платежа удобно задавать запросом: outcome — succeeded или failed. Работает только с ключами sk_test_.

После симуляции на ваши адреса уходят те же события, что и при настоящей оплате: payment.succeeded или payment.failed.

POST /v1/sandbox/payments/:id/simulate
curl -X POST https://api.nordpay.pro/v1/sandbox/payments/pay_2Kq8sD1fVxJ7mN4p/simulate \
  -H "Authorization: Bearer $NORDPAY_SECRET_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "outcome": "succeeded"
  }'
Ответ · 200
{
  "id": "pay_2Kq8sD1fVxJ7mN4p",
  "object": "payment",
  "status": "succeeded",
  "paid_at": "2026-11-08T12:03:41Z",
  "livemode": false
}