Локальное тестирование
Всё ниже выполняется на вашей машине, без сети и без учётных данных. Это проверяет вашу сторону интеграции по опубликованному контракту; оно не доказывает работу реального приёма платежей.
Пилотный режим
Песочницы с реальными платежами нет. Реальные счета создают запрос на оплату плательщику — не используйте их для проб. Доступность приёма платежей зависит от онбординга организации.
1. Тесты набора
# Python (3.11+)
cd python && python -m unittest discover -s . -p "test_*.py"
# Node.js (18.13+)
cd node && node --testТесты используют подставной транспорт или локальные серверы на вашей машине. Сеть не затрагивается.
2. Демонстрация на имитациях
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. Проверка вашего приёмника вебхуков
# терминал 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при каждом повторе одного заказа; - «оплачено» только после проверенного расчёта;
- просроченный заказ + проверенный платёж → ручной разбор, а не потеря;
- перезапуск процесса не создаёт второго счёта.