# Callback платежной системы

Метод предназначен для оповещения системы проекта о статусе платежа.

### Backoff Policy

Для увеличения гарантий получения ответа используются BackOff-политики при выполнении запросов:

* интервалы между повторными запросами = 500 Millisecond
* Разброс запроса по времени между повторами  = 0.5
* Максимальное время между повторами  = 60 Second
* Время в течении которого будут выполнены попытки  = 10 Minute

#### Callback платежной системой после каждой операции

После завершения оплаты, платежная система делает запрос в проект партнера для передачи состояния платежа. Запрос делается на адрес указанный в поле `callback_url` при [проведении платежа.](https://docs.tarlanpayments.kz/agws/provedenie-platezha)

При получении http статуса отличного от 200  будут выполнены BackOff политики

## Отправка callback-a

<mark style="color:green;">`POST`</mark>`https://merchant-website/result`

#### Headers

| Name                                            | Type   | Description                                                                                                       |
| ----------------------------------------------- | ------ | ----------------------------------------------------------------------------------------------------------------- |
| Authorization<mark style="color:red;">\*</mark> | String | Bearer  Авторотационный хэш (см [Формирование подписи](https://docs.tarlanpayments.kz/agws/formirovanie-podpisi)) |

#### Request Body

<table><thead><tr><th width="193">Name</th><th width="111">Type</th><th>Description</th></tr></thead><tbody><tr><td>status_code</td><td>String</td><td>Код статуса транзакции</td></tr><tr><td>status_message</td><td>String</td><td>Описание статуса транзакции</td></tr><tr><td>username</td><td>String</td><td>Идентификатор пользователя</td></tr><tr><td>amount</td><td>Float</td><td>Зачисленная сумма </td></tr><tr><td>datetime</td><td>String</td><td>Время инициации платежа в системе витрины.Формат ISO 8601 Current Timestamp</td></tr><tr><td>project</td><td>String</td><td>Код Проекта присваиваемый Tarlan-ом</td></tr><tr><td>service_code</td><td>String</td><td>Идентификатор услуги на стороне витрины</td></tr><tr><td>external_id</td><td>String</td><td>Идентификатор платежа на стороне витрины</td></tr><tr><td>fail_reason</td><td>Object</td><td>Поле содержащее <a href="prichina-otkloneniya-operacii">причину неуспеха</a></td></tr><tr><td>-code</td><td>Int</td><td>Код причины отклонения операции</td></tr><tr><td>-message</td><td>String</td><td>Описание причины отклонения операции</td></tr></tbody></table>

```json
{
    "project": "Testing",
    "service_code": "70958",
    "external_id": "proident",
    "status_code": "4",
    "status_message": "Transaction was failed",
    "amount": 100.82,
    "datetime": "fugiat sed",
    "username": "enim culpa eiusmod laborum",
    "fail_reason": {
        "code": 6132012,
        "message": "nulla Ut eu dolore"
    }
}
```
