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