KosTeams Payments for Yandex Pay and Yandex Split для WooCommerce

Описание

Этот плагин добавляет популярные способы оплаты Яндекса в ваш магазин WooCommerce:
Яндекс Пей: Мгновенная оплата картой без ввода реквизитов.
Яндекс Сплит: Беспроцентная рассрочка на срок до 6 месяцев.
Комбинированная оплата: Часть оплатить картой, остальное — в рассрочку.

Совместимость с современными технологиями

  • Полная поддержка блочного редактора WooCommerce — плагин работает как с классическим, так и с блочным оформлением заказа
  • Совместимость с Gutenberg — интеграция с современными темами WordPress
  • React-компоненты — современная архитектура для высокой производительности

Для расширенных функций (бейджи рассрочки, виджеты в корзине и каталоге) доступна PRO версия.

Важная информация о фискализации

Обратите внимание: При использовании Яндекс Пей и Яндекс Сплит необходимо соблюдать требования российского законодательства по фискализации платежей.

Требования 54-ФЗ

Согласно Федеральному закону «О применении контрольно-кассовой техники» (54-ФЗ):
— Фискальные чеки должны формироваться при всех формах безналичных платежей
— Яндекс Пей и Яндекс Сплит не отправляют фискальные чеки автоматически
— Продавец несёт ответственность за соблюдение требований фискализации

Возможные решения

Для соответствия требованиям 54-ФЗ рассмотрите следующие варианты:
— Интеграция с онлайн-кассами (АТОЛ, Эвотор, ОФД и др.)
— Использование специализированных плагинов для автоматического формирования чеков
— Настройка API-интеграции с поставщиком фискальных услуг
— Консультация с сертифицированными интеграторами кассового оборудования

Штрафы за несоблюдение

  • Для индивидуальных предпринимателей: от 10 000 рублей за нарушение
  • Для юридических лиц: от 30 000 рублей за нарушение
  • Деятельность может быть приостановлена на срок до 90 дней

Рекомендация: Обязательно настройте фискализацию перед приёмом платежей через Яндекс Пей. За подробной консультацией обратитесь к бухгалтеру или поставщику онлайн-кассы.

Возможности версий

Бесплатная версия включает:
— Поддержку Яндекс Пей и Яндекс Сплит
— Комбинированную оплату (карта + рассрочка)
— Настройку через интерфейс WooCommerce
— Совместимость с классическим и блочным редактором Gutenberg

PRO версия добавляет:
— Бейджи рассрочки/кешбэка на страницах товаров
— Бейджи рассрочки/кешбэка в каталоге товаров
— Платёжные виджеты в корзине и каталоге
— Кнопку оплаты Яндексом на странице оформления заказа
— 20+ вариантов расположения элементов

Рекомендуемые дополнения

Для полного соответствия российскому законодательству и расширения функциональности рекомендуются следующие решения:

Фискализация платежей (обязательно для соответствия 54-ФЗ)

KosTeams ATOL Receipts — Специализированный плагин для автоматической фискализации платежей через Яндекс Пей и Яндекс Сплит.

Ключевые возможности:
— Автоматическое формирование фискальных чеков через АТОЛ Онлайн для каждого платежа
— Полная поддержка ATOL API v4 и v5
— Автоматическое определение платежей Яндекс Пей и Яндекс Сплит
— Поддержка HPOS (High-Performance Order Storage)
— Автоматические чеки возврата при отмене заказов
— Мониторинг статуса фискализации в реальном времени
— Подробное логирование для диагностики

Почему именно этот плагин:
— Разработан специально для интеграции с платёжными системами Яндекса
— Автоматически определяет платежи, требующие фискализации
— Полностью соответствует требованиям 54-ФЗ
— Протестирован совместно с данным плагином

Альтернативные решения для фискализации

  • Другие плагины интеграции с АТОЛ Онлайн
  • Решения для интеграции с Эвотор
  • Модули для подключения к другим провайдерам ОФД
  • API-интеграция с поставщиком кассового оборудования

Повышение конверсии

