Async

Жизненный цикл платежа

Все статусы и переходы между ними. Возврат покупателя на return_url и обработка metadata — на отдельной странице.

Все статусы платежа:

СтатусЧто значит
pendingплатёж создан, ждём, что покупатель откроет ссылку и выберет/подтвердит метод
processingпокупатель начал оплачивать, банковская сессия открыта
succeededбанк подтвердил списание. Финальный статус
failedбанк или покупатель отказали. Финальный статус
expiredистёк TTL ссылки или банковской сессии. Финальный статус
cancelledмерчант или покупатель явно отменили платёж. Финальный статус
refundedуспешный платёж полностью возвращён. Финальный статус

Переходы

pending    → processing  покупатель выбрал метод, открылась банк-сессия
pending    → expired     TTL ссылки истёк, никто не оплатил
pending    → cancelled   мерчант или покупатель отменили
processing → succeeded   банк подтвердил списание
processing → failed      банк отклонил
processing → expired     истёк TTL банковской сессии, банк ничего не вернул
succeeded  → refunded    сумма всех успешных refund'ов покрыла amount
TTL ссылки и TTL банковской сессии — это разные часы. expires_at относится к нашей платёжной странице (по умолчанию задаётся мерчантом). processing_until относится к банковской сессии и зависит от метода: SBP — 20 минут (требование НСПК), карты — 15 минут, T-Pay и SberPay — 30.

Платёж создаётся в pending, проходит через промежуточные состояния и доходит до финального — succeeded, failed, cancelled, expired или refunded. В финальном состоянии платёж больше не меняется (кроме переходов в refunded по успешным возвратам).

После финального статуса покупателя редиректит на return_url с query-параметрами — детали в разделе «Возврат покупателя» страницы API Reference. Произвольные метки на платеже — в разделе «Поле metadata».