2.0.1 (2025-09-30)
ИСПРАВЛЕНИЯ
- Исправлена критическая ошибка инициализации блоков в контексте WP Cron
- Устранена ошибка "Call to a member function get_cart_contents() on null" при выполнении cron задач
- Исправлена ошибка "Call to a member function get_available_payment_gateways() on null"
- Добавлена отложенная инициализация (lazy loading) для платежных шлюзов в блочном редакторе
-
Улучшена совместимость с плагинами, фильтрующими доступные способы оплаты
ТЕХНИЧЕСКОЕ
-
Реализована защита от преждевременной инициализации объектов WooCommerce
- Изменен метод получения шлюзов: используется
payment_gateways()
вместо get_available_payment_gateways()
- Добавлены проверки существования объектов
WC()
и WC()->payment_gateways
перед обращением
- Метод
initialize()
больше не вызывает фильтры WooCommerce при первичной загрузке
2.0.0 (2025-09-28)
ГЛАВНОЕ ОБНОВЛЕНИЕ
- Полная поддержка WooCommerce Block Editor (блочного редактора)
- Совместимость с современными темами WordPress (Gutenberg блоки)
- Автоматическая регистрация Яндекс Пей и Yandex Split в блочной корзине и чекауте
- Поддержка иконок и описаний платежных методов в блочном интерфейсе
- Современная архитектура с поддержкой React компонентов
- Build процесс для JavaScript файлов (webpack, babel)
- Плагин полностью реструктуризирован: теперь он одинаково стабильно работает и с классическим, и с блочным чекаутом
- Добавлена поддержка возвратов через Яндекс API
МАКСИМАЛЬНАЯ ОПТИМИЗАЦИЯ БД
- Устранено последнее предупреждение о meta_key запросах
- Заменены все запросы с meta_key на глобальную функцию delete_metadata()
-
Максимально эффективное удаление метаданных при деинсталляции
ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ
-
Устранено предупреждение о медленном meta_query запросе
- Использование fields => 'ids' для получения только ID заказов
-
Прямое удаление метаданных через delete_post_meta()
РЕЗУЛЬТАТ
-
Значительно улучшена производительность при удалении плагина
- Плагин полностью готов для WordPress.org, пройдены все проверки Plugin Check
ИСПРАВЛЕНИЯ НАЗВАНИЙ
- Унифицированы названия платежных сервисов во всем плагине
- Все "Яндекс.Сплит" заменены на "Яндекс Сплит" (убрана точка)
-
Все "Yandex Pay", "Яндекс Pay", "Яндекс.Пэй", "Яндекс Пэй" заменены на "Яндекс Пей"
РЕЗУЛЬТАТ
-
Единообразное написание названий
- Улучшенный пользовательский опыт
- Оптимизированный размер плагина
ВОЗВРАТЫ
- Исправлена логика проверки доступной суммы для возврата
- Поддержка повторной отправки существующих возвратов в Яндекс API
- Устранено дублирование WooCommerce refunds при API ошибках
- Добавлено детальное логирование сумм и статусов возвратов
ПОЛЬЗОВАТЕЛЬСКИЙ ОПЫТ
- Замена HTML-тегов на простой текст в сообщениях об ошибках
- Понятные инструкции при отсутствии настроек (Merchant ID, API ключ)
- Проверка формата Merchant ID (UUID) с информативными сообщениями
1.0.13
- Дата: 2025-08-23
- Мелкие доработки
1.0.12
- Дата: 2025-08-03
- КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ: Устранена ошибка ORDER_AMOUNT_MISMATCH при создании платежей
- Исправлено: Точность расчета сумм с учетом скидок и округлений
- Исправлено: Погрешности в распределении скидок по товарам
- Улучшено: Алгоритм коррекции итоговых сумм для соответствия требованиям API Яндекса
- Улучшено: Точность математических операций с денежными суммами
- Добавлено: Автоматическая коррекция погрешностей округления в последнем товаре корзины
- Добавлено: Дополнительное логирование для отладки расчетов сумм
- Техническое: Соответствие WordPress Coding Standards для интернационализации
- Техническое: Добавлены комментарии переводчика для всех локализуемых строк
- Техническое: Упорядочены плейсхолдеры в переводимых строках (%1$s, %2$s)
Детали исправления ошибки ORDER_AMOUNT_MISMATCH
Ошибка возникала из-за несоответствия формулы:
cart_total = items_sum - discounts_sum
- Добавлено точное округление на всех этапах расчетов (round с 2 знаками)
- Реализована проверка соответствия calculated_total с woocommerce_total
- При расхождении ≥0.01 выполняется автоматическая коррекция последнего товара
- Улучшено распределение остатков скидок между товарами
- Добавлена финальная валидация всех сумм перед отправкой в API
Техническое описание
- Все денежные операции теперь выполняются с
round($value, 2)
- Добавлена проверка
abs($calculated_total - $woocommerce_total) >= 0.01
- Реализована коррекция через adjustment последнего товара в корзине
- Улучшено логирование с выводом всех промежуточных сумм для отладки
- Приведение к стандартам WordPress для корректной локализации
1.0.11
- Дата: 2025-07-20
- Добавлено: Защита от изменения статуса заказов, оплаченных другими платежными системами
- Добавлено: Интеллектуальная обработка вебхуков с учетом способа оплаты
- Улучшено: Логика обработки статусов заказов для предотвращения конфликтов между платежными системами
- Улучшено: Обработка легитимных операций отмены/возврата для заказов Яндекс
- Исправлено: Проблема с отменой оплаченных заказов при получении вебхука от Яндекс после оплаты другим способом
Защита заказов
- Если заказ был оплачен через другую платежную систему, вебхуки от Яндекс больше не будут менять его статус
- Заказы, оплаченные через Яндекс, корректно обрабатывают операции отмены и возврата из личного кабинета Яндекс
- Добавлены информативные заметки к заказам при попытках изменения статуса
Техническое описание
- Метод
process_order_status_from_webhook
теперь проверяет способ оплаты заказа перед применением изменений
- Добавлена проверка
$is_yandex_payment
для определения источника оплаты
- Улучшено логирование для отслеживания всех попыток изменения статусов
1.0.10
- Дата: 2025-06-17
- Добавлено: Расширенная обработка вебхуков Яндекс Пей
- Добавлено: Гибкая система маппинга статусов платежей
- Добавлено: Кастомные фильтры для разработчиков
- Улучшено: Рефакторинг обработки вебхуков для повышения надежности
- Улучшено: Логирование операций с платежами
- Улучшено: Безопасность обработки входящих запросов
Фильтры для разработчиков
-
yandex_pay_webhook_status_map
Изменяет соответствие статусов Яндекс → WooCommerce
Параметры:
-
$status_map (array) - Текущий маппинг статусов
- $order (WC_Order) - Объект заказа
-
$payment_status (string) - Статус от Яндекс
Пример:
add_filter('yandex_pay_webhook_status_map', function($status_map, $order, $payment_status) {
$status_map['CAPTURED'] = 'completed';
return $status_map;
}, 10, 3);
-
yandex_pay_before_process_status
Изменяет статус перед применением к заказу
Параметры:
-
$new_status (string) - Планируемый статус
- $payment_status (string) - Статус от Яндекс
- $order (WC_Order) - Объект заказа
-
yandex_pay_handle_webhook_status
Полная кастомная обработка статуса (возврат true отменяет стандартную обработку)
Параметры:
-
$handled (bool) - Флаг обработки
- $payment_status (string) - Статус от Яндекс
- $order (WC_Order) - Объект заказа
-
yandex_pay_status_change_note
Изменяет заметку при смене статуса заказа
Параметры:
-
$note (string) - Текст заметки
- $order (WC_Order) - Объект заказа
- $old_status (string) - Старый статус
- $new_status (string) - Новый статус
-
yandex_pay_partial_refund_note
Изменяет заметку для частичного возврата
Параметры:
-
$note (string) - Текст заметки
- $order (WC_Order) - Объект заказа
Улучшения безопасности
- Усилена валидация входящих данных
- Улучшена обработка ошибок декодирования
Исправлено
- Проблемы с обработкой статуса PARTIALLY_REFUNDED
1.0.9
- В платежном шлюзе Яндекс Сплит реализована динамическая смена иконки в зависимости от выбранного способа оплаты
- При выборе "Сплит" отображается стандартная иконка Сплита
- При выборе "Карта + Сплит" отображается комбинированная иконка
1.0.8
Улучшено распределение скидок
- Все типы скидок (купоны, бонусы, отрицательные сборы) суммируются в общую сумму скидки
- Скидки распределяются пропорционально по товарам
- Остаток скидки добавляется к последнему товару для точного распределения
Улучшено формирование корзины
- Для товаров с количеством > 1 создаются отдельные позиции
- Скидка равномерно распределяется между единицами товара
- Скидки применяются только к товарам (не к доставке и сборам)
1.0.7
- Реализовано разделение стилей
- Мелки исправления
- Улучшена документация
1.0.6
Основные изменения:
- Добавлены отдельные платежные шлюзы:\
•
Яндекс Сплит
— оплата частями\
• Яндекс Пей
— классическая оплата картой
- Реализовано разделение общей логики в базовый класс (
WC_Yandex_Base_Gateway
)
- Улучшено хранение ссылок платежей:\
• Платежные URL сохраняются в метаданные заказа\
• Исключено повторное создание платежей для существующих заказов
1.0.5
- Исправлена совместимость с WooCommerce 8.7
- Обновлены тестовые сценарии для PHP 8.3
1.0.4
- Добавлена поддержка мультиязычных сайтов
- Оптимизирована загрузка скриптов
1.0
- Первый релиз
- Базовая интеграция Яндекс Пей/Сплит
- Поддержка классического редактора