Woo Distance Checkout - кастомний плагін доставки WooCommerce
Веб-програмуванняРозробив кастомний WordPress-плагін Woo Distance Checkout для магазину на WooCommerce. Завданням було реалізувати повноцінну логіку оформлення замовлення з двома сценаріями отримання товару: доставкою за адресою клієнта або самовивозом із магазину.
Для доставки плагін перевіряє адресу через Google Maps, визначає дорожню відстань від магазину до клієнта та автоматично розраховує вартість за заданою формулою. Також реалізовано максимальну зону доставки: якщо адреса знаходиться за межами дозволеного радіуса, користувач отримує зрозуміле повідомлення з контактним номером магазину.
У checkout інтегровано Google Places Autocomplete. Під час введення адреси користувач бачить підказки, а після вибору потрібного варіанта дані автоматично розподіляються між полями вулиці, міста, штату, поштового індексу та країни.
Для безпеки API-інтеграції використано окремі ключі:
* фронтенд-ключ для Google Places Autocomplete;
* серверний ключ для Google Geocoding API та Distance Matrix API.
Для розрахунку податку інтегровано Sales Tax Rates API через RapidAPI. Податкова ставка визначається за ZIP-кодом адреси доставки, а для самовивозу — за ZIP-кодом адреси магазину. Із відповіді API використовується `combined_rate`, тобто загальна ставка податку. Результат кешується у WooCommerce session, щоб не виконувати повторні API-запити для одного ZIP-коду.
У режимі Pickup адресні billing-поля автоматично заповнюються адресою магазину та плавно приховуються. Контактні дані клієнта залишаються доступними. Вартість доставки для самовивозу дорівнює нулю, а податок розраховується за адресою точки видачі.
Реалізований функціонал
* вибір між Delivery та Pickup;
* Google Places Autocomplete;
* серверна валідація адреси через Google Geocoding API;
* розрахунок дорожньої відстані через Google Distance Matrix API;
* автоматичний розрахунок доставки за милями;
* базова ставка, ціна за милю, мінімальна вартість та округлення;
* максимальна зона доставки;
* автоматичне заповнення адреси магазину при самовивозі;
* Sales Tax Rates API через RapidAPI;
* розрахунок податку за ZIP-кодом;
* об’єднаний рядок Sales Tax із відображенням процентної ставки;
* кешування результатів валідації, відстані та податку;
* fallback-сценарії при недоступності Tax API;
* блокування checkout або ручна перевірка замовлення;
* збереження розрахунків у метаданих замовлення;
* окрема інформаційна панель у WooCommerce Admin;
* повідомлення на сторінці підтвердження замовлення;
* debug-режим для тестування та діагностики;
* підтримка WordPress i18n;
* сумісність зі стандартним WooCommerce checkout.
Плагін побудований на модульній архітектурі. Розрахунок відстані, валідація адреси, податки, checkout-контролер, збереження метаданих, адміністративна частина та логування винесені в окремі класи. Це спрощує підтримку, тестування та подальше розширення функціоналу.
Результат: магазин отримав стабільний і зрозумілий checkout, який автоматично визначає доступність доставки, розраховує її вартість і Sales Tax, підтримує самовивіз та коректно обробляє збої зовнішніх API. Рішення пройшло тестування на реальних адресах і було прийняте клієнтом.
#WordPress #WooCommerce #PHP #JavaScript #AJAX #CustomPluginDevelopment #WooCommerceCheckout #GoogleMapsAPI #GooglePlacesAPI #GeocodingAPI #DistanceMatrixAPI #RapidAPI #SalesTaxRatesAPI #SalesTaxCalculation #ZIPCodeTaxCalculation #DistanceBasedShipping #DeliveryCalculation #AddressValidation #Pickup #APIIntegration #WordPressHooks #OrderMeta #Internationalization #Debugging #CheckoutUX
Для доставки плагін перевіряє адресу через Google Maps, визначає дорожню відстань від магазину до клієнта та автоматично розраховує вартість за заданою формулою. Також реалізовано максимальну зону доставки: якщо адреса знаходиться за межами дозволеного радіуса, користувач отримує зрозуміле повідомлення з контактним номером магазину.
У checkout інтегровано Google Places Autocomplete. Під час введення адреси користувач бачить підказки, а після вибору потрібного варіанта дані автоматично розподіляються між полями вулиці, міста, штату, поштового індексу та країни.
Для безпеки API-інтеграції використано окремі ключі:
* фронтенд-ключ для Google Places Autocomplete;
* серверний ключ для Google Geocoding API та Distance Matrix API.
Для розрахунку податку інтегровано Sales Tax Rates API через RapidAPI. Податкова ставка визначається за ZIP-кодом адреси доставки, а для самовивозу — за ZIP-кодом адреси магазину. Із відповіді API використовується `combined_rate`, тобто загальна ставка податку. Результат кешується у WooCommerce session, щоб не виконувати повторні API-запити для одного ZIP-коду.
У режимі Pickup адресні billing-поля автоматично заповнюються адресою магазину та плавно приховуються. Контактні дані клієнта залишаються доступними. Вартість доставки для самовивозу дорівнює нулю, а податок розраховується за адресою точки видачі.
Реалізований функціонал
* вибір між Delivery та Pickup;
* Google Places Autocomplete;
* серверна валідація адреси через Google Geocoding API;
* розрахунок дорожньої відстані через Google Distance Matrix API;
* автоматичний розрахунок доставки за милями;
* базова ставка, ціна за милю, мінімальна вартість та округлення;
* максимальна зона доставки;
* автоматичне заповнення адреси магазину при самовивозі;
* Sales Tax Rates API через RapidAPI;
* розрахунок податку за ZIP-кодом;
* об’єднаний рядок Sales Tax із відображенням процентної ставки;
* кешування результатів валідації, відстані та податку;
* fallback-сценарії при недоступності Tax API;
* блокування checkout або ручна перевірка замовлення;
* збереження розрахунків у метаданих замовлення;
* окрема інформаційна панель у WooCommerce Admin;
* повідомлення на сторінці підтвердження замовлення;
* debug-режим для тестування та діагностики;
* підтримка WordPress i18n;
* сумісність зі стандартним WooCommerce checkout.
Плагін побудований на модульній архітектурі. Розрахунок відстані, валідація адреси, податки, checkout-контролер, збереження метаданих, адміністративна частина та логування винесені в окремі класи. Це спрощує підтримку, тестування та подальше розширення функціоналу.
Результат: магазин отримав стабільний і зрозумілий checkout, який автоматично визначає доступність доставки, розраховує її вартість і Sales Tax, підтримує самовивіз та коректно обробляє збої зовнішніх API. Рішення пройшло тестування на реальних адресах і було прийняте клієнтом.
#WordPress #WooCommerce #PHP #JavaScript #AJAX #CustomPluginDevelopment #WooCommerceCheckout #GoogleMapsAPI #GooglePlacesAPI #GeocodingAPI #DistanceMatrixAPI #RapidAPI #SalesTaxRatesAPI #SalesTaxCalculation #ZIPCodeTaxCalculation #DistanceBasedShipping #DeliveryCalculation #AddressValidation #Pickup #APIIntegration #WordPressHooks #OrderMeta #Internationalization #Debugging #CheckoutUX