Подарункові картки
Модуль подарункових карток дозволяє продавати картки як продукти WooCommerce. Клієнт купує картку, отримує код та оплачує ним наступні замовлення.
Як це працює
Section titled “Як це працює”- Адміністратор створює продукт типу “Подарункова картка”
- Клієнт купує подарункову картку в магазині
- Після оплати замовлення плагін генерує унікальний код картки
- Код надсилається клієнту (або отримувачу подарунка) електронною поштою
- Отримувач вводить код у кошику та отримує знижку, рівну вартості картки
- Баланс картки зменшується на використану суму
Налаштування
Section titled “Налаштування”Перейдіть до WooCommerce > Налаштування > Polski > Модулі PRO > Подарункові картки.
Модуль контролюється опцією:
polski_gift_cardsЗагальні налаштування
Section titled “Загальні налаштування”| Параметр | Опис |
|---|---|
| Увімкнути подарункові картки | Активує модуль |
| Довжина коду | Кількість символів коду (за замовчуванням 16) |
| Формат коду | Шаблон коду (наприклад, XXXX-XXXX-XXXX-XXXX) |
| Префікс коду | Необов’язковий префікс (наприклад, PL-) |
| Термін дії картки | Кількість днів дії (0 = без обмеження) |
| Поле коду в кошику | Позиція поля для введення коду |
Створення продукту подарункової картки
Section titled “Створення продукту подарункової картки”- Перейдіть до Продукти > Додати новий
- Виберіть тип продукту: Подарункова картка
- Встановіть ціну (номінальна вартість картки)
- Необов’язково: увімкніть “Довільна сума” - клієнт сам вводить вартість картки
- Необов’язково: встановіть мінімальну та максимальну суму для довільної суми
- Опублікуйте продукт
Для довільної суми клієнт бачить поле для введення вартості картки замість фіксованої ціни.
Генерація кодів
Section titled “Генерація кодів”Коди подарункових карток генеруються автоматично після оплати замовлення. Алгоритм:
- алфавітно-цифрові символи (A-Z, 0-9)
- виключення неоднозначних символів (0, O, I, L, 1)
- валідація унікальності в базі даних
- форматування з роздільниками (наприклад,
ABCD-EFGH-JKMN-PQRS)
Кожний код унікальний у межах усього магазину. Плагін перевіряє унікальність перед збереженням і в разі колізії генерує новий код.
Реалізація в кошику
Section titled “Реалізація в кошику”Поле коду
Section titled “Поле коду”На сторінці кошика (і необов’язково на сторінці каси) відображається поле для введення коду подарункової картки:
[Введіть код подарункової картки] [Застосувати]Після введення правильного коду:
- відображається баланс картки
- сума знижки віднімається від суми замовлення
- якщо баланс картки менший за вартість замовлення - решта оплачується іншими способами
- якщо баланс картки більший - залишок залишається на картці
Валідація коду
Section titled “Валідація коду”Плагін валідує код картки перед застосуванням:
- перевірка, чи код існує в базі
- перевірка, чи картка не прострочена
- перевірка, чи баланс більший за нуль
- перевірка, чи картка не заблокована
Повідомлення про помилку інформує клієнта про причину відхилення коду.
Відстеження сесії
Section titled “Відстеження сесії”Застосований код картки зберігається в сесії WooCommerce клієнта. Це означає, що:
- код запам’ятовується навіть після оновлення сторінки
- код видаляється після оформлення замовлення або виходу з облікового запису
- клієнт може видалити застосований код вручну
Відстеження балансу
Section titled “Відстеження балансу”Кожна подарункова картка має баланс, який зменшується з кожним використанням. Історія транзакцій картки містить:
| Поле | Опис |
|---|---|
| Дата | Дата транзакції |
| Тип | Поповнення / Використання / Повернення |
| Сума | Сума операції |
| Замовлення | ID замовлення (для використання та повернення) |
| Баланс після операції | Поточний баланс після транзакції |
Адміністративна панель
Section titled “Адміністративна панель”У панелі WooCommerce > Подарункові картки адміністратор може:
- переглядати список усіх карток із балансами
- перевіряти історію транзакцій картки
- поповнювати картку вручну
- блокувати картку
- експортувати список карток (CSV)
Панель Мій обліковий запис
Section titled “Панель Мій обліковий запис”Модуль додає ендпоінт /polski-gift-cards до панелі Мій обліковий запис клієнта. Ендпоінт доступний за адресою:
/moje-konto/polski-gift-cards/У панелі клієнт бачить:
- список власних подарункових карток
- поточний баланс кожної картки
- історію використання
- код картки (з можливістю копіювання)
- дату закінчення терміну дії (якщо встановлена)
polski_pro/gift_card/validate
Section titled “polski_pro/gift_card/validate”Фільтрує результат валідації коду подарункової картки в кошику.
/** * @param bool $is_valid Czy kod jest prawidłowy * @param string $code Kod karty podarunkowej * @param float $cart_total Suma koszyka */apply_filters('polski_pro/gift_card/validate', bool $is_valid, string $code, float $cart_total): bool;Приклад:
add_filter('polski_pro/gift_card/validate', function (bool $is_valid, string $code, float $cart_total): bool { // Blokowanie kart podarunkowych dla zamówień poniżej 50 zł if ($cart_total < 50.00) { wc_add_notice('Karty podarunkowe można wykorzystać przy zamówieniach od 50 zł.', 'error'); return false; } return $is_valid;}, 10, 3);polski_pro/gift_card/applied
Section titled “polski_pro/gift_card/applied”Дія, що викликається після застосування подарункової картки в кошику.
/** * @param string $code Kod karty * @param float $amount Kwota do odliczenia * @param float $balance Pozostałe saldo */do_action('polski_pro/gift_card/applied', string $code, float $amount, float $balance);Приклад:
add_action('polski_pro/gift_card/applied', function (string $code, float $amount, float $balance): void { // Logowanie użycia karty wc_get_logger()->info( "Karta {$code}: odliczono {$amount} zł, saldo: {$balance} zł", ['source' => 'polski-pro-gift-cards'] );}, 10, 3);polski_pro/gift_card/order_created
Section titled “polski_pro/gift_card/order_created”Дія, що викликається після створення замовлення з використанням подарункової картки.
/** * @param int $order_id ID zamówienia * @param string $code Kod karty * @param float $amount Kwota odliczona z karty */do_action('polski_pro/gift_card/order_created', int $order_id, string $code, float $amount);Приклад:
add_action('polski_pro/gift_card/order_created', function (int $order_id, string $code, float $amount): void { $order = wc_get_order($order_id); $order->add_order_note( sprintf('Użyto kartę podarunkową %s na kwotę %.2f zł', $code, $amount) );}, 10, 3);polski_pro/gift_card/calculate_totals
Section titled “polski_pro/gift_card/calculate_totals”Фільтрує суму для відрахування з подарункової картки при перерахунку сум кошика.
/** * @param float $discount Kwota rabatu z karty * @param string $code Kod karty * @param float $cart_total Suma koszyka przed rabatem */apply_filters('polski_pro/gift_card/calculate_totals', float $discount, string $code, float $cart_total): float;Електронний лист із кодом
Section titled “Електронний лист із кодом”Після оплати замовлення, що містить подарункову картку, плагін надсилає електронний лист із кодом. Лист містить:
- код картки (відформатований)
- номінальну вартість
- дату закінчення терміну дії (якщо застосовується)
- інструкцію використання
Шаблон листа можна налаштувати в WooCommerce > Налаштування > Електронні листи > Подарункова картка.
Електронний лист для отримувача подарунка
Section titled “Електронний лист для отримувача подарунка”При покупці картки клієнт може вказати адресу електронної пошти отримувача подарунка. У такому випадку:
- код надсилається на адресу отримувача
- покупець отримує підтвердження покупки (без коду)
- необов’язково: покупець може додати повідомлення для отримувача
Найпоширеніші проблеми
Section titled “Найпоширеніші проблеми”Код не приймається в кошику
Section titled “Код не приймається в кошику”- Перевірте, чи код введений правильно (без пробілів на початку/кінці)
- Перевірте, чи картка не прострочена
- Перевірте баланс картки в адміністративній панелі
- Переконайтеся, що картка не заблокована
Клієнт не отримав код електронною поштою
Section titled “Клієнт не отримав код електронною поштою”- Перевірте, чи замовлення оплачене (статус “Processing” або “Completed”)
- Перевірте конфігурацію електронних листів WooCommerce
- Перевірте логи листів на наявність помилок надсилання
Баланс не зменшується після замовлення
Section titled “Баланс не зменшується після замовлення”- Перевірте, чи замовлення було успішно оформлене (не скасоване)
- Перевірте історію транзакцій картки в адміністративній панелі
- Перевірте логи на наявність помилок PHP