Перейти к содержимому

Корзина и оформление заказа: типичные проблемы

На учебном заказе разбираем неизвестную доставку, изменение остатка, ошибки формы, повторную отправку и ожидание оплаты. Даём воспроизводимый план проверки, который помогает отличить созданный заказ от подтверждённого платежа.

Две синие керамические кружки и незавершённая упаковка заказа в магазине; заголовок «ПОЧТИ КУПИЛ. ЧТО ПОШЛО НЕ ТАК?»
Иллюстративная обложка статьи «Корзина и оформление заказа: типичные проблемы».

Номер заказа, переход на платёжную страницу и подтверждённая оплата — разные события. Если сайт смешивает их в одно «Всё готово», покупатель не понимает, нужно ли ещё платить, а магазин рискует получить дубли или начать обработку неоплаченного заказа. Проверять оформление полезнее по состояниям одной покупки, чем по внешнему виду кнопки.

Разберём учебный заказ: покупатель добавляет две одинаковые синие керамические кружки, выбирает доставку по адресу и онлайн-предоплату. Ассортимент, изменения остатка и сообщения в примере вымышлены. Это сценарий проверки, а не история клиента и не правила конкретного магазина. Под отправкой ниже понимается отправка формы заказа на сервер; отгрузка товара происходит позже.

Корзина: выбранный товар ещё не стал заказом

Сначала покупатель должен сверить, что именно он собирается купить: две кружки нужного исполнения, количество, цену за единицу и стоимость товаров. Выбранный цвет и другие существенные параметры должны сохраниться при переходе из карточки товара. Общее название модели без исполнения затрудняет проверку.

Поменяйте количество, уберите товар и верните его. После каждого действия сведения в строке, общая сумма и доступность следующего шага должны согласоваться. Пока пересчёт не закончен, интерфейс должен обозначать это состояние и не выдавать прежний итог за новый. Для пустой корзины нужен понятный путь обратно к товарам, а не доступная кнопка оформления.

В нашем примере адрес пока неизвестен, поэтому стоимость доставки тоже неизвестна. Подпись «Стоимость товаров» точнее, чем «Итого к оплате». Рядом можно показать «Доставка будет рассчитана после ввода адреса». Ноль в строке доставки выглядел бы как бесплатная услуга, хотя расчёта ещё не было.

Удобное оформление начинается с достоверной корзины. Уменьшение числа полей не поможет, если человек перед нажатием кнопки не может проверить состав покупки.

Неизвестная доставка: расчёт, отсутствие услуги и сбой — разные ответы

Покупатель вводит адрес. До получения результата сайт показывает, что рассчитывает доставку. После результата — доступный способ получения, его стоимость и условия, относящиеся к этому адресу и составу корзины.

Теперь представим, что запрос расчёта завершился ошибкой. Это не означает, что доставка невозможна или бесплатна. Подходящее учебное сообщение: «Не удалось рассчитать доставку. Адрес сохранён. Повторите расчёт». Если магазин действительно предлагает другой согласованный способ получения, его можно показать рядом.

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

Если стоимость уточняет менеджер, интерфейс должен прямо объяснить, что сейчас покупатель отправляет заказ на согласование и когда узнает окончательные условия. Такой сценарий нельзя незаметно смешивать с оплатой уже рассчитанной покупки. Для нашего учебного заказа с онлайн-предоплатой сначала восстанавливаем расчёт и показываем согласованный итог. Устройство тарифов подробно разобрано в материале о расчёте доставки.

Изменение остатка: решение нужно вернуть покупателю

Пока покупатель вводил адрес, одна из кружек стала недоступна. В корзине всё ещё указано две, но оформить их на прежних условиях уже нельзя.

Сайт должен сообщить, какое предложение изменилось, и предложить доступное действие. Например: «Сейчас доступна одна синяя кружка. Измените количество или удалите товар». Покупатель выбирает одну, видит новый состав и пересчитанные условия, затем продолжает. Автоматически удалить вторую кружку и сразу списать другую сумму — плохой способ разрешить расхождение: человек не подтвердил новую покупку.

Проверка только при добавлении в корзину недостаточна. До создания заказа сервер должен заново проверить выбранное предложение и возможность продажи. Даже если две вкладки увидели последний товар одновременно, окончательная операция должна соблюдать правила остатка и резерва.

