Оплата — это несколько состояний
Переход на страницу банка ещё не означает, что заказ оплачен. Система должна получить и проверить подтверждение, сопоставить его с операцией и только после этого выдать нужный результат. Возврат пользователя на сайт и серверное уведомление решают разные задачи.
Возможны задержки, повторные уведомления и завершённая оплата при закрытой вкладке. Эти ситуации учитываем заранее. Пользователь должен видеть актуальное состояние и понимать, требуется ли от него действие.
Связь с учётом
Определяем, что оплачивается: заказ, услуга, пополнение или подписка. Затем связываем платёж с соответствующей записью. Идентификатор операции сохраняется, чтобы повторное уведомление не начисляло результат второй раз.
Для отмен и возвратов нужны отдельные правила. Не подменяем неопределённый результат автоматическим успехом или повторной продажей. При сложной ситуации система сохраняет данные для проверки и показывает сотруднику, что именно известно.
- Создание платёжной операции и переход к провайдеру.
- Проверка уведомлений и повторных запросов.
- Отображение статуса в продукте.
- Обработка возвратов по согласованному сценарию.
Что зависит от провайдера
Возможности платёжного сервиса, условия подключения и необходимое оформление определяет провайдер. На этапе разбора изучаем доступную документацию и тестовую среду. Если продукт использует несколько способов оплаты, для каждого описываем его особенности.
Секретные ключи остаются в серверной части. В логах исключаем чувствительные данные и оставляем информацию, которая нужна для восстановления хода операции. Проверяем сценарии на тестовых платежах до запуска.
Что нужно для начала
Укажите платёжного провайдера, тип операции и то, что должно происходить после подтверждения. Если уже есть действующая интеграция, полезно разобрать её статусы и проблемы до выбора нового решения.