• Исправление ошибок в WooCommerce-оформлении заказа - дубли оплат, рассинхрон статусов и падения на high-load

    15 часов назад
    • Желаемый бюджет до 850.37 USD
    • Ожидает исполнителя...
  • После обновления WordPress и части плагинов на боевом интернет-магазине (предметная область - продажа автозапчастей, ~8-12 тыс SKU, 300-600 заказов/сутки, пики до 30 заказов/мин) появились критические ошибки в оформлении заказа и в обработке оплат.

    Исходная ситуация и среда
    - WordPress 6.5.x, WooCommerce 8.x
    - PHP 8.2, Nginx + PHP-FPM, MariaDB 10.6
    - Redis object cache, Cloudflare, WP-Cron отключен - используется system cron
    - Платежи: Stripe и локальный эквайринг через отдельный плагин (webhook + callback)
    - Доставка: кастомный модуль расчета тарифов + интеграция с внешним API (таймауты в пике)
    - Есть самописный must-use плагин, который добавляет доп.поля заказа и синхронизирует статусы с 1С через REST

    Симптомы
    - Иногда создаются дубли заказов при оплате картой - один в статусе processing, второй pending
    - Вебхуки Stripe периодически не меняют статус заказа, хотя в Stripe событие доставлено
    - На пике нагрузок часть пользователей видит 500 на /checkout/ и в логах встречаются fatal error и deadlock/lock wait timeout при записи заказа
    - В админке WooCommerce иногда не открывается карточка заказа - белый экран из-за JS-ошибки на странице редактирования

    Что нужно сделать
    - Воспроизвести проблемы в staging, собрать трассировку, выявить первопричины и исправить без отключения ключевых интеграций
    - Разобрать конфликт версий/хуков WooCommerce с самописными плагинами и платежными модулями, устранить двойную обработку событий оплаты и гонки при создании заказа
    - Починить обработку webhooks/callback так, чтобы статусы и метаданные заказа обновлялись ровно один раз, даже при повторной доставке событий и сетевых ретраях
    - Устранить 500-ошибки на checkout, включая проблемы с таймаутами внешнего API доставки и блокировками в БД
    - Исправить JS-ошибку на странице заказа в админке (конфликт скриптов/зависимостей после обновления), не ломая кастомные метабоксы

    Ограничения
    - Работы выполняются с минимальными изменениями темы - все правки через child theme и/или отдельный плагин, без правки ядра WooCommerce/WordPress
    - Нельзя отключать Redis, Cloudflare и системный cron в проде - проверка только через staging и аккуратный релиз
    - Доступы: staging + read-only доступ к логам продакшена, изменения в проде через PR в Git и деплой через существующий pipeline

    Ожидаемый результат
    - Исправления в виде коммитов/PR с понятным описанием причин и решений
    - Набор диагностических логов/метрик (в рамках доступных средств WP/Woo) для контроля повторных ошибок
    - Короткая инструкция, что мониторить и как безопасно откатываться

    Критерии приемки (измеримые)
    1) За 48 часов тестовой эксплуатации на staging при нагрузочном прогоне не возникает дублей заказов - 0 дублей на 1000 тестовых оплат
    2) Stripe webhook/callback идемпотентен - повторная доставка одного и того же события не меняет заказ более 1 раза и не создает новый
    3) При нагрузочном тесте на checkout (минимум 20 rps в течение 30 минут) доля 5xx - не более 0.2%, средний TTFB страницы checkout - до 800 мс на staging
    4) Ошибка админки WooCommerce Orders воспроизводившая белый экран устранена - карточка заказа открывается и сохраняется без JS-ошибок в консоли

    Дополнительно
    - Дам логи Nginx/PHP-FPM, WooCommerce logs, доступ к Git-репозиторию, список последних обновлений и 3-5 примеров проблемных заказов/платежей.
  • Как вы оцениваете это задание?

    Войдите в аккаунт, чтобы оставить свою оценку.

    Всего оценок: 1

Ваше предложение

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

Нужно похожее задание?

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

Задание «Исправление ошибок в WooCommerce-оформлении заказа - дубли оплат, рассинхрон статусов и падения на high-load» можно использовать как ориентир для своего брифа: что нужно сделать, какой результат нужен и какой бюджет указать.