# Webhook URL

## Описание

Задача этого функционала передать данные об оплаченном счете на сервер продавца. Это нужно для того, чтобы автоматически обработать платеж в магазине продавца и выдать товар или услугу вашему покупателю.

WH URL устанавливается индивидуально для каждого проекта в виде ссылки на скрипты и обработчики платежей внутри магазина продавца.

Каждый раз, когда статус счета сменяется на “Оплачен”, сервис отправляет POST запрос на этот URL в следующем формате:

```json
{
   "wallet":{
      "id":"47aa71e2-07a0-482e-9172-7114d7376ba0",
      "name":"usdt-tron",
      "blockchain":"tron",
      "cryptocurrency":"usdt",
      "address":"TKbstUwMzLrfTAGL4erYb7gc7ghmHQ9zG7"
   },
   "project":{
      "id":"9deea1e2-0c08-41a3-bdc2-a34eada3892d",
      "name":"My project",
      "commissionPayer":"seller",
      "commissionRate":"1"
   },
   "invoice":{
      "id":"a4c9e2ee-9a03-43e5-a1a1-00caf679d16a",
      "uid":"AFhygKX21ecd",
      "createDatetime":"2024-02-26 13:29:24",
      "timeToPayDatetime":"2024-02-27 01:29:24",
      "commissionFiatUSD":"0.05",
      "amountFiatUSD":"5.00",
      "amountFiat":"5.00",
      "calcAmountFiat":"5.02",
      "currencyFiat":"USD",
      "description":null,
      "serviceData":null,
      "status":"paid"
   },
   "payment":{
      "id":"f986ad8d-2298-473d-982a-efbc817b975d",
      "amount":"5.02000000",
      "hash":"74763b65e43bcc9492a6ce9a7f26fbfdbd7635aecd3454420b5e9534cba50ee6",
      "transactionDatetime":"2024-02-26 13:32:57"
   }
}
```

## Параметры запроса

| Параметр                      | Описание                                                                                                                                                                                                                                                                                                                                                   |
| ----------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `wallet.id`                   | ID кошелька в формате UUID                                                                                                                                                                                                                                                                                                                                 |
| `wallet.name`                 | Название кошелька                                                                                                                                                                                                                                                                                                                                          |
| `wallet.blockchain`           | Блокчейн крипто кошелька                                                                                                                                                                                                                                                                                                                                   |
| `wallet.cryptocurrency`       | Криптовалюта кошелька                                                                                                                                                                                                                                                                                                                                      |
| `wallet.address`              | Адрес крипто кошелька                                                                                                                                                                                                                                                                                                                                      |
| `project.id`                  | ID проекта в формате UUID                                                                                                                                                                                                                                                                                                                                  |
| `project.name`                | Название проекта                                                                                                                                                                                                                                                                                                                                           |
| `project.commissionPayer`     | Плательщик комиссии                                                                                                                                                                                                                                                                                                                                        |
| `project.commissionRate`      | Размер комиссии в %                                                                                                                                                                                                                                                                                                                                        |
| `invoice.id`                  | ID счета в формате UUID                                                                                                                                                                                                                                                                                                                                    |
| `invoice.uid`                 | ID счета (для покупателя)                                                                                                                                                                                                                                                                                                                                  |
| `invoice.createDatetime`      | Дата и время создания счета (UTC)                                                                                                                                                                                                                                                                                                                          |
| `invoice.timeToPayDatetime`   | Дата и время, до которого действителен счет (UTC)                                                                                                                                                                                                                                                                                                          |
| `invoice.commissionFiatUSD`   | Сумма комиссии сервиса. Рассчитывается относительно суммы `invoice.amountFiatUSD`                                                                                                                                                                                                                                                                          |
| `invoice.amountFiatUSD`       | Сумма в валюте USD, рассчитанная при создании счета по текущему курсу относительно суммы `invoice.amountFiat`                                                                                                                                                                                                                                              |
| `invoice.amountFiat`          | Сумма в фиатной валюте                                                                                                                                                                                                                                                                                                                                     |
| `invoice.calcAmountFiat`      | Рассчитанная сумма в валюте `invoice.currencyFiat` по курсу криптовалюты на момент оплаты. Этот параметр может отличаться от суммы в `invoice.amountFiat` из-за того, что покупатель мог оплатить счет не сразу после создания, а через некоторое время. За это время курс криптовалюты относительно `invoice.currencyFiat` мог поменяться в любую сторону |
| `invoice.currencyFiat`        | Валюта фиата                                                                                                                                                                                                                                                                                                                                               |
| `invoice.description`         | Описание, которое было задано при создании счета                                                                                                                                                                                                                                                                                                           |
| `invoice.serviceData`         | Служебные данные, которые были заданы при создании счета                                                                                                                                                                                                                                                                                                   |
| `invoice.status`              | Статус счета                                                                                                                                                                                                                                                                                                                                               |
| `payment.id`                  | ID платежа в формате UUID                                                                                                                                                                                                                                                                                                                                  |
| `payment.amount`              | Сумма платежа в криптовалюте                                                                                                                                                                                                                                                                                                                               |
| `payment.hash`                | Хэш транзакции в блокчейне                                                                                                                                                                                                                                                                                                                                 |
| `payment.transactionDatetime` | Дата и время транзакции в блокчейне (UTC)                                                                                                                                                                                                                                                                                                                  |

## Периодичность доставки

По адресу WH URL сервер должен ответить с HTTP кодом 200.

Если ответ сервера будет с HTTP кодом отличным от 200, тогда сервис посчитает уведомление не доставленным. В этом случае сервис будет отправлять повторные запросы на этот WH URL со следующей периодичностью:

* Через 5 минут после последней неудачной доставки
* Через 15 минут
* Через 30 минут
* Через 1 час
* Через 3 часа
* Через 6 часов
* Через 12 часов
* Через 24 часа

Дальнейшие попытки доставки уведомления прекращаются

## Отключение WH URL

Иногда WH скрипт интернет-магазина при корректной обработке платежа отдает HTTP код отличный от 200. Это приводит к частым повторным периодическим запросам нашим сервером по таймингам, указанным в предыдущем разделе, что дает лишнюю нагрузку на наш и клиентский сервер.

Для предотвращения таких случаев у нас работает механизм отключения WH URL в проекте. Чтобы этого не происходило, выполните следующие шаги:

1. Измените программный код WH URL так, чтобы он отдавал HTTP код 200 в случае, если обработка платежа в магазине проведена успешно. Проверьте, используя любой эмулятор, например Postman
2. Напишите в тех. поддержку для коррекции настроек
3. Снова включите WH URL в настройках проекта и сохраните проект


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.bitsby.app/ru/webhook-url.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
