Краткий ответ
Оплата в кабинете связывается с конкретным заказом или обязательством и проверенными правами пользователя. Сумма и доступ определяются сервером, а результат подтверждается надёжным состоянием платежа, а не возвратом браузера.
Определите объект оплаты
Пользователь должен понимать, за какой заказ, счёт или период он платит. Укажите получателя, состав, сумму и допустимые действия. Не объединяйте все финансовые записи общей кнопкой без объяснения. В B2B-сценарии человек может иметь право видеть документ, но не право инициировать оплату от организации.
Сумма берётся из доверенного источника и проверяется сервером. Значение из браузера не должно безусловно определять обязательство. Если цена изменилась, покажите новое состояние и получите необходимое подтверждение действия. Сохранённая старая вкладка не должна позволять оплатить несогласованную сумму или чужой заказ.
Разведите состояния
| Состояние | Что показать | Что разрешить |
|---|---|---|
| Доступно к оплате | Основание и сумму | Начать операцию |
| Ожидается результат | Понятное ожидание | Проверить состояние |
| Подтверждено | Оплаченную часть | Следующий предусмотренный шаг |
| Отказ или отмена | Причину в допустимом объёме | Разрешённую повторную попытку |
Процесс платежа ЮKassa иллюстрирует необходимость различать состояния операции. Для выбранного поставщика проверяйте его контракт и схему проведения. Возврат посетителя на страницу кабинета не является достаточным доказательством оплаты. Подтверждение должно поступать и проверяться предусмотренным серверным способом.
Учтите права и повтор
Перед каждой операцией проверьте пользователя, организацию и принадлежность обязательства. Подмена номера в адресе не должна открывать чужую сумму или документ. B2B-доступ требует отдельной модели, когда человек представляет несколько компаний. Обычный вход подтверждает личность, но не все последующие полномочия.
Повтор запроса после сбоя не должен создавать бесконтрольные платежи. Согласуйте ключ операции и допустимый повтор с провайдером. Идемпотентность помогает сохранить единственный результат, но не заменяет бизнес-правило частичной оплаты. Если она разрешена, остаток обязательства должен рассчитываться по подтверждённым данным.
Учебный пример двух открытых вкладок
В учебном кабинете пользователь открывает один счёт в двух вкладках. После оплаты в первой он нажимает кнопку во второй. Сервер повторно проверяет состояние и объясняет, что обязательство уже исполнено, вместо создания новой операции по устаревшему экрану. История связывает результат с тем же счётом.
Затем проверяют задержанное уведомление: браузер ещё показывает ожидание, но платёж подтверждён у провайдера. Система уточняет состояние и обновляет представление. Пример показывает необходимость согласованной модели, а не обещает мгновенную доставку любого события или универсальный способ проверки всех платёжных API.
Предусмотрите изменение обязательства
Между открытием страницы и оплатой сумма или статус заказа могут измениться. Сервер должен заново проверить допустимость операции, а интерфейс — объяснить актуальные условия. Не используйте показанное ранее значение как единственное основание платежа. Сохраните связь попытки с конкретной версией обязательства в подходящей модели проекта.
Отдельно определите частичную оплату, отмену и возврат, если они входят в процесс. Не все варианты нужно включать в первый выпуск, но недоступные действия должны быть понятны пользователю и поддержке. При разборе обращения сотрудник должен видеть подтверждённое состояние и историю попыток, а не делать вывод только по скриншоту страницы успеха, который прислал клиент.
Подготовьте поддержку и приёмку
Клиенту нужен понятный идентификатор и способ сообщить о спорном состоянии. Поддержка должна видеть связь операции с заказом без запроса секретных платёжных данных в обычной форме. Проверяйте отказ, повтор, старую сумму, чужую организацию и отсутствие доступа после смены роли.
Условия возврата, документов и обработки денег согласуют для фактического бизнеса и поставщика. Техническая реализация не устанавливает их автоматически. Оплата подписки SaaS имеет дополнительные правила периодов и прав. Готовый платёжный раздел показывает достоверную историю и позволяет безопасно продолжить работу после ожидаемого сбоя.
Как поступать при изменении суммы уже открытого счёта
Предположим, клиент открыл оплату, а менеджер скорректировал заказ. Сервер не должен принимать сумму из старой формы как действующую. Перед созданием платежа проверьте актуальную версию обязательства и покажите пользователю изменение до подтверждения.
Если операция уже создана у провайдера, согласуйте, можно ли её завершить и как сверяется результат. В приёмке нужны две вкладки, повтор отправки и задержанное уведомление. Один подтверждённый платёж должен иметь объяснимую связь с конкретным обязательством; лишняя оплата требует отдельного разбирательства, а не молчаливого присвоения другому заказу. Жизненный цикл платежа проверяйте по документации выбранного поставщика и собственной модели оплаты.
Термины из материала
Источники и документация
У каждого документа указана дата последней проверки. Состав функций и интерфейсы сервисов могут меняться. Ссылки открываются в новой вкладке.
- ЮKassa: процесс платежа Проверено
Применить к вашему проекту
Спроектируем оплату в кабинете с проверкой сумм, принадлежности заказа и истории операций.
Обсудить задачу