Вебхук и коды ошибок
Вебхук
После каждого завершённого платежа 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 | Сервер перегружен или на обслуживании | — | Да, позже |