Datagio Finance API — Платёжные ссылки

Создание и чтение платёжных ссылок. Поддерживается два способа авторизации:

- JWT-токен (дашборд): Authorization: Bearer <token> (роуты /api/v1/...)
- API-ключи (сервер-сервер): заголовки X-API-Key и X-API-Secret (роуты /merchant/v1/...)

Поля и поведение обоих вариантов идентичны.
Base URL:https://api.datagio.finance

Создать платёжную ссылку (JWT)

POST/api/v1/payment-links
Создаёт ссылку на оплату. Магазин должен быть в статусе approved. Покупателю отдаётся checkout_url — страница оплаты (СБП / крипта).

Тело запроса (Request Body)

shop_idstringrequired
Магазин (должен быть approved)
amountnumber | stringrequired
Цена товара в рублях (>0, не более 2 знаков после точки). Число или строка.
Пример: 1000
order_idstring
Ваш внешний ID заказа (вернётся в вебхуке)
descriptionstring
Описание — видит покупатель
expires_in_minutesinteger
Срок жизни ссылки в минутах

Ответы (Responses)

201Ссылка создана
400Некорректный запрос (нет shop_id, amount ≤ 0 или дробнее копейки)
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
401Нет/неверная авторизация
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
403Ресурс принадлежит другому мерчанту
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
404Не найдено
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
422Магазин не прошёл модерацию
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
cURL
curl -X POST https://api.datagio.finance/api/v1/payment-links \
  -H "Authorization: Bearer <your_jwt_token>" \
  -H "Content-Type: application/json" \
  -d '{
  "shop_id": "b79ffcef-5f6e-4adf-aa5f-e885b4d282d9",
  "amount": 1000,
  "order_id": "ORDER-1",
  "description": "Товар",
  "expires_in_minutes": 60
}'

Создать платёжную ссылку (API-ключ)

POST/merchant/v1/payment-links
То же, что POST /api/v1/payment-links, но с авторизацией по API-ключу.

Тело запроса (Request Body)

shop_idstringrequired
Магазин (должен быть approved)
amountnumber | stringrequired
Цена товара в рублях (>0, не более 2 знаков после точки). Число или строка.
Пример: 1000
order_idstring
Ваш внешний ID заказа (вернётся в вебхуке)
descriptionstring
Описание — видит покупатель
expires_in_minutesinteger
Срок жизни ссылки в минутах

Ответы (Responses)

201Ссылка создана
400Некорректный запрос (нет shop_id, amount ≤ 0 или дробнее копейки)
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
401Нет/неверная авторизация
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
403Ресурс принадлежит другому мерчанту
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
404Не найдено
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
422Магазин не прошёл модерацию
errorstring
Машиночитаемый код
messagestring
Человекочитаемое описание
cURL
curl -X POST https://api.datagio.finance/merchant/v1/payment-links \
  -H "X-API-Key: pk_live_your_key" \
  -H "X-API-Secret: sk_live_your_secret" \
  -H "Content-Type: application/json" \
  -d '{
  "shop_id": "b79ffcef-5f6e-4adf-aa5f-e885b4d282d9",
  "amount": 1000,
  "order_id": "ORDER-1",
  "description": "Товар",
  "expires_in_minutes": 60
}'

Уведомление об успешной оплате

Webhookpayment.succeeded
Отправляется на webhook_url магазина, когда платёж по ссылке подтверждён и баланс мерчанта пополнен.

Заголовки: X-Webhook-Event: payment.succeeded; при заданном webhook_secretX-Webhook-Signature = hex(HMAC-SHA256(тело запроса, webhook_secret)).

Доставка: до 8 попыток с экспоненциальным бэкоффом (до 1 часа между попытками). Успех — любой ответ 2xx. Обрабатывайте идемпотентно по payment_link_id.

Содержимое (Payload)

Пример: {"event":"payment.succeeded","data":{"payment_link_id":"9c0526fe-0e45-423d-91ca-368e98b8ea96","shop_id":"b79ffcef-5f6e-4adf-aa5f-e885b4d282d9","order_id":"ORDER-1","amount":"1000.00","merchant_credit":"1000.00","status":"paid","paid_at":"2026-07-15T20:08:54Z"}}
eventstring
dataobject
payment_link_idstring
shop_idstring
order_idstring | null
Ваш внешний ID заказа
amountstring
Цена товара, ₽
Пример: "1000.00"
merchant_creditstring
Зачислено мерчанту, ₽
Пример: "1000.00"
statusstring
paid_atstring

Ожидаемый ответ (Response)

200Подтверждение приёма (любой 2xx). Иначе — повторная доставка.
Пример Payload
{
  "event": "payment.succeeded",
  "data": {
    "payment_link_id": "9c0526fe-0e45-423d-91ca-368e98b8ea96",
    "shop_id": "b79ffcef-5f6e-4adf-aa5f-e885b4d282d9",
    "order_id": "ORDER-1",
    "amount": "1000.00",
    "merchant_credit": "1000.00",
    "status": "paid",
    "paid_at": "2026-07-15T20:08:54Z"
  }
}