Само правило резерва нельзя угадать по дизайну. Владелец и разработчик заранее определяют, когда товар резервируется, на какой срок и как освобождается при отмене или незавершённой оплате. Корзина сама по себе не должна обещать резерв, если он не предусмотрен. Для товаров под заказ или разрешённого предзаказа нужен отдельный согласованный сценарий.

В учебном процессе мы продолжаем с одной кружкой. Контактные сведения и адрес остаются на месте; покупателю не приходится заполнять форму заново из-за изменения товара.

Отправка: ошибка поля и неизвестный результат требуют разных действий

Перед отправкой покажите состав, доставку и итоговую сумму, а также дайте исправить выбор. Кнопка должна объяснять ближайший результат: например, «Создать заказ и перейти к оплате». Она ещё не подтверждает списание денег.

Если форма содержит ошибку

Допустим, в адресе не хватает обязательного для выбранного способа доставки сведения. Сообщение должно назвать проблему и объяснить исправление рядом с соответствующим полем или в доступном списке ошибок. Красной рамки и общего «Что-то пошло не так» недостаточно.

Правильно заполненные поля сохраняют. Ошибка в адресе не должна удалять имя получателя, контакты, выбранный способ доставки и корзину. После исправления покупатель продолжает тот же процесс. Сохранение ввода здесь относится к данным оформления; оно не означает, что магазин должен сохранять введённые платёжные реквизиты.

На телефоне проверьте, видны ли ошибка и нужное поле при открытой клавиатуре. С клавиатуры компьютера должна сохраняться возможность найти поле и исправить его. Сообщение об ошибке нужно передавать текстом, доступным и для вспомогательных технологий.

Если запрос отправлен, но ответ потерялся

Покупатель нажимает кнопку, видит ожидание и нажимает снова. Затем соединение обрывается. Сайт не получил ответ, но сервер мог уже создать заказ. Поэтому таймаут нельзя автоматически переводить в «Заказ не создан, оформите заново».

На время обработки кнопку можно защитить от повторного нажатия и показать состояние «Отправляем заказ». Этого недостаточно для защиты данных: повторные запросы должны распознаваться и на сервере. Для этого используют идентификатор одной операции и идемпотентную обработку — повтор той же отправки не создаёт второй заказ.

Для владельца критерий прост: повторный клик и восстановление после потерянного ответа должны приводить к одному и тому же заказу, с тем же номером, составом и суммой. Если результат пока неизвестен, интерфейс сообщает об этом и предлагает проверить состояние или восстановить отправку. Разработчик должен обеспечить связь восстановления с исходной операцией, а не запускать новую при каждом нажатии.

Отдельно проверяют повторное создание платежа. Защита записи заказа не означает, что внешняя платёжная операция тоже защищена. У провайдеров есть собственные правила повторов и сроки действия ключей; их нужно учесть в интеграции. Изменение состава после окончательного отказа и восстановление потерянного ответа — разные действия, для которых нельзя бездумно использовать один механизм.

Ожидание оплаты: заказ уже существует, деньги ещё не подтверждены

Восстановленный ответ показывает один созданный заказ на одну кружку. Теперь покупателю доступны номер заказа, состав, итоговая сумма и действие для оплаты. Сообщение «Заказ создан. Ожидаем оплату» описывает это состояние точнее, чем «Покупка завершена».

Заказ создан, ожидание оплаты, оплата подтверждена — три отдельные стадии успешного учебного сценария
Показана только успешная ветвь учебной онлайн-предоплаты. Создание заказа не подтверждает оплату; отказ, отмена и неизвестный результат разобраны в тексте.

Переход на платёжную страницу не подтверждает оплату. Возврат с неё тоже не следует считать достаточным основанием: результат нужно получить и проверить на сервере по правилам провайдера. Например, в API ЮKassa созданный платёж может ожидать действий покупателя, успешно завершиться либо быть отменён. При двухстадийной оплате предусмотрено отдельное состояние авторизованных средств до списания.

Для нашего учебного сценария выбрана обычная онлайн-предоплата. Если покупатель вернулся раньше, чем магазин получил подтверждение, ему показывают ожидание проверки результата. Если оплата отменена, сообщают именно об этом. Если связь с сервисом недоступна, не выдают неизвестный статус за отказ.