KosTeams Payments for Yandex Pay and Yandex Split for WooCommerce Pro — Расширенная версия плагина с дополнительными функциями:
— Бейджи рассрочки/кешбэка на страницах товаров и в каталоге
— Платёжные виджеты в корзине и на страницах товаров
— 20+ вариантов расположения элементов
— Расширенные настройки дизайна и поведения

Важно: Независимо от выбранного решения для фискализации, его настройка обязательна перед приёмом платежей через Яндекс Пей для соответствия требованиям 54-ФЗ.

Ссылки

Лицензия

Этот плагин распространяется по лицензии GPLv2. Расширенные функции доступны в PRO версии.

Поддержка и безопасность

Безопасность платежей

  • Все транзакции обрабатываются через защищённые серверы Яндекса
  • Данные карт не хранятся на вашем сайте
  • Соответствие стандарту PCI DSS

Юридическое соответствие

  • Плагин обеспечивает техническую интеграцию с платёжными системами
  • Соответствие требованиям фискализации (54-ФЗ) требует дополнительных решений
  • Рекомендуется консультация с юристами и бухгалтерами

Получение поддержки

  • Техническая поддержка через официальные каналы
  • Документация и FAQ на сайте разработчика
  • Сообщество пользователей для обмена опытом

Скриншоты

Установка

  1. Установите плагин через панель администрирования WordPress.
  2. Активируйте плагин в разделе «Плагины».
  3. Перейдите в WooCommerce Настройки Платежи Yandex Pay и Yandex Split.
  4. Введите Merchant ID и API-ключ (получены через партнёрское соглашение с Яндексом).
  5. Включите нужные способы оплаты и сохраните изменения.
  6. Важно: Настройте фискализацию платежей в соответствии с 54-ФЗ.

Часто задаваемые вопросы

Почему платёж не проходит?

Проверьте, прошёл ли ваш магазин модерацию в личном кабинете Яндекс Пей (должен быть зелёный статус). Если статус серый, оплата будет работать только в тестовом режиме.

Нужен ли договор с Яндексом?

Да, плагин требует подключения к Яндекс Пей через партнёрское соглашение.

Почему способ оплаты не отображается на странице оформления заказа?

Способ оплаты отображается только если он включён в настройках WooCommerce и соответствует условиям (например, валюта, страна или способ доставки).
Проверьте:
1. Включён ли способ в WooCommerce Настройки Платежи.
2. Правильно ли настроены условия доступности.
3. Нет ли конфликтов с другими плагинами или темой.

Как работает Сплит для покупателя?

Покупатель оформляет заказ, вносит первый платёж и сразу получает товар. Оставшиеся платежи списываются по графику. Магазин получает полную сумму сразу, как при обычной покупке.

Как добавить бейджи рассрочки на страницы товаров?

Эта функция доступна в PRO версии, которая позволяет настраивать дизайн, расположение и условия отображения элементов.

Почему виджеты не отображаются в корзине?

Интеграция с корзиной и страницей оформления заказа поддерживается в PRO версии. Бесплатная версия обеспечивает базовую реализацию платежей.

Как тестировать в режиме песочницы?

Используйте тестовые данные, предоставленные Яндексом. Реальные деньги списываться не будут.

Как обеспечить фискализацию платежей?

Яндекс Пей не отправляет фискальные чеки автоматически. Рекомендуемые решения:

Готовое решение (рекомендуется):
KosTeams ATOL Receipts — специализированный плагин, автоматически отправляющий чеки для всех платежей Яндекс Пей и Яндекс Сплит

Альтернативные варианты:
— Подключить онлайн-кассу (АТОЛ, Эвотор и др.) и настроить API-интеграцию
— Использовать другие плагины фискализации
— Разработать собственную интеграцию с ОФД
— Обратиться к поставщику кассового оборудования

Какие штрафы грозят за отсутствие фискализации?

Согласно 54-ФЗ, штрафы за неприменение контрольно-кассовой техники начинаются от 10 000 рублей для ИП и от 30 000 рублей для юридических лиц за каждое нарушение.

Отзывы

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

Участники и разработчики

