Skip to content

Локальное тестирование ​

Всё ниже выполняется на вашей машине, без сети и без учётных данных. Это проверяет вашу сторону интеграции по опубликованному контракту; оно не доказывает работу реального приёма платежей.

Пилотный режим

Песочницы с реальными платежами нет. Реальные счета создают запрос на оплату плательщику — не используйте их для проб. Доступность приёма платежей зависит от онбординга организации.

1. Тесты набора ​

bash
# Python (3.11+)
cd python && python -m unittest discover -s . -p "test_*.py"

# Node.js (18.13+)
cd node && node --test

Тесты используют подставной транспорт или локальные серверы на вашей машине. Сеть не затрагивается.

2. Демонстрация на имитациях ​

bash
cd python && python offline_demo.py
cd node   && node offline-demo.mjs

Демонстрация поднимает имитацию Merchant API и ваш приёмник вебхуков на адресах вашей машины и показывает по шагам: заказ → счёт → оплата → проверенный вебхук → заказ оплачен один раз; двойной клик; дубликат и подделка вебхука; потерянный ответ; неопределённый исход; поздний платёж после вашего срока. Это имитация контракта, не Eleven Pay.

3. Один сценарий — два языка ​

test-vectors/lifecycle-vectors.json описывает 17 сценариев жизненного цикла (успех по вебхуку и по опросу, неоплаченный, дубликаты, неверные подписи, отказ, неопределённый исход, срок и поздний платёж, обрыв сети, лимиты повторов, изоляция тенантов). Оба набора прогоняют их, а test_parity.py требует идентичных результатов — используйте те же сценарии для своей реализации на другом языке.

4. Проверка вашего приёмника вебхуков ​

bash
# терминал 1: ваш приёмник (секрет — выдуманный, не настоящий)
export ELEVENPAY_WEBHOOK_SECRET=any-local-test-secret
python python/webhook_receiver.py        # или: node node/webhook-receiver.mjs

# терминал 2: подписанное тестовое событие, дубликат и устаревшая подпись
python python/send_test_webhook.py SHOP-1 1500.00 --replay
python python/send_test_webhook.py SHOP-2 1500.00 --stale

Ожидаемо: первая доставка принята, повтор — «дубликат» без повторной выдачи, устаревшая подпись — 401.

5. Векторы подписи ​

test-vectors/webhook-vectors.json — 19 случаев (верные, подделанные, устаревшие, с ротацией секрета), сформированных кодом подписи Eleven Pay. Любой верификатор на любом языке должен давать ожидаемые результаты на этих векторах.

6. Что смотреть в своём коде ​

  • один и тот же Idempotency-Key при каждом повторе одного заказа;
  • «оплачено» только после проверенного расчёта;
  • просроченный заказ + проверенный платёж → ручной разбор, а не потеря;
  • перезапуск процесса не создаёт второго счёта.