https://api.oblodai.com/v1/payment · Аутентификация: обязательна (подпись) · Идемпотентность: заголовок Idempotency-Key и/или order_id.
Примеры используют хелпер
call() и переменные $SECRET/$PUBLIC_ID — их определение см. в
Как подписать запрос. Проще не писать подпись руками, а взять
SDK.Параметры запроса
string
обязательно
Сумма к оплате в валюте
currency.string
обязательно
Код валюты цены. Это любой из 23 фиатов (
USD, EUR, GBP, RUB, UAH, JPY, …) или любая монета (USDT, BTC, …). Полный список — pricing_currencies из GET /v1/currencies. У JPY и KRW ноль знаков после запятой ("10000", а не "10000.00").string
Ссылка мерчанта; ключ идемпотентности. Настоятельно рекомендуется.
string
Сеть расчёта (напр.
tron, ethereum). См. режимы ниже.string
Валюта расчёта — крипта, которой платят (фиат здесь невозможен). По умолчанию
= currency, но только если currency — крипта. Если цена в фиате, задайте to_currency явно — либо не задавайте и network, тогда монету выберет покупатель.int64
по умолчанию:"3600"
Время жизни счёта, сек; 300–43200. По умолчанию 3600. Значения вне диапазона обрезаются к ближайшей границе (не ошибка).
int64
устарело
Устаревшее; новичку не нужно — payer‑facing наценки настраиваются через
discount. % сетевой наценки на плательщика (0–100).float64
Допуск недо/переплаты, 0–5 %. Перекрывает настройку мерчанта.
string
Индивидуальный webhook для этого счёта.
string
Ссылка «назад в магазин» на странице оплаты.
string
Редирект после успешной оплаты.
string
Приватные данные мерчанта, эхом в вебхуках (покупателю не видны).
string
Email плательщика. Если задан — после оплаты на него автоматически уходит чек. Он же получатель по умолчанию у
POST /v1/payment/send-email.string
Тема страницы оплаты:
dark | light.bool
Разрешить доплату остатка.
bool
Оживить просроченный счёт по
order_id вместо создания нового.Идемпотентность обеспечивает заголовок
Idempotency-Key или order_id. Если нет ни того, ни
другого, каждый вызов создаёт новый счёт — задавайте хотя бы одно из двух.amount, currency; настоятельно рекомендуем также order_id или заголовок Idempotency-Key. Остальные поля — по мере надобности.
Заголовки
Любое уникальное значение (≤255 символов), одинаковое во всех повторах одного создания. Повтор вернёт тот же счёт и заголовок
Idempotent-Replayed: true. Работает независимо от order_id и вместе с ним. → ИдемпотентностьРежимы выбора валюты и сети
Валюта цены (currency) и валюта расчёта (to_currency) — разные вещи: цену можно назначить
в фиате (USD, EUR, RUB, … — 23 валюты) или в крипте, а платят всегда
криптой. Подробнее — Форматы сумм и денег.
Правила ниже одинаковы для любого фиата, не только для USD.
В валюто‑агностичном режиме курс и адрес фиксируются в момент выбора монеты покупателем, комиссия —
уже при создании.
Подробный разбор — Три режима создания счёта.
Пример запроса
Пример ответа
payer_amount — это amount, пересчитанная в крипту по текущему курсу (плюс, если задан subtract,
сетевая наценка на плательщика). Поэтому число отличается от amount.
Полное описание всех полей — Объект платежа. Для валюто‑агностичного счёта
is_multi: true, а payer_currency, address, address_qr_code, payer_amount, amount_paid,
amount_remaining пусты до выбора монеты покупателем — валюты расчёта у такого счёта ещё просто нет.
Коды ошибок
Нюансы
- Идемпотентность — два механизма, работают вместе. Заголовок
Idempotency-Key(рекомендуемый): повтор с тем же значением вернёт тот же ответ иIdempotent-Replayed: true. Иorder_id: повтор (или переигранный в пределах 5‑мин окна подписи запрос) сorder_id, для которого уже есть живой счёт, вернёт этот же счёт, а не создаст дубль. Терминальный или просроченный счёт создание нового не блокирует. Проверка‑и‑создание защищены advisory‑локом по паре(merchant, order_id)от гонки двух одновременных запросов. → Идемпотентность - Цена в фиате.
currencyможет быть любой из 23 фиатных валют (USD,EUR,GBP,RUB,UAH,PLN,CZK,TRY,CNY,INR,BRL,CAD,AUD,CHF,AED,ZAR,MXN,IDR,THB,VND,NGN,JPY,KRW) — курс берётся напрямую в этой валюте. Тенге (KZT), сом (KGS) и сум (UZS) пока не поддерживаются — вернётсяpayment.unknown_currency. - Много счетов сразу —
POST /v1/payment/batch: до 5000 за один запрос, один «тик» лимита частоты. is_refresh. Сis_refresh: trueи существующимorder_idпросроченный счёт оживляется (перезакрепляется курс, продлевается lifetime). Если такого счёта нет — обычное создание.- Курс и его окно. Курс фиксируется при создании;
rate_expires_at— до какого момента он действителен. Для долгоживущей ссылки курс лениво перезапрашивается при открытии hosted‑страницы, пока счёт не оплачен и не истёк (адрес и сумма после начала оплаты не меняются). - Минимум сети. Платёж ниже минимума сети в USD отклоняется (
payment.below_minimum). На дорогих сетях (Ethereum, Bitcoin) минимум есть, на дешёвых — нет. Если курса нет, минимум не применяется. - Комиссия. Наша комиссия = эффективная ставка мерчанта (его закреплённый override либо
глобальная платформенная, по умолчанию 1.5 % + $0.30 с платежа — фиксированная часть
«размазывается» в ставку при фиксации курса). Устаревший
subtractне задаёт нашу ставку — это только наценка сети на плательщика. - Подтверждения.
required_confirmationsподбирается под сумму: мелкий платёж может подтвердиться за меньшее число подтверждений, крупный требует полного reorg‑безопасного порога.
Связанные страницы
Объект платежа
POST /v1/payment/info
Три режима создания счёта
Недоплата, переплата и автовозврат
Допуск недоплаты
Автовозврат
POST /v1/payment/batch
много счетов одним запросом.
POST /v1/payment/link
многоразовая ссылка оплаты (в т. ч. без бэкенда).
POST /v1/payment/send-email
отправить счёт письмом.