Справка EmetPay

Документация API

Как принимать криптоплатежи через API EmetPay: создание инвойса, аутентификация по ключу, webhook с проверкой подписи, ссылка на OpenAPI-спецификацию.

Кому это нужно. Если вы стример и просто принимаете донаты — API вам не понадобится, всё есть в кабинете. Эта страница для тех, кто встраивает оплату в свой сайт или бота.

Как устроено

Вы создаёте инвойс — мы отдаём адрес и ссылку на страницу оплаты. Дальше следим за блокчейном сами и, когда платёж наберёт нужное число подтверждений, шлём вам webhook. Деньги при этом идут напрямую на ваш кошелёк: мы их не держим и не можем задержать.

Аутентификация

Ключ создаётся в кабинете и показывается один раз. Передаётся заголовком:

X-Api-Key: pk_xxxx.yyyy

Ключ — это доступ к созданию инвойсов от вашего имени. Держите его на сервере. Не кладите в код страницы, в мобильное приложение и в публичный репозиторий. Утёк — отзовите в кабинете, старый ключ перестанет работать сразу.

Создать инвойс

POST /v1/invoices
X-Api-Key: pk_xxxx.yyyy
Content-Type: application/json

{
  "currency": "BTC",
  "type": "order",
  "expected_amount": "150000",
  "order_id": "order-42"
}

Суммы везде — строкой и в минимальных единицах (сатоши для BTC, литоши для LTC). Не число с плавающей точкой: 0.1 + 0.2 в большинстве языков даёт не 0.3, а на деньгах это недопустимо.

Заголовок Idempotency-Key защищает от дублей: повтор того же запроса вернёт тот же инвойс, а не создаст второй. То же самое делает уникальный order_id.

Webhook

Приходит на ваш адрес при событиях invoice.confirmed, invoice.expired, invoice.underpaid и invoice.late_payment. Подписан HMAC-SHA256 вашим секретом.

Проверяйте подпись по сырому телу запроса, до разбора JSON. Если сначала распарсить, а потом собрать обратно — байты изменятся и подпись не сойдётся. Рабочий пример с проверкой подписи и защитой от повторов лежит в репозитории: examples/webhook-receiver.mjs.

Статус pending в webhook не приходит намеренно: это ещё не деньги, а только замеченная транзакция. Для живого отображения есть SSE на странице оплаты.

Полная спецификация

Машиночитаемая схема OpenAPI 3.0 со всеми маршрутами, полями и кодами ошибок:

openapi.yaml — файл спецификации. Его можно открыть в Swagger Editor, Postman, Insomnia или скормить генератору клиента для вашего языка.

Если открыть ссылку прямо в браузере, вы увидите текст YAML — так и должно быть, это формат для инструментов, а не для чтения глазами.