«KosTeams Payments for Yandex Pay and Yandex Split для WooCommerce» — проект с открытым исходным кодом. В развитие плагина внесли свой вклад следующие участники:

Участники

«KosTeams Payments for Yandex Pay and Yandex Split для WooCommerce» переведён на 1 язык. Благодарим переводчиков за их работу.

Перевести «KosTeams Payments for Yandex Pay and Yandex Split для WooCommerce» на ваш язык.

Заинтересованы в разработке?

Посмотрите код, проверьте SVN репозиторий, или подпишитесь на журнал разработки по RSS.

Журнал изменений

2.0.6 (2026-03-05)

Фискализация
* Поддержка облачной кассы для Яндекс Пей: передача данных receipt (НДС, тип способа оплаты, тип предмета расчёта, единица измерения)
* Автоопределение ставки НДС из WooCommerce или принудительный режим «Без НДС»
* Фильтр kosteams_payments_for_yandex_item_receipt для кастомизации

Совместимость с плагинами кошельков
* Отрицательные сборы (кошельки, сертификаты) пропускаются, значения total товаров пересчитываются пропорционально
* Удалён externalAmount — работает без специальных разрешений API
* Полная совместимость с TeraWallet, WooCommerce Wallet и другими

Исправления ошибок
* JWT-вебхук: используется полный набор ключей JWKS (JWK::parseKeySet) вместо только последнего ключа
* Возврат: targetCart включает НДС, корректный orderId для CARD_SPLIT
* Исправлено PHP Notice для $existing_payment_url при ошибке 409
* Вебхук регистрируется однократно (статический флаг)
* Информационное логирование API только при включённом debug_mode, ошибки логируются всегда

Улучшения
* API-ключ скрыт (type=password)
* Убрана загрузка Yandex Pay SDK из базового плагина (обрабатывается PRO версией)
* Удалено неиспользуемое: class-validator.php, дублирующийся get_order_info(), дублирующаяся валидация в create_payment()
* Версия CSS привязана к версии плагина
* Интернационализация (i18n) для заметок о возвратах в заказах

2.0.5 (2026-01-23)

Обслуживание:
* Синхронизирована константа YPS_KOSTEAMS_VERSION с заголовком плагина
* Аудит кода на соответствие документации WooCommerce Payment Gateway API
* Аудит кода на соответствие документации Yandex Pay Web SDK
* Обновлены ссылки на страницу плагина
* Обновлена библиотека firebase/php-jwt до v6.11.1

2.0.4 (2025-11-11)

КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ: Расчёт НДС при создании платежа

ПРОБЛЕМА:
* При включённом НДС в WooCommerce возникало расхождение сумм:
— Итог заказа в WooCommerce (с НДС): например, 1200 руб.
— Сумма, отправленная в Yandex Pay API (без НДС): например, 1000 руб.
— Результат: ОШИБКА — платёж не создавался из-за расхождения сумм

ПРИЧИНА:
* $item->get_total() возвращает сумму БЕЗ налогов
* $order->get_total() возвращает сумму С налогами
* При расчёте calculated_total налоги не учитывались, что вызывало расхождение с woocommerce_total

ИСПРАВЛЕНО в includes/class-gateway.php:

  1. Товары (строка 794):

    • БЫЛО: $line_total = round((float)$item->get_total(), 2);
    • СЕЙЧАС: $line_total = round((float)$item->get_total() + (float)$item->get_total_tax(), 2);
  2. Доставка (строка 820):

    • БЫЛО: $shipping_cost = round((float)$shipping_item->get_total(), 2);
    • СЕЙЧАС: $shipping_cost = round((float)$shipping_item->get_total() + (float)$shipping_item->get_total_tax(), 2);
  3. Сборы (строка 836):

    • БЫЛО: $fee_amount = round((float)$fee_item->get_total(), 2);
    • СЕЙЧАС: $fee_amount = round((float)$fee_item->get_total() + (float)$fee_item->get_total_tax(), 2);

РЕЗУЛЬТАТ:
* В Yandex Pay API теперь отправляется полная сумма С НДС
* Итог заказа WooCommerce = итог Яндекс Пей (100% совпадение)
* Нет расхождений между панелью управления и платёжной системой
* Покупатель оплачивает правильную сумму, отображённую в корзине