Новая попытка оплаты после подтверждённой неудачи может быть отдельной платёжной операцией, привязанной к тому же заказу. Повторять платёж при неизвестном исходе предыдущего нельзя без проверки его состояния. Состав, сумма и допустимость оплаты должны оставаться согласованными с заказом.

Для оплаты при получении правила будут другими: созданный заказ может переходить к обработке без онлайн-платежа. Это решение магазина, которое нужно явно отразить в сообщениях и статусах. Подробности выбора и настройки платёжного решения вынесены в статью о подключении оплаты на сайте.

Подтверждение: согласовать экран, запись заказа и дальнейшую обработку

Оплата учебного заказа подтверждена на сервере. Покупатель видит это состояние, а сотрудник магазина — тот же заказ с соответствующим статусом. На странице остаются номер, оплаченный состав, условия получения и понятный следующий шаг. Само подтверждение оплаты ещё не означает отгрузку.

Покупатель может закрыть вкладку сразу после оплаты и вообще не увидеть страницу результата. Поэтому изменение статуса не должно зависеть от того, загрузил ли он экран «Спасибо». Интеграция должна получать подтверждение независимо от этого перехода, например через серверное уведомление.

Уведомления тоже могут приходить повторно. Повтор подтверждения одного платежа не должен создавать ещё один заказ, повторно менять резерв или запускать дублирующую обработку. Разработчик проверяет подлинность сообщения по правилам сервиса, связь платежа с заказом и соответствие суммы; одного текста «успешно» недостаточно.

Письмо покупателю — отдельный результат. Если оно не отправилось, это не превращает подтверждённую оплату в неуспешную. У магазина должны остаться достоверная запись и возможность обнаружить сбой уведомления. Не нужно предлагать человеку заплатить снова только потому, что письмо не пришло.

Как воспроизвести проблемы до запуска

Попросите разработчика подготовить тестовую среду, управляемый остаток кружек и тестовую оплату. Нужна возможность отдельно задержать ответ создания заказа и отдельно задержать подтверждение платежа. Простое отключение интернета не доказывает, успел ли сервер выполнить операцию.

Сначала пройдите учебную покупку без сбоев и зафиксируйте её состояния. Затем проверяйте каждый случай на новом тестовом заказе с восстановленными исходными условиями. Внутри каждого случая повторные действия относятся к одной покупке.

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

Для проверки конкуренции попросите разработчика одновременно отправить два разных тестовых заказа на последний доступный товар. Результат должен соответствовать принятому правилу продажи и резерва. Это отдельная проверка от двойного клика одного покупателя: два настоящих заказа нельзя считать одним повтором.

Для каждого случая сохраните шаги, ожидаемый результат, скриншот и фактический номер заказа, если он появился. Разработчик сверяет количество записей, связь платежей и переходы состояний по журналу. Для диагностики нужны идентификаторы и события; полные платёжные реквизиты и лишние персональные данные в журнал не включают. Результат записывают после выполнения, без заранее поставленных отметок «Пройдено».

Повторите пользовательскую часть на телефоне и компьютере, включая возврат назад, исправление ошибки и открытие существующего заказа после перезагрузки. Проверка экрана и проверка серверных записей дополняют друг друга: по одной красивой странице нельзя установить отсутствие дублей.

Что передать в работу

Если проблема уже есть, подготовьте конкретный сценарий: на каком состоянии остановилась покупка, что видел человек, появился ли заказ и что известно об оплате. Такой материал помогает определить объём доработки интернет-магазина и проверить исправление тем же способом.

При разработке нового интернет-магазина эти переходы стоит согласовать до реализации. Для каждого нужны источник достоверных данных, допустимое действие покупателя, сообщение при сбое и критерий проверки. Тогда «ошибка оформления заказа» становится конкретной задачей, а не поводом бесконечно менять форму.

Если корзину просто оставили, причина остаётся неизвестной без дополнительных данных. Но воспроизводимый сбой — потеря ввода, неверная сумма, дублирование или ложное подтверждение оплаты — уже даёт проверяемое основание для исправления.

Связанные услуги и материалы

Поделиться

Обсудим сайт для вашего бизнеса

Оставьте имя и телефон — обсудим задачу, формат сайта и предварительную стоимость.

Меню

Меню

Контакты

С чем вам помочь?

Выберите задачу и оставьте контакты.

Что нужно сделать?