Woo Distance Checkout - niestandardowa wtyczka dostawy WooCommerce

Programowanie stron internetowych
Praca 1 z 128
Opracowałem niestandardową wtyczkę WordPress Woo Distance Checkout dla sklepu na WooCommerce. Zadaniem było wdrożenie pełnej logiki składania zamówienia z dwoma scenariuszami odbioru towaru: dostawą pod adres klienta lub odbiorem osobistym ze sklepu.

W przypadku dostawy wtyczka sprawdza adres za pomocą Google Maps, określa odległość drogową od sklepu do klienta i automatycznie oblicza koszt według ustalonej formuły. Zrealizowano również maksymalny obszar dostawy: jeśli adres znajduje się poza dozwolonym promieniem, użytkownik otrzymuje zrozumiałą wiadomość z numerem kontaktowym do sklepu.

W checkout zintegrowano Google Places Autocomplete. Podczas wprowadzania adresu użytkownik widzi podpowiedzi, a po wyborze odpowiedniej opcji dane automatycznie rozdzielają się między pola ulicy, miasta, stanu, kodu pocztowego i kraju.

Dla bezpieczeństwa integracji API użyto oddzielnych kluczy:

* klucz frontendowy dla Google Places Autocomplete;
* klucz serwerowy dla Google Geocoding API oraz Distance Matrix API.

Do obliczenia podatku zintegrowano Sales Tax Rates API przez RapidAPI. Stawka podatku określana jest na podstawie kodu ZIP adresu dostawy, a dla odbioru osobistego — na podstawie kodu ZIP adresu sklepu. Z odpowiedzi API używana jest `combined_rate`, czyli łączna stawka podatku. Wynik jest buforowany w sesji WooCommerce, aby nie wykonywać powtarzających się zapytań API dla jednego kodu ZIP.

W trybie Pickup adresowe pola billingowe automatycznie wypełniają się adresem sklepu i płynnie znikają. Dane kontaktowe klienta pozostają dostępne. Koszt dostawy dla odbioru osobistego wynosi zero, a podatek obliczany jest na podstawie adresu punktu odbioru.

Zrealizowane funkcjonalności

* wybór między Delivery a Pickup;
* Google Places Autocomplete;
* serwerowa walidacja adresu przez Google Geocoding API;
* obliczenie odległości drogowej przez Google Distance Matrix API;
* automatyczne obliczenie dostawy w milach;
* podstawowa stawka, cena za milę, minimalny koszt i zaokrąglenie;
* maksymalny obszar dostawy;
* automatyczne wypełnienie adresu sklepu przy odbiorze osobistym;
* Sales Tax Rates API przez RapidAPI;
* obliczenie podatku na podstawie kodu ZIP;
* połączony ciąg Sales Tax z wyświetleniem stawki procentowej;
* buforowanie wyników walidacji, odległości i podatku;
* scenariusze awaryjne w przypadku niedostępności Tax API;
* blokowanie checkout lub ręczna weryfikacja zamówienia;
* zapisywanie obliczeń w metadanych zamówienia;
* oddzielny panel informacyjny w WooCommerce Admin;
* powiadomienia na stronie potwierdzenia zamówienia;
* tryb debugowania do testowania i diagnostyki;
* wsparcie dla WordPress i18n;
* kompatybilność ze standardowym checkout WooCommerce.

Wtyczka zbudowana jest na architekturze modułowej. Obliczenia odległości, walidacja adresu, podatki, kontroler checkout, zapisywanie metadanych, część administracyjna oraz logowanie zostały wydzielone do oddzielnych klas. Ułatwia to wsparcie, testowanie i dalsze rozszerzanie funkcjonalności.

Wynik: sklep otrzymał stabilny i zrozumiały checkout, który automatycznie określa dostępność dostawy, oblicza jej koszt i Sales Tax, wspiera odbiór osobisty oraz poprawnie obsługuje awarie zewnętrznych API. Rozwiązanie przeszło testy na rzeczywistych adresach i zostało zaakceptowane przez klienta.

#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