ВАЖНО: Это критическое исправление для всех магазинов, использующих налоги/НДС в WooCommerce. Рекомендуется немедленное обновление.

2.0.3 (2025-10-27)

КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ: Точность расчёта сумм
* Полностью переписана логика расчёта данных для Yandex API
* Исправлено расхождение сумм между WooCommerce и данными, отправляемыми в Яндекс
* Теперь используются нативные методы WooCommerce для получения итогов по товарам

Исправлено:
ПРОБЛЕМА: Плагин вручную рассчитывал и распределял скидки по всем товарам пропорционально, что приводило к некорректному распределению (купоны применялись ко всем товарам, даже если были настроены только для определённых)
ИСПРАВЛЕНО: Теперь используется $item->get_total() — WooCommerce корректно рассчитывает итоговую сумму с учётом всех скидок

  • ПРОБЛЕМА: Товары с количеством > 1 разбивались на отдельные позиции с количеством = 1, что вызывало проблемы с округлением
  • ИСПРАВЛЕНО: Товары теперь отправляются с фактическим количеством

  • ПРОБЛЕМА: При несовпадении итогов последний товар корректировался, маскируя логические ошибки

  • ИСПРАВЛЕНО: Больше нет корректировок, суммы совпадают точно

  • ПРОБЛЕМА: Отправлялись лишние поля (unitPrice, discountedUnitPrice, subtotal), которые не требуются для Яндекс Сплит

  • ИСПРАВЛЕНО: Отправляется только total с точной итоговой суммой

Результат:
* Данные Яндекса = данные WooCommerce (100% совпадение)
* Код сокращён с ~270 строк до ~70 строк (упрощение в 4 раза)
* Нет ручных расчётов и корректировок
* Все скидки (купоны, промокоды, программы лояльности) применяются корректно

Техническое:
* Упрощена структура данных cart.items[]:
— Обязательные поля: productId, title, quantity.count, total
— Необязательные поля: description
— Удалены: unitPrice, discountedUnitPrice, subtotal (не требуются API)
* Удалён блок расчёта бонусных скидок (строки 782-817)
* Удалена логика распределения скидок (строки 826-877)
* Удалена логика разделения товаров (строки 898-937)
* Удалена корректировка последнего товара (строки 1023-1051)

2.0.2 (2025-10-09)

Исправления безопасности:
— Описания товаров теперь очищаются от HTML-тегов перед отправкой во внешние системы

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»
* Добавлена отложенная загрузка платёжных шлюзов в блочном редакторе
* Улучшена совместимость с плагинами, фильтрующими доступные способы оплаты

ТЕХНИЧЕСКОЕ
* Реализована защита от преждевременной инициализации объектов WooCommerce
* Изменён способ получения шлюзов: используется payment_gateways() вместо get_available_payment_gateways()
* Добавлены проверки существования объектов WC() и WC()->payment_gateways перед доступом
* Метод initialize() больше не вызывает фильтры WooCommerce при начальной загрузке

2.0.0 (2025-09-28)

КРУПНОЕ ОБНОВЛЕНИЕ
* Полная поддержка блочного редактора WooCommerce
* Совместимость с современными темами WordPress (блоки Gutenberg)
* Автоматическая регистрация Яндекс Пей и Яндекс Сплит в блочной корзине и оформлении заказа
* Иконки и описания способов оплаты в блочном интерфейсе
* Современная архитектура с поддержкой React-компонентов
* Процесс сборки JavaScript-файлов (webpack, babel)
* Плагин полностью реструктурирован: теперь одинаково стабильно работает с классическим и блочным оформлением заказа
* Добавлена поддержка возвратов через Yandex API

МАКСИМАЛЬНАЯ ОПТИМИЗАЦИЯ БД
* Устранено последнее предупреждение о запросе meta_key
* Все запросы meta_key заменены глобальной функцией delete_metadata()
* Максимальная эффективность удаления метаданных при деинсталляции

