=== COD Guard — OTP and Blacklist for WooCommerce ===
Contributors: catcodestudio
Tags: woocommerce, cash on delivery, otp, sms, blacklist
Requires at least: 6.2
Tested up to: 7.1
Requires PHP: 7.4
Stable tag: 1.1.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Підтвердження номера телефону кодом із SMS для післяплати, чорний список покупців і ліміт суми післяплати за історією клієнта.

== Description ==

Післяплата приносить замовлення — і приносить невикуп. Товар їде до відділення, лежить там, повертається, а магазин платить за доставку в обидва боки й за зберігання. Найдешевший спосіб відсіяти більшу частину таких замовлень — переконатися, що номер телефону справжній, і пам'ятати тих, хто вже не викупив.

Плагін робить рівно це.

**For stores in India**

Cash on delivery orders that are refused at the door come back as RTO. COD Guard works on that before the parcel ships:

* Phone OTP on checkout through MSG91 or Fast2SMS (free). Indian numbers are recognised in every usual form: 98765 43210, 098765 43210, 91 98765 43210, +91 98765 43210.
* DLT: SMS to Indian numbers go through a template registered on a DLT portal, so you need a Principal Entity, a header and a content template, and you paste the template ID into the plugin. The plugin sends the template ID and the code; the text is whatever you registered.
* WhatsApp OTP through MSG91 or Fast2SMS, with SMS as a backup (Pro). The template must be approved on WhatsApp, and Meta restricts Authentication templates for lower-tier accounts.
* Partial advance on COD orders: the customer pays a percentage or a fixed amount online and the rest on delivery (Pro). The advance is taken by the payment plugin you already use, so UPI works if that plugin accepts it.
* Delivery PIN code blacklist with prefixes such as 1100* (Pro). COD is hidden or refused for those PIN codes, online payment stays available.

The interface is in English on any English site locale; customer-facing text is also in Hindi.

**Можливості**

* Код підтвердження на чекауті: покупець, який обрав оплату при отриманні, отримує SMS і вводить код. Без підтвердження замовлення з післяплатою не оформлюється.
* Чорний список за телефоном, e-mail або IP. Заблокованому покупцю післяплата або зникає зі способів оплати, або відхиляється з поясненням — на ваш вибір.
* Нормалізація номера: +380XX, 380XX, 0XX та номер із дужками й дефісами — це один і той самий покупець.
* Провайдери SMS: TurboSMS, SMS-fly, MSG91, Fast2SMS, власний HTTP-шлюз. Окремо — тестовий режим, у якому нічого не надсилається, а код видно на сторінці: у ньому зручно перевірити весь чекаут, не витрачаючи жодної SMS.
* Канал Viber з відкатом на SMS (там, де провайдер це вміє).
* Працює і на класичному, і на блоковому чекауті; сумісність з HPOS.
* У картці замовлення видно, чи підтверджувався номер і скільки замовлень цей номер уже викупив.

**Що працює безкоштовно**

Код підтвердження номера з будь-яким із провайдерів і ручний чорний список — без обмежень за кількістю записів. Це не тимчасово: безкоштовний рівень працює завжди.

**Pro**

* Автоматичний чорний список: номер потрапляє туди сам після N замовлень у статусах, які ви вважаєте невикупом.
* Ліміт суми післяплати за історією: новому покупцю — до певної суми, перевіреному (уже викупив N замовлень) — більше або без обмеження.
* Білий список: на цих покупців не діють чорний список і ліміти.
* Умови, коли питати код: від суми замовлення, лише в гостей, лише в тих, хто ще нічого не викупив.
* Журнал спроб із пошуком і експортом у CSV.
* Сповіщення в Telegram про заблоковану спробу.
* Код у WhatsApp через MSG91 або Fast2SMS, за потреби із запасним каналом SMS.
* Чорний список PIN-кодів доставки, зокрема за початком коду.
* Часткова передоплата: покупець платить аванс онлайн через платіжний модуль магазину, решту при отриманні.

**Спробувати Pro.** 7 днів безкоштовно: натисніть «Спробувати Pro 7 днів» на екрані налаштувань і вкажіть e-mail, картка не потрібна. Ліцензія на 1–5 років включає оновлення та підтримку на цей строк.

