Платежи и их статусы
Счёт описывает заказ, а платёж — конкретную попытку его оплатить. Статус попытки и доступность ссылки следует рассматривать отдельно.
В этой статье
Какие данные нужны платежу#
Счёт хранит условия заказа, а payment — связанную с ним операцию шлюза. Первый запуск резервирует одну постоянную привязку и серверный Idempotency-Key. После начала отправки другой способ оплаты не создаёт второе списание для того же счёта.
GET /api/payment-links и GET /api/v1/payments возвращают владельцу link.payment. Статус ссылки active/paused/cancelled/expired не заменяет статус платежа. Покупатель читает только свою операцию через случайный токен страницы оплаты.
| Данные | Назначение |
|---|---|
| Идентификатор и заказ | Связать попытку с конкретной покупкой |
| Базовая сумма и валюта | Основа расчёта |
| Способ оплаты | Тариф и наличие налога |
| Плательщик НДС | Кто покрывает налог |
| Комиссия, налог и итоги | Зафиксированный расчёт |
| Статус и время | Проверка доступности операции |
| Ссылка на событие шлюза | Источник подтверждения в рабочем режиме |
Состояния реальной операции#
Демо использует отдельные тестовые записи. Переключение состояния в демо не подтверждает реальный платёж и не меняет денежные записи.
| Статус | Значение |
|---|---|
| pending | Операция создана; ожидается действие или результат |
| requires_action | Нужны банковский код или подтверждение покупателя |
| processing | Провайдер ещё подтверждает результат |
| succeeded | Сервер подтвердил точную оплату |
| failed | Попытка завершилась без подтверждённой оплаты |
| expired | Срок реквизитов истёк; сохраняется возможность сверки |
| review_required | Нужна дополнительная проверка; повторно не оплачивайте |
| partially_paid | Получена часть суммы; не создавайте другой платёж |
| partially_refunded | Часть оплаты возвращена |
| refunded | Возврат подтверждён |
| disputed | Операция оспорена |
Источник истины в рабочем режиме#
Подписанный вебхук запускает серверное чтение конкретной операции шлюза. Проверяются идентификаторы, заказ, валюта, способ, базовая и итоговая суммы, live-режим и монотонная версия. Название входящего события само по себе не является доказательством денег.
Статус, квитанция и исходящее событие магазина сохраняются атомарно. Старый ответ не откатывает более новую версию, повтор не создаёт вторую выдачу, а pending не заменяет подтверждённую оплату. Доступный к выводу баланс и выплата из этих данных автоматически не создаются.
Если результат неизвестен#
- 1
Сохраните исходный счёт и идентификатор операции.
- 2
Прочитайте GET /api/checkout/{token}/status; он не создаёт списание.
- 3
При необходимости используйте POST /api/checkout/{token}/reconcile для сверки той же операции.
- 4
Не меняйте метод, сумму или ключ идемпотентности после неизвестного результата.