Вебхук и коды ошибок

Вебхук

После каждого завершённого платежа Finik отправляет POST-запрос на указанный вами callback-эндпоинт с JSON-телом платежа. Статус платежа приходит в поле status: SUCCEEDED или FAILED.

Проверка подлинности

Каждый запрос подписан приватным ключом Finik, подпись передаётся в заголовке signature. Вы обязаны проверить подпись публичным ключом Finik по тому же алгоритму, что и при подписании запросов (см. Аутентификация).

Prod — public-key.pem
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAuF/PUmhMPPidcMxhZBPb
BSGJoSphmCI+h6ru8fG8guAlcPMVlhs+ThTjw2LHABvciwtpj51ebJ4EqhlySPyT
hqSfXI6Jp5dPGJNDguxfocohaz98wvT+WAF86DEglZ8dEsfoumojFUy5sTOBdHEu
g94B4BbrJvjmBa1YIx9Azse4HFlWhzZoYPgyQpArhokeHOHIN2QFzJqeriANO+wV
aUMta2AhRVZHbfyJ36XPhGO6A5FYQWgjzkI65cxZs5LaNFmRx6pjnhjIeVKKgF99
4OoYCzhuR9QmWkPl7tL4Kd68qa/xHLz0Psnuhm0CStWOYUu3J7ZpzRK8GoEXRcr8
tQIDAQAB
-----END PUBLIC KEY-----
Beta — public-key.pem
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAwlrlKz/8gLWd1ARWGA/8
o3a3Qy8G+hPifyqiPosiTY6nCHovANMIJXk6DH4qAqqZeLu8pLGxudkPbv8dSyG7
F9PZEAryMPzjoB/9P/F6g0W46K/FHDtwTM3YIVvstbEbL19m8yddv/xCT9JPPJTb
LsSTVZq5zCqvKzpupwlGS3Q3oPyLAYe+ZUn4Bx2J1WQrBu3b08fNaR3E8pAkCK27
JqFnP0eFfa817VCtyVKcFHb5ij/D0eUP519Qr/pgn+gsoG63W4pPHN/pKwQUUiAy
uLSHqL5S2yu1dffyMcMVi9E/Q2HCTcez5OvOllgOtkNYHSv9pnrMRuws3u87+hNT
ZwIDAQAB
-----END PUBLIC KEY-----

Пример запроса вебхука

Finik отправляет POST на ваш callback URL. Подпись передаётся в заголовке signature — проверьте её публичным ключом Finik.

POST на ваш callback URL
POST /your/callback/path HTTP/1.1
Host: merchant.example.com
Content-Type: application/json
signature: <signature Finik>

{
  "id": "transaction-id-15423_CREDIT",
  "accountId": "your account id",
  "amount": 100,
  "fields": {
    "amount": 100,
    "fieldId1": "value1",
    "fieldId2": "value2"
  },
  "item": { "id": "generated-item-id" },
  "net": 100,
  "receiptNumber": "some-number",
  "requestDate": 1737369012345,
  "service": { "id": "averspay-items" },
  "status": "SUCCEEDED",
  "transactionDate": 1737369012345,
  "transactionId": "transaction-id-241234",
  "transactionType": "DEBIT",
  "data": {
    "amount": 100,
    "fieldId1": "value1"
  }
}

Поле data присутствует только для WEB-интеграций и содержит переданные вами данные.

Коды ошибок

statusCodeЗначениеПримеры errorMessageМожно повторять
200УспехСтатус платежа SUCCEEDED, FAILED или PROCESSINGДа
201Принято в асинхронную обработкуНет
400Ошибка в запросеTransaction ID is required. · A valid service is required. · Fields must be an object and include all required fields. · An invalid amount is provided. Amount must be greater than 0. · User is disabled. · Source and destination accounts must be different.Нет — исправьте запрос
401Ошибка авторизацииAn invalid or missing Authorization header is provided. · An invalid client ID is provided.Нет — проверьте подпись, ключ и timestamp
402Недостаточно средствInsufficient funds.После пополнения счёта
403Нет правUser has no permissions to access this account. · Client has no permissions to access this payment.Нет
404Ресурс не найденUser does not exist.Нет
409Дубликат транзакцииTransaction with the same ID already exists.Нет — новый transactionId или запросите статус существующего платежа
500Внутренняя ошибка сервераAn unexpected error has occurred.Да
502Поставщик услуг недоступенService "XXX" is temporarily unavailable.Да, позже
503Сервер перегружен или на обслуживанииДа, позже