ОПТИМИЗАЦИЯ ПРОИЗВОДИТЕЛЬНОСТИ
* Устранено предупреждение о медленном meta_query
* Использование fields => ‘ids’ для получения только ID заказов
* Прямое удаление метаданных через delete_post_meta()

РЕЗУЛЬТАТ
* Значительно улучшена производительность при удалении плагина
* Плагин полностью готов для WordPress.org, все тесты Plugin Check пройдены

ИСПРАВЛЕНИЯ НАИМЕНОВАНИЙ
* Унифицированы названия платёжных сервисов по всему плагину
* Все варианты приведены к единообразному наименованию

РЕЗУЛЬТАТ
* Единообразие в наименованиях
* Улучшенный пользовательский опыт
* Оптимизированный размер плагина

ВОЗВРАТЫ
* Исправлена логика проверки доступной суммы возврата
* Поддержка повторной отправки существующих возвратов в Yandex API
* Устранено дублирование возвратов WooCommerce при ошибках API
* Добавлено подробное логирование сумм и статусов возвратов

ПОЛЬЗОВАТЕЛЬСКИЙ ОПЫТ
* HTML-теги в сообщениях об ошибках заменены на обычный текст
* Понятные инструкции при отсутствии настроек (Merchant ID, API-ключ)
* Валидация формата Merchant ID (UUID) с информативными сообщениями

1.0.13

  • Дата: 2025-08-23
  • Мелкие улучшения

1.0.12

  • Дата: 2025-08-03
  • КРИТИЧЕСКОЕ ИСПРАВЛЕНИЕ: Исправлена ошибка ORDER_AMOUNT_MISMATCH при создании платежей
  • Исправлено: Точность расчёта сумм со скидками и округлением
  • Исправлено: Неточности распределения скидок по товарам
  • Улучшено: Алгоритм корректировки итогов для соответствия требованиям Yandex API
  • Улучшено: Математическая точность денежных расчётов
  • Добавлено: Автоматическая корректировка ошибки округления в последнем товаре корзины
  • Добавлено: Дополнительное логирование для отладки расчёта сумм
  • Техническое: Соответствие WordPress Coding Standards для интернационализации
  • Техническое: Добавлены комментарии для переводчиков ко всем локализуемым строкам
  • Техническое: Упорядоченные плейсхолдеры в переводимых строках (%1$s, %2$s)

ORDER_AMOUNT_MISMATCH Fix Details

Ошибка возникала из-за несоответствия формулы: cart_total = items_sum - discounts_sum
* Добавлено точное округление на всех этапах расчёта (round с 2 десятичными знаками)
* Реализована проверка calculated_total vs woocommerce_total
* Автоматическая корректировка последнего товара при расхождении >= 0.01
* Улучшено распределение оставшихся скидок по товарам
* Добавлена финальная валидация всех сумм перед отправкой в API

Technical Description

  • Все денежные операции теперь используют round($value, 2)
  • Добавлена проверка abs($calculated_total - $woocommerce_total) >= 0.01
  • Реализована корректировка через последний товар в корзине
  • Улучшено логирование с выводом всех промежуточных сумм для отладки
  • Приведено к стандартам WordPress для корректной локализации

1.0.11

  • Дата: 2025-07-20
  • Добавлено: Защита от изменения статуса заказов, оплаченных через другие платёжные системы
  • Добавлено: Интеллектуальная обработка вебхуков с учётом способа оплаты
  • Улучшено: Логика обработки статусов заказов для предотвращения конфликтов между платёжными системами
  • Улучшено: Обработка легитимных операций отмены/возврата для заказов Яндекса
  • Исправлено: Проблема с отменой оплаченных заказов при получении вебхука Яндекса после оплаты другим способом

Order Protection

  • Если заказ был оплачен через другую платёжную систему, вебхуки Яндекса больше не изменяют его статус
  • Заказы, оплаченные через Яндекс, корректно обрабатывают операции отмены и возврата из панели Яндекса
  • Добавлены информативные заметки к заказам при попытках смены статуса

