# Т‑Касса: Восстановить статус платежа или заказа

Сценарий из mcp-everything. Актуально на 2026-10-12.

Используй этот сценарий после таймаута, потери ответа или уведомления. Результат — состояние конкретного платежа либо список всех платежей, созданных для заказа.

1. Если известен `PaymentId`, вызови `POST /v2/GetState` и сверь `Amount`, `OrderId`, `Success`, `ErrorCode` и `Status`.
2. Если известен только `OrderId` или для заказа создавались повторные платежи, вызови `POST /v2/CheckOrder`.
3. Выбери нужную запись из `Payments` ответа `POST /v2/CheckOrder` по `PaymentId` и обрабатывай ее текущий `Status`, не полагаясь только на редирект `SuccessURL`.

```bash
curl --request POST 'https://securepay.tinkoff.ru/v2/CheckOrder' \
  --header 'Content-Type: application/json' \
  --data '{
    "TerminalKey": "<TerminalKey>",
    "OrderId": "21057",
    "Token": "<Token>"
  }'
```

## Базовые URL

- Боевой: `https://securepay.tinkoff.ru/v2`
- Тестовый: `https://rest-api-test.tinkoff.ru/v2`

## Авторизация

Тип: Другое

Для каждого подписываемого запроса передавай `TerminalKey` и `Token` в корневом JSON-объекте. `TerminalKey` и секретный `Password` находятся в личном кабинете интернет-эквайринга; `Password` в запрос не передается.

Чтобы получить `Token`, собери корневые параметры запроса, добавь к ним `Password`, исключи `Token`, вложенные объекты и массивы, отсортируй пары по имени ключа, склей только значения и вычисли SHA-256 в UTF‑8. Полученную шестнадцатеричную строку передай в `Token`.

## Методы сценария

### POST /v2/GetState — Получить статус платежа

Возвращает сумму, заказ и текущий статус конкретного платежа.

Документация: https://developer.tbank.ru/eacq/api/get-state

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `TerminalKey` | body | string | да | Идентификатор терминала, до 64 символов |
| `PaymentId` | body | string | да | Идентификатор платежа, до 20 символов |
| `Token` | body | string | да | Подпись запроса |
| `IP` | body | string | нет | IP-адрес покупателя |
| `GetPhone` | body | boolean | нет | Запросить номер телефона |

### POST /v2/CheckOrder — Получить статус заказа

Возвращает массив `Payments` с историей и текущими статусами платежей для одного заказа.

Документация: https://developer.tbank.ru/eacq/api/check-order

| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
| `TerminalKey` | body | string | да | Идентификатор терминала, до 64 символов |
| `OrderId` | body | string | да | Идентификатор заказа, до 50 символов |
| `Token` | body | string | да | Подпись запроса |

## Нюансы

- Все методы используют POST с JSON; имена методов и параметров чувствительны к регистру. Передавай `Content-Type: application/json` и используй TLS 1.2 или выше.
- Суммы передаются в копейках, интернет-эквайринг принимает оплату только в рублях. В `POST /v2/Init` сумма `Amount` должна совпадать с суммой `Receipt.Items.Amount`.
- HTTP 200 не гарантирует успех операции: проверяй `Success`, `ErrorCode` и `Status`. OpenAPI описывает успешный и ошибочный ответ как варианты одного ответа 200.
- Не включай в расчет `Token` вложенные объекты и массивы, в том числе `DATA` и `Receipt`. `Password` добавляется только при расчете подписи и не отправляется.
- Не считай редирект на `SuccessURL` подтверждением оплаты. Проверь уведомление или `POST /v2/GetState` и обязательно сравни `Amount` с ожидаемой суммой заказа.
- Перед обработкой уведомления проверь его `Token`. Ответ должен быть HTTP 200 с телом `OK` заглавными английскими буквами; ожидание ответа — 10 секунд.
- Если `OK` не получен, уведомление повторяется раз в час в течение 24 часов, затем раз в сутки в течение месяца. Архив уведомлений хранится 90 дней.
- Для двухстадийной оплаты `POST /v2/Confirm` вызывается только в статусе `AUTHORIZED`; подтвердить карточный платеж нужно в течение 7 дней, включая день авторизации.
- Возможность платежей по сохраненным реквизитам по умолчанию выключена. `RebillId` нужно брать только из проверенного уведомления родительского платежа.
- Тестовая среда требует добавления IP в белый список. Для нее используется боевой терминал без приставки `DEMO`; тест-кейсы с DEMO-терминалом, наоборот, отправляются на боевой URL.

## Другие сценарии

- [Принять одностадийную оплату](https://mcp-everything.ru/integrations/t-kassa-api/scenarios/prinyat-odnostadiynuyu-oplatu.md)
- [Провести двухстадийную оплату](https://mcp-everything.ru/integrations/t-kassa-api/scenarios/provesti-dvuhstadiynuyu-oplatu.md)
- [Отменить платеж или вернуть деньги](https://mcp-everything.ru/integrations/t-kassa-api/scenarios/otmenit-platezh-ili-vernut-dengi.md)
- [Списать по сохраненным реквизитам](https://mcp-everything.ru/integrations/t-kassa-api/scenarios/spisat-po-sohranennym-rekvizitam.md)

---

Если этого недостаточно — официальная документация: https://developer.tbank.ru/eacq/intro/
Вся интеграция одним документом: https://mcp-everything.ru/integrations/t-kassa-api.md
