Описать проблему ↗

Оплата и оформление

WooCommerce: деньги списаны, заказ ожидает оплаты

В WooCommerce деньги списаны, а заказ ожидает оплаты. Разберём, как сверить платёж и восстановить подтверждение без повторного списания.

Редакция «починимсайт» · Обновлено · 3 мин. чтения

Что происходит и с чего начать

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

Что можно проверить самостоятельно

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

Как понять результаты проверки

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

Что проверяет разработчик

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

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

На что обратить внимание

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

Как исправляют причину

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

Как убедиться, что проблема решена

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

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