Документация разработчика

Подключение платежей стейблкоинами в Base

Проверьте идентичность токена, параметры и подтверждение в Base. Оплатите полную сумму из API.

Идентификаторы токенов основной сети

Контракты и Mint — предустановленные значения, а не текущий статус каналов. Для заказа нужны включённые сеть и актив и действительный кошелёк. Платите на payment.address из API, никогда на контракт или Mint.

Идентификаторы токенов основной сети
СетьВалютаКонтракт / MintРазрядность токена
BASE network logoBASEUSDT0xfde4c96c8593536e31f229ea8f37b2ada2699bb26
BASE network logoBASEUSDC0x833589fcd6edb6e08f4c7c32d4f71b54bda029136

Настройка продавца

  1. Настройте кошелёк сети и включённый Webhook с URL и ключом. Храните API Key и ключ HMAC только на сервере.
  2. Проверьте доступность network / currency. Администратор управляет RPC, сетями и активами; продавцу не нужно развёртывать сканеры.
  3. Покажите payment.amount, payment.address, currency, network и срок действия из ответа. Данные QR — не изображение.
  4. Проверьте подпись, устраните дубликаты и надёжно сохраните событие до ответа HTTP 2xx. Выдавайте заказ идемпотентно.

Примечания о сетях и активах

  • Base mainnet имеет chain ID 8453, не Base Sepolia. Продавец задаёт кошелёк, администратор управляет RPC и включением сети. USDC нативный Circle, USDT — настроенная мостовая версия; USDbC не включён. Сканирование идёт по безопасной высоте L1-finalized: платите до конца отсчёта, подтверждение возможно позже без фиксированного срока. Для WooCommerce проверьте установленный релиз и поддержку сетей и валют.

Примеры подписанного запроса и ответа

25.00 — сумма для примера. Используйте реальную сумму заказа с учётом минимума актива. Адреса, заказы и хеши вымышлены. Скопированный cURL или Java отправляет запрос: настройте собственные ключи перед запуском.

create / cURL
# Run against your account only when ready; this sends an API request.
: "${BOLTUTIL_API_KEY:?Set your complete API Key}"
: "${BOLTUTIL_WEBHOOK_SECRET:?Set your Webhook secret}"
timestamp=$(python3 -c 'import time; print(int(time.time()*1000))')
body='{"amount":"25.00","currency":"USDT","network":"BASE","externalOrderId":"INV-20260209-99281"}'
signature=$(printf '%s.%s' "$timestamp" "$body" | openssl dgst -sha256 -hmac "$BOLTUTIL_WEBHOOK_SECRET" | awk '{print $NF}')

curl --request POST "https://api.boltutil.com/api/v1/order/create" \
  --header 'Content-Type: application/json' \
  --header "X-Bolt-Key: $BOLTUTIL_API_KEY" \
  --header "X-Bolt-Timestamp: $timestamp" \
  --header "X-Bolt-Signature: $signature" \
  --data-binary "$body"

Примерами являются адреса, хеши транзакций и заказы. Замените их собственным тестом data.

Base URL

PROD
https://api.boltutil.com
Все параметры заказа →

Подтверждение и уведомления

Обнаружение не равно подтверждению. Используйте статус и проверенные callbacks: PAID ждёт подтверждения. CONFIRMED / COMPLETED возможны и после ручного принятия; проверьте paidAmount, shortfallAmount и settlementType. COMPLETED не доказывает выдачу товара.

Вопросы интеграции

Поддерживаемая валюта доступна прямо сейчас?

Не обязательно. Сеть и актив должны быть включены, кошелёк и Webhook — действительны. Статическая таблица не показывает текущую доступность.

Может ли клиент округлить сумму?

Оплатите полную payment.amount. Система может округлить вверх и добавить небольшое смещение для различения заказов одного кошелька. Не обрезайте и не округляйте самостоятельно.

Можно выдать товар при росте баланса?

Проверьте подтверждённый результат и подлинность уведомления. Неверные сети, версии, суммы и дубликаты требуют обработки. Рост баланса не заменяет результат оплаты заказа.