Manuals
RU EN

Продукты · 38

Checkout и оплата в скрипте магазина

Продукты 5 мин чтения

Checkout в скрипте магазина — путь от корзины до статуса «новый заказ» в админке и, если нужно, до онлайн-оплаты. Здесь сыпется конверсия: лишние поля, пропавшая доставка, неочевидная ошибка карты. Я гоняю чеклист на каждом внедрении, пока менеджер не видит заказ без фильтров и шаманства.

Общий контур — мануал магазина. ЮKassa — отдельно.

Шаги checkout, которые должны быть стабильны

  1. Корзина: позиции, цена, количество, сумма.
  2. Контакты покупателя (email/телефон) с валидацией.
  3. Способ доставки и адрес или ПВЗ — доставка.
  4. Способ оплаты: онлайн / при получении / счёт.
  5. Подтверждение: итоговая сумма = товары + доставка − промокод.
  6. Создание заказа в БД → редирект на оплату или страницу «принято».

Обновление страницы на шаге 3 не должно обнулять корзину. Это классический баг сессий на двух доменах (www и без www).

Проверка «заказ до конца» без оплаты

  • Товар с ценой и остатком > 0 кладётся в корзину.
  • Меняю количество — сумма пересчитывается.
  • Оформляю с доставкой «самовывоз».
  • В админке заказ виден сразу, статус «новый».
  • Состав заказа совпадает, цены зафиксированы.
  • Письмо может не уйти — заказ всё равно обязан существовать.
Почта. Настраивайте SMTP после контура заказа. Иначе неделю ловите «почему не работает магазин», а проблема в пароле от почты.

Онлайн-оплата: статусы

Минимальная матрица:

  • pending — ждём оплату;
  • paid — вебхук подтвердил;
  • canceled / failed — не оплачен;
  • refunded — если делаете возвраты из кассы.

Страница success после возврата с платёжки — ещё не оплата. Пользователь мог закрыть вкладку. Истина — webhook + проверка подписи. Повтор вебхука не должен плодить второй заказ или второй списанный остаток.

Промокоды и итог

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

Остатки на checkout

Между «положил в корзину» и «оплатил» товар могут купить. Варианты:

  1. Мягко: проверять остаток при создании заказа и при оплате.
  2. Жёстко: резерв на N минут.

Для вариантов размера/цвета проверка идёт по SKU — варианты. Сообщение «размер закончился» лучше, чем оплата и ручной возврат.

Типичные дыры в UI

  • Кнопка «оплатить» активна при пустом телефоне.
  • Доставка курьером без адреса всё равно проходит.
  • На мобиле поле адреса перекрыто кнопкой «далее».
  • После ошибки оплаты корзина пустая — пользователь ушёл навсегда.
  • Гость и залогиненный пользователь имеют разные корзины без мержа.

Гоняйте сценарий в режиме инкогнито и в обычном Chrome под учётом — оба.

Связка с каталогом и ecommerce

Каталог — каталог, свой хостинг — ecommerce, продукт целиком — магазин PHP. Checkout и оплата — горловина воронки. Сделайте заказ неотрицаемым фактом в админке, статусы оплаты честными, доставку считаемой. Тогда можно звать трафик; иначе вы рекламируете красивую корзину, которая теряет деньги на последнем шаге.

Поля формы: что выкинуть

Каждое лишнее поле режет конверсию. На старте мне достаточно телефона, имени, способа получения и комментария. «Отчество», «компания», «ИНН» — только если B2B и без этого не выставить счёт. Индекс можно угадывать по городу позже; обязательный индекс с маской, которая не принимает село, бесит. Согласие на обработку данных — ссылкой на страницу, не простынёй в середине формы.

  • Телефон нормализую к одному формату в БД.
  • Email — если нужен чек, иначе можно отложить.
  • Адрес — только для методов, где он реально нужен.

После нажатия «оформить»

Пользователь должен увидеть номер заказа и понятный следующий шаг: «ждите звонка», «переходим к оплате», «вот реквизиты». Кнопка «вернуться в каталог» — вторична. В админке заказ появляется до редиректа на оплату; если оплата оборвалась, менеджер всё равно видит попытку и может помочь. Логи ошибок checkout (валидация, остатки, платёжка) пишу отдельно — без этого «у меня не нажимается» не воспроизвести.

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

Коммуникация после заказа

Сразу после оформления покупатель тревожится. Короткий экран «заказ №… принят» + SMS/email, когда почта заработает, снижают повторные звонки «а вы получили?». Если оплата онлайн — честно пишите «ждём оплату» и не обещайте сборку до paid. Если оплата при получении — напишите, кто свяжется и в какой срок. Checkout и оплата в скрипте магазина заканчиваются не кнопкой, а понятным ожиданием.

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

Гость против аккаунта

На старте я часто оставляю гостевой checkout без обязательной регистрации: регистрация в середине покупки режет конверсию. Аккаунт предлагаю после заказа («сохранить для повтора»). Если регистрация обязательна по бизнесу — сделайте её в одну ступень с паролем или magic-link, без капчи на каждом шаге. Checkout оплата в скрипте магазина должна закончиться заказом, а не квестом «вспомните пароль».

Корзину гостя переносите в аккаунт при логине осознанно: объединение позиций с разными вариантами SKU проверьте на дублях. Пустая корзина после «войти» — одна из самых частых жалоб. Поймайте её на приёмке в двух браузерах. Тогда оплата и доставка получают шанс, а не сражаются с багом сессии.

Перед рекламой пройдите checkout на телефоне с доставкой и тестовой оплатой: суммы в письме, админке и кассе должны совпасть. Назначьте, кто каждый день смотрит заказы «ожидает оплаты» старше двух часов — иначе висяки копятся, а покупатель уже пишет в поддержку.

Частые вопросы

Checkout оплата в скрипте магазина?

Заказ должен сохраниться даже если письмо покупателю ещё не уходит.

Сколько времени занимает «Checkout и оплата в скрипте магазина»?

Ориентир по тексту мануала — около 5 мин. На практике зависит от хостинга и подготовки базы.

Нужен ли отдельный сервер?

Для большинства скриптов достаточно хостинга или VDS с PHP и MySQL. Подбор сервера — в разделе VDS и требованиях к PHP/MySQL.

Готовый магазин без wordpress?

Разбор рядом в мануале по этому запросу. готовый магазин без wordpress

Как настроить корзину и оплату в скрипте магазина?

Разбор рядом в мануале по этому запросу. как настроить корзину и оплату в скрипте магазина

Раздел
Скрипт интернет-магазина

От каталога до оплаты и доставки — контур ecommerce на PHP/MySQL.