Technical Description

  • Метод process_order_status_from_webhook теперь проверяет способ оплаты заказа перед применением изменений
  • Добавлена проверка $is_yandex_payment для определения источника платежа
  • Улучшено логирование для отслеживания всех попыток смены статуса

1.0.10

  • Дата: 2025-06-17
  • Добавлено: Расширенная обработка вебхуков Яндекс Пей
  • Добавлено: Гибкая система маппинга платёжных статусов
  • Добавлено: Пользовательские фильтры для разработчиков
  • Улучшено: Рефакторинг обработки вебхуков для повышения надёжности
  • Улучшено: Логирование платёжных операций
  • Улучшено: Безопасность обработки входящих запросов

Developer Filters

  1. kosteams_payments_for_yandex_webhook_status_map
    Изменяет маппинг статусов Яндекс WooCommerce
    Параметры:

— $status_map (array) — Текущее соответствие статусов
— $order (WC_Order) — Объект заказа
— $payment_status (string) — Статус от Яндекса

Пример:
add_filter(‘kosteams_payments_for_yandex_webhook_status_map’, function($status_map, $order, $payment_status) {
$status_map[‘CAPTURED’] = ‘completed’;
return $status_map;
}, 10, 3);

  1. kosteams_payments_for_yandex_before_process_status
    Изменяет статус перед его применением к заказу
    Параметры:

— $new_status (string) — Планируемый статус
— $payment_status (string) — Статус от Яндекса
— $order (WC_Order) — Объект заказа

  1. kosteams_payments_for_yandex_handle_webhook_status
    Полная пользовательская обработка статуса (возврат true отменяет обработку по умолчанию)
    Параметры:

— $handled (bool) — Флаг обработки
— $payment_status (string) — Статус от Яндекса
— $order (WC_Order) — Объект заказа

  1. kosteams_payments_for_yandex_status_change_note
    Изменяет заметку при смене статуса заказа
    Параметры:

— $note (string) — Текст заметки
— $order (WC_Order) — Объект заказа
— $old_status (string) — Старый статус
— $new_status (string) — Новый статус

  1. kosteams_payments_for_yandex_partial_refund_note
    Изменяет заметку для частичных возвратов
    Параметры:

— $note (string) — Текст заметки
— $order (WC_Order) — Объект заказа

Security Improvements

  • Усилена валидация входящих данных
  • Улучшена обработка декодирования ошибок

Fixed

  • Проблемы с обработкой статуса PARTIALLY_REFUNDED

1.0.9

  • Динамическое переключение иконок в платёжном шлюзе Яндекс Сплит в зависимости от выбранного способа оплаты
  • При выборе «Сплит» отображается стандартная иконка Сплит
  • При выборе «Карта + Сплит» отображается комбинированная иконка

1.0.8

Improved Discount Distribution

  • Все типы скидок (купоны, бонусы, отрицательные сборы) объединяются в общую сумму скидки
  • Скидки распределяются пропорционально между товарами
  • Оставшаяся скидка добавляется к последнему товару для точного распределения

Improved Cart Building

  • Товары с количеством > 1 создаются как отдельные позиции
  • Скидки равномерно распределяются между единицами товара
  • Скидки применяются только к товарам (не к доставке и сборам)

1.0.7

  • Реализовано разделение стилей
  • Мелкие исправления
  • Улучшена документация

1.0.6

Основные изменения:
— Добавлены отдельные платёжные шлюзы:
* Yandex Split — оплата в рассрочку
* Yandex Pay — классическая оплата картой
— Общая логика вынесена в базовый класс (WC_Yandex_Base_Gateway)
— Улучшено хранение URL для оплаты:
* URL платежей сохраняются в метаданных заказа
* Предотвращено повторное создание платежей для существующих заказов

1.0.5

  • Исправлена совместимость с WooCommerce 8.7
  • Обновлены тестовые сценарии для PHP 8.3

1.0.4

  • Добавлена поддержка мультиязычных сайтов
  • Оптимизирована загрузка скриптов

1.0

  • Первый релиз
  • Базовая интеграция Яндекс Пей/Яндекс Сплит
  • Поддержка классического редактора