**Персональні дані.** Номери покупців зберігаються в таблицях плагіна, коди — тільки у вигляді хешу, IP — тільки у вигляді хешу. У журналі й експорті номер маскується. Журнал можна вимкнути, а строк його зберігання — налаштувати; при видаленні плагіна всі таблиці прибираються.

== Installation ==

1. Завантажте плагін і активуйте його.
2. Відкрийте WooCommerce → COD Guard.
3. Позначте способи оплати, які у вас є післяплатою (зазвичай «Оплата при доставці»).
4. Оберіть провайдера SMS і вкажіть токен та ім'я відправника. Щоб спершу все перевірити, лишіть тестовий режим.
5. Збережіть і пройдіть чекаут із післяплатою — має з'явитися блок підтвердження номера.

== Frequently Asked Questions ==

= Блок підтвердження не з'являється =
Перевірте, що обраний спосіб оплати позначено в налаштуваннях як післяплату, і що підтвердження увімкнене. Блок показується лише після вибору такого способу оплати.

= Чи працює з блоковим чекаутом? =
Так. Блок вставляється перед способами оплати, а заборона на сервері працює через Store API незалежно від того, чи відмалювався блок.

= Покупець каже, що SMS не прийшла =
Подивіться журнал: там видно, чи прийняв провайдер повідомлення. Якщо провайдер відмовив, причина його відповіді теж у журналі.

= Як не питати код у постійних покупців? =
У Pro є умова «не питати код у тих, хто вже викупав замовлення».

= Чи можна підключити свого SMS-провайдера? =
Так, двома способами: «Власний HTTP-шлюз» із підстановками {phone}, {text}, {sender}, {token} — без жодного рядка коду, або фільтр `cccg_sms_send` — для складніших API.

= Що саме вважається невикупом? =
Ви самі обираєте статуси замовлення: за замовчуванням це «Скасовано» і «Не вдалося».

= DLT: what do I need for SMS in India? =
A Principal Entity, a header and a content template registered on a DLT portal. Add the header and template in your MSG91 or Fast2SMS account, then paste the template ID into COD Guard. The approved text and the text in the gateway must match.

= How is the COD advance paid? =
As a separate order on the normal WooCommerce payment page, through any online gateway you enable. The main order waits on hold and moves to processing once the advance is paid; its total then shows what is left to collect. An unpaid advance cancels both orders after the time you set, and that cancellation does not count as a refused order.

== Screenshots ==

1. Блок підтвердження номера на чекауті.
2. Налаштування: провайдер SMS і параметри коду.
3. Чорний список.
4. Журнал спроб.

== Changelog ==

= 1.1.0 =
* Індія: MSG91 і Fast2SMS із шаблонами DLT, номери +91 у всіх звичних записах, код країни за замовчуванням береться з країни магазину.
* Pro: код у WhatsApp через MSG91 і Fast2SMS, запасний канал SMS.
* Pro: чорний список PIN-кодів доставки.
* Pro: часткова передоплата онлайн за замовлення з післяплатою.
* Сайт будь-якою мовою без свого перекладу показує модуль англійською, додано покупцям хінді.
* Типові тексти блокування й повідомлення йдуть мовою сайту, а не українською.

= 1.0.3 =
* Блок підтвердження номера знову з'являється на класичному чекауті і не зникає після перемикання способів оплати.
* На чекауті без поля телефону і в покупця без номера в кабінеті блок підтвердження має власне поле, підтверджений номер іде в замовлення.
* Покупцю з чорного списку за e-mail код не надсилається.
* Сума ліміту в повідомленні показується символом валюти на обох чекаутах.
* Журнал показує суми у форматі магазину, деталі людською мовою.
* Поля блоку 16 px на телефоні.
// @pro-begin
* Оновлення Pro-версії приходять прямо в «Оновлення» WordPress.
// @pro-end

= 1.0.0 =
* Перший випуск: підтвердження номера кодом, чорний і білий списки, автоматичне блокування за історією невикупів, ліміт суми післяплати, журнал, Telegram.
