=== Prodamus Gateway for WooCommerce ===
Contributors: prodamusplugin
Tags: prodamus, woocommerce, payment gateway, ecommerce, online payments
Requires at least: 6.0
Tested up to: 7.0
Stable tag: 1.1.4
Requires PHP: 7.4
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Платежный шлюз для оплаты через Prodamus в WooCommerce.

== Description ==

**Платежный шлюз Prodamus для WooCommerce** требует установки плагина [WooCommerce](https://wordpress.org/plugins/woocommerce/). Он позволяет продавцам принимать онлайн-платежи через оплачиваемые страницы Prodamus.

Основные возможности:

* Перенаправление со страницы оформления заказа WooCommerce на платежную страницу Prodamus.
* Возврат на отдельную страницу неудачи, если платеж не был завершен.
* Возврат на отдельную страницу успеха с обратным отсчетом на время ожидания подтверждения.
* Подтверждение платежа только после проверки подписанного вебхука (HMAC).
* Автоматический опрос статуса заказа во время ожидания подтверждения вебхука.
* Поддержка `available_payment_method_groups`.
* Поддержка `installments_disabled`.
* Поддержка как классического оформления заказа, так и блоков оформления WooCommerce.
* Объявление совместимости с HPOS (высокопроизводительное хранение заказов).
* Выбор маркируемых товаров флажком «Требует маркировки» на вкладке «Основные» классического редактора; у вариативного товара флажок родителя применяется ко всем вариациям.
* Настройка правил маркировки через PHP-фильтр `prodamusplugin_product_requires_marking`: результат `true` или `false` имеет приоритет над флажком товара.
* Передача каждой единицы маркируемого товара отдельной строкой с `quantity=1`, `is_marked=1` и идентификатором товара или вариации в `sku`.
* Сохранение итоговой суммы маркируемой позиции после скидок и с налогами при распределении стоимости между единицами товара и округлении.
* Сохранение признака маркировки и SKU в заказе при первой подготовке оплаты и их повторное использование при последовательных попытках оплаты.

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

Использование внешнего сервиса (Prodamus):

* Плагин отправляет данные о заказе в Prodamus (ID заказа, товарные позиции, итоги, email/телефон клиента, URL-адреса возврата и вебхука).
* Передача данных используется только для создания и подтверждения платежных транзакций.
* Документация по интеграции:
  * PF 1.0: https://help.prodamus.ru/payform/integracii/cms/woocommerce
  * PF 2.0: https://help.prodamuspay.ru/kanaly-prodazh/integracii/cms/wordpress
* Сайт Prodamus: https://prodamus.ru/

Поддержка:

Для ускорения поддержки, пожалуйста, указывайте:

* Версии WordPress и WooCommerce.
* Версию плагина Prodamus.
* URL-адрес страницы оформления заказа.
* Детали ошибки и соответствующие логи вебхука/подписи.

Контакты поддержки:

* Телефон: 8 (495) 150-08-71
* Сообщения ВК: https://vk.com/im?sel=-11636316
* Email: sales@prodamus.ru
* MAX бот: https://max.ru/id1215156909_2_bot

== Installation ==

1. Установите и активируйте [WooCommerce](https://wordpress.org/plugins/woocommerce/).
2. Установите плагин из админки WordPress (`Плагины -> Добавить новый -> Загрузить плагин`) или распакуйте его в `/wp-content/plugins/prodamus`.
3. Активируйте **Платежный шлюз Prodamus для WooCommerce** в `/wp-admin/plugins.php`.
4. Перейдите в `WooCommerce -> Настройки -> Платежи -> Prodamus`.
5. Заполните обязательные настройки:
   * `URL-адрес платежной страницы`
   * `Секретный ключ`
6. При необходимости настройте дополнительные параметры (демо-режим, статус заказа после оплаты, группы способов оплаты, флаг рассрочки).

== Frequently Asked Questions ==

= Когда заказ отмечается как оплаченный? =

Заказ считается окончательно оплаченным только после успешной проверки подписи и подтверждения вебхука от Prodamus.

= Почему на странице успеха есть таймер? =

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

= Поддерживается ли оформление заказа через блоки WooCommerce? =

Да. Плагин регистрирует специальную интеграцию для оформления заказа на основе блоков.

= Можно ли установить этот плагин вместе со старым плагином wc-prodamus? =

Да. Эта версия использует изолированные идентификаторы и имена классов, чтобы избежать фатальных конфликтов при параллельной установке.

= Как включить маркировку товара? =

1. В админке WordPress откройте `Товары` и выберите товар для редактирования в классическом редакторе WooCommerce.
2. В блоке `Данные товара` откройте вкладку `Основные`.
3. Установите флажок `Требует маркировки` и сохраните товар.

Для вариативного товара установите флажок у родительского товара: он задаёт исходный признак для всех вариаций. Отдельного флажка у вариаций нет. Снятый флажок означает обычный товар, если PHP-фильтр не задаёт другое правило.

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

= Что требуется настроить на стороне Prodamus для маркировки? =

Нужна касса с ФФД 1.2 или выше и включённая маркировка в Prodamus. До использования маркировки обратитесь в поддержку Prodamus для её активации.

Плагин передаёт признак маркируемого товара. Индивидуальные коды маркировки оператор вводит в Prodamus вручную. Ввод кодов и формирование закрывающего чека выполняются отдельно после успешного платежа; подтверждение оплаты заказа само по себе не завершает этот этап.

= Можно ли задать правила маркировки по категории или другому условию? =

Да. Разработчик может подключить PHP-фильтр `prodamusplugin_product_requires_marking`. Он получает исходный признак (`bool`), фактический товар или вариацию и родителя вариации (для обычного товара — `null`). Возвращённый `true` включает маркировку, `false` отключает её независимо от флажка. Возвращайте строго `true` или `false`: строки, числа и `null` приводят к отказу подготовки оплаты.

= Можно ли одновременно запускать оплату одного заказа в нескольких вкладках? =

В версии 1.1.4 не запускайте одновременно подготовку оплаты или её повтор для одного заказа, в том числе из нескольких вкладок. Дождитесь завершения текущей попытки перед следующей. Сохранение первого снимка маркировки между отдельными PHP-запросами не защищено атомарно; повторное использование сохранённых данных описано для последовательного сценария.

== Changelog ==

= 1.1.4 =
* Добавлен флажок «Требует маркировки» на вкладке «Основные» классического редактора товара WooCommerce. Флажок родительского вариативного товара задаёт исходный признак для всех его вариаций.
* Добавлен PHP-фильтр `prodamusplugin_product_requires_marking` для правил маркировки. Результат строго `true` или `false` имеет приоритет над флажком товара.
* Каждая единица маркируемого товара передаётся в Prodamus отдельной строкой с `quantity=1`, `is_marked=1` и SKU, равным ID товара или вариации. Стоимость распределяется с сохранением итоговой суммы после скидок и с налогами.
* При первой подготовке оплаты сохраняются признак маркировки и SKU позиций заказа. Последовательный повтор оплаты использует сохранённые значения, даже если настройки товара изменились.
* Для работы маркировки на стороне Prodamus необходима касса с ФФД 1.2 или выше и активация маркировки через поддержку Prodamus. Коды маркировки вводятся вручную; ввод кодов и формирование закрывающего чека выполняются отдельно после успешного платежа.

= 1.1.3 =
* В Prodamus передается окончательная цена позиции после скидки WooCommerce, без повторной передачи discount_value.
* В сумму позиций, доставки и сборов теперь включаются налоги, если они активированы в WooCommerce.
* Исправлена обработка сборов и округление стоимости при количестве товара больше одного.
* Добавлена проверка совпадения суммы запроса с итогом заказа WooCommerce до перехода к оплате.

= 1.1.2 =
* Исправлена проверка подписи URL-кодированных вебхуков, если другие плагины изменяют глобальный массив POST.

= 1.1.1 =
* Исправлена ошибка с формированием подписи

= 1.1.0 =
* Добавлена поддержка доменов *.proeducation.kz
* Добавлен вывод ошибок при настройке платежного метода

= 1.0.9 =
* Исправлены смешанные окончания строк в файле prodamus.php (предупреждение проверки плагина).

= 1.0.8 =
* Исправлена фатальная ошибка при активации, когда классы WooCommerce еще не были загружены.
* Проверка плагина: санитизация GET-параметров на странице статуса через filter_input, протестировано до версии 7.0.

= 1.0.7 =
* Проверка плагина: протестировано до WordPress 7.0, санитизация аргументов URL возврата, удален устаревший load_plugin_textdomain().

= 1.0.6 =
* Соответствие требованиям WordPress.org: заголовок Requires Plugins, load_plugin_textdomain, callback разрешений REST, исправления в readme.
* Удалены значения подписей из отладочных логов.
* Добавлены файлы index.php в поддиректории плагина.

= 1.0.5 =
* Исправлена загрузка скриптов таймера на странице успеха путем постановки ресурсов в очередь на wp_enqueue_scripts после регистрации.
* Уменьшено количество ненужных скриптов WooCommerce на размещенных страницах статуса.

= 1.0.4 =
* Замена встроенных тегов скриптов на wp_enqueue_script, wp_localize_script и wp_add_inline_script.
* Переименованы префиксы плагина в prodamusplugin для избежания конфликтов имен.
* Переименован вспомогательный класс HMAC в Prodamusplugin_Hmac.

= 1.0.3 =
* Добавлена защита от конфликтов при параллельной установке с устаревшим `wc-prodamus`.
* Улучшена поддержка WooCommerce Blocks и стабильность регистрации платежного метода.
* Обновлено поведение страницы успеха: обратный отсчет, проверки статуса и перенаправление после подтверждения.
* Добавлены параметры `available_payment_method_groups` и `installments_disabled`.
* Улучшена обработка URL-адресов платежей и генерация подписанных полезных данных.

= 1.0.0 =
* Первый публичный выпуск платежного плагина Prodamus для WooCommerce.
