> ## Documentation Index
> Fetch the complete documentation index at: https://steamgold.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Алгоритм работы

> Описание процесса выставления и оплаты счета

Для пополнения счета вам необходимо создать намерение. Намерение — это запрос на пополнение счета или покупку товара, который вы создаете в нашей системе. После создания намерения, вы можете создать ссылку на платежную форму, на которой вы можете совершить оплату.

<Info>
  Перед тем как создавать намерение, вы можете проверить возможность пополнения счета или доступность товара.
  Для этого можно использовать метод [проверки возможности пополнения](/api-docs/gold/verify) или [проверки доступности товара](/api-docs/items/verify).
</Info>

<Steps>
  <Step title="Создание намерения">
    При создании намерения мы проверяем аккаунт геймера на возможность пополнения и доступность товара.
    В ответе на запрос будет содержаться статус проверки намерения и его идентификатор.
  </Step>

  <Step title="Выставление счета">
    Передавая идентификатор намерения, вы получаете ссылку на платежную форму, которую нужно передать геймеру для оплаты.
  </Step>

  <Step title="Автоматическое зачисление">
    После оплаты, мы обрабатываем оповещение от платежной системы и автоматически зачисляем средства на счет или отправляем покупку геймеру.
  </Step>
</Steps>

### Создание намерения

Для создания намерения на пополнение счета, вам необходимо отправить POST запрос на адрес `/gold` или `/items`. Подробнее о методе создания намерения вы можете прочитать в разделе создание [намерения для пополнения](/api-docs/gold/create) или [намерения для покупки товара](/api-docs/items/create).

```json theme={null}
// Обратите внимание на поле verified
{
  "status": 200,
  "intentId": "5f7b1b4b-7b7b-4b7b-7b7b-7b7b7b7b7b7b",
  "verified": "true"
}
```

<Note>
  Значение `true` в поле `verified` в ответе на запрос означает, что намерение прошло проверку и готово к оплате. Если поле `verified` равно `false`, значит такой аккаунт не может быть пополнен или товар недоступен.
</Note>

В ответе на запрос будет содержаться статус проверки намерения и его идентификатор. После получения идентификатора намерения, вы можете получить ссылку на платежную форму, на которой вы сможете оплатить пополнение счета.

### Получение ссылки на оплату

Для получения ссылки на платежную форму, вам необходимо отправить POST запрос на адрес `/gold/{id}/checkout` или `/items/{id}/checkout`. В адресе запроса вы должны передать идентификатор намерения, который вы получили после создания намерения. Подробнее о методе получения ссылки на платежную форму вы можете прочитать в разделе выставление [счета на пополнение](/api-docs/gold/checkout) или [счета на покупку товара](/api-docs/items/checkout).

```json theme={null}
{
  "code": 200,
  "paymentId": "5555555555",
  "paymentUrl": "https://securepayments.tinkoff.ru/g0ld3Nj0y3R",
  "message": "Payment initiated"
}
```

В ответе на запрос будет содержаться ссылка на платежную форму, которую нужно передать геймеру для оплаты.

### Жизненный цикл намерения

Намерение имеет ограниченный срок жизни — **1 час с момента создания**.<br />
Это означает:

* У пользователя есть 1 час, чтобы завершить оплату.
* По истечении времени намерение автоматически переходит в статус `expired`.
* Оплатить просроченное намерение невозможно — необходимо создать новое.
* При смене статуса на `expired` на указанный `callbackUrl` отправляется webhook с информацией о просрочке намерения.

Ограничение по времени защищает от курсовых рисков, связанных с задержкой оплаты.

<Note>
  Если намерения находятся внутри корзины, то они перестают иметь собственный жизненный цикл и начинают зависеть от цикла корзины. Подробнее в разделе [жизненный цикл корзины](/pouch#жизненный-цикл-корзины).
</Note>

### Результат транзакции

Есть два способа узнать результат транзакции:

* **Webhook** — на ваш сервер будет отправлено уведомление о результате транзакции, в котором будет содержаться информация о статусе транзакции. Подробнее о методе webhook вы можете прочитать в разделе [получение оповещений](/webhooks).
* **Проверка статуса** — вы можете отправить запрос на проверку статуса транзакции, передав в теле запроса идентификатор намерения. Подробнее о методе проверки статуса вы можете прочитать в разделе [проверка статуса](/api-docs/gold/status).
