Ключи хранятся на вашем сервере.

Каждый запрос API мерчанта использует заголовок X-API-Key. Вашим клиентам этот ключ не нужен.

Безопасное хранение данных доступа

Используйте переменные окружения сервера или хранилище секретов. Не помещайте данные доступа в JavaScript страницы оплаты, параметры URL, скриншоты и логи приложения.

Python · на сервере
import os
import requests

response = requests.post(
    "https://api.dedyx.com/api/v1/payments",
    headers={
        "X-API-Key": os.environ["DEDYX_API_KEY"],
        "Idempotency-Key": "order-1024",
    },
    json={
        "amount": "49.00",
        "merchant_wallet": "TRzsBvFUhcvsy45ebmaKZ9EXw7zUorVkUm",
        "description": "Order #1024",
    },
    timeout=15,
)
response.raise_for_status()
payment = response.json()

До этого запроса настройте обязательный вебхук. Явно обрабатывайте HTTP-ошибки. При неопределённом результате создания повторите запрос с исходным ключом идемпотентности.

Ротация API-ключа

POST/api/v1/merchant/rotate-key

Ограничение частоты: 5 запросов / 60 секунд (ротация API-ключа · на секрет ротации). Общие счётчики и дополнительные лимиты по IP.

cURL
curl -X POST https://api.dedyx.com/api/v1/merchant/rotate-key \
  -H 'secret-key: YOUR_ROTATION_SECRET'

Ответ возвращает new_api_key. Предыдущий API-ключ перестаёт работать. Секрет ротации, API-ключ и ключ подписи вебхука независимы. Если секрет ротации утрачен или скомпрометирован, обратитесь в поддержку без передачи секретов. После проверки владельца поддержка может заменить оба секрета API, сохранив аккаунт и историю. Порядок ротации и восстановления.

Квота создания и ограничения частоты

GET/api/v1/merchant/limits

Ограничение частоты: 120 запросов / 60 секунд (общие чтения · на мерчанта). Общие счётчики и дополнительные лимиты по IP.

200 OK · избранные поля
{"merchant_id":"mer_example","access_type":"beta","total_limit":100,"requests_used":3,"requests_left":97,"daily_limit":10,"daily_used":3,"daily_left":7,"creation_allowed":true,"creation_block_reason":null}

Стандартная бета действует 30 дней с явной активации после подтверждения получения данных доступа: 100 успешно созданных новых платежей всего и не более 10 за сутки UTC. Индивидуальные условия могут отличаться. Limits возвращает access_type, status, creation_enabled, creation_allowed, creation_block_reason, beta_duration_days, beta_started_at, beta_expires_at, total_limit, requests_used, requests_left, lifetime_requests_used, daily_limit, daily_used, daily_left, daily_reset_at, server_time и last_api_request_at. Даты в UTC; до активации даты беты равны null. Старые аккаунты сохраняют прежний общий лимит без срока беты и суточного ограничения, пока условия явно не изменены. Общая использованная и оставшаяся квота беты относится к её пакету; история за всё время сохраняется. При переходе на бету предыдущие платежи текущих суток UTC остаются в суточном счётчике. Повторы, чтения и доставка вебхуков не расходуют квоту создания. Автоматического ежемесячного сброса нет. Продление срока не сбрасывает использование и не добавляет квоту. Исчерпание, истечение и пауза блокируют только новые платежи: существующие проверки, защищённые чтения, отмена, ротация ключей и вебхуки продолжаются при активном аккаунте. Суточная квота сбрасывается в 00:00 UTC; общая квота и срок меняются через поддержку. Limits никогда не возвращает данные доступа.

Ссылки на оплату — приватные ссылки

Последний сегмент payment_url — публичный токен конкретного платежа. Передавайте ссылку только нужному клиенту. Она показывает сумму, получателя, описание, статус и срок; не позволяет создавать заказы, менять настройки и получать доступ к аккаунту.

Не помещайте персональные данные и секреты в description. Пересылка ссылки не устанавливает личность плательщика; отмена платежа не закрывает видимость ссылки и не возвращает средства. Конфиденциальность ссылки на платёж.

Далее: Платежи