/v1/payment,
/v1/payout, /v1/wallet, …), принимает те же заголовки и отдаёт ответы в том же формате.
1
Замените базовый URL
https://api.heleket.com → адрес вашего инстанса iEXWallet (тот же хост, что у Public API).2
Подставьте ключи
В поле merchant модуля укажите
API id ключа из админки (Сайт → Ключи API), в поле API key —
его секрет. Ключ должен быть со scope deposit_and_payout, если модуль делает выплаты/возвраты.
Один и тот же ключ используется и для подписи запросов, и для проверки sign во входящих вебхуках.3
Включите формат вебхуков Heleket
Админка → Сайт → «Изменить» → Формат вебхуков → Heleket-совместимый. С этого момента все
вебхуки сайта (в т. ч. созданные через нативный Public API) уходят в формате Heleket с полем
sign.Аутентификация
Тело — JSON. Для запросов без тела подпись считается от пустой строки; принимаются также варианты
{} и [].
Действуют IP-whitelist сайта/ключа и rate-limit сайта (заголовки X-RateLimit-*).
Ответы
Успех —{ "state": 0, "result": … }; ошибка — { "state": 1, "message": "…" } (валидация — плюс errors),
HTTP-статус как у нативного API (400/401/403/404/409/429).
Поддерживаемые эндпоинты
Не поддерживаются (ответ
state: 1 с пояснением): QR-коды (/payment/qr, /wallet/qr), скидки
(/payment/discount/*), переводы между кошельками (/transfer/*), wallet/block-address/refund
(возвращайте каждый платёж через /v1/payment/refund), выбор валюты покупателем на hosted-странице
(передавайте to_currency + network), is_subtract (сетевая комиссия всегда удерживается с hot-кошелька).
Статусы
Платежи: те же коды, что у Heleket (check, process, confirm_check, paid, paid_over, wrong_amount,
wrong_amount_waiting, fail, cancel, system_fail, refund_process, refund_paid, refund_fail).
Выплаты: check (создана / ждёт одобрения / в очереди), process (подписана / в сети), paid, fail, cancel.
Вебхуки в формате Heleket
POST JSON наurl_callback (счёта / статического адреса / выплаты) или на callback_url сайта:
sign = md5( base64( JSON без поля sign ) + api_secret ), где секрет — ключ, которым сайт впервые
обратился к совместимому API (он запоминается за сайтом); если таких запросов не было — callback-секрет сайта.
Поле type: payment (счёт/депозит), wallet (платёж на статический адрес, wallet_address_uuid — его uuid),
payout. Выплата: uuid, order_id, amount, merchant_amount, commission, is_final, status, txid,
currency, network, payer_currency, payer_amount, sign.
Нативные заголовки (
X-Signature, X-Event-Type, X-Event-Id, …) продолжают присылаться — их можно
использовать для идемпотентности, но модули Heleket их игнорируют.Что отличается
- UUID платежа = uuid депозита в нативном API (
GET /v1/public/deposits/{uuid}работает с ним же). payment/listне фильтрует по датам (date_from/date_toигнорируются) — используйтеcursor.additional_data,discount,convertвсегдаnull/0.- Балансы в
/v1/balance— hot-кошельки платформы (нет «пользовательских» балансов).