Przejdź do głównej zawartości

Integracja InPost (Paczkomaty)

Moduł InPost integruje WooCommerce z API ShipX. Generuj etykiety, pozwól klientom wybrać Paczkomat na mapie i śledź przesyłki z panelu admina.

Przejdź do WooCommerce > Ustawienia > Polski PRO > InPost.

UstawienieOpis
Token APIToken autoryzacyjny z panelu InPost Manager
ID organizacjiIdentyfikator organizacji w systemie InPost
Tryb sandboxUżywa środowiska testowego ShipX API

Token trafia w nagłówku Authorization: Bearer {token}. Musi mieć uprawnienia do tworzenia przesyłek i etykiet.

Po skonfigurowaniu API, utwórz nową metodę wysyłki:

  1. Przejdź do WooCommerce > Ustawienia > Wysyłka > Strefy wysyłki
  2. Edytuj strefę “Polska”
  3. Kliknij “Dodaj metodę wysyłki”
  4. Wybierz “InPost Paczkomat” lub “InPost Kurier”
Ustawienie metodyDomyślna wartośćOpis
Tytuł metody”InPost Paczkomat”Nazwa wyświetlana klientowi
Koszt0Koszt wysyłki (0 = darmowa)
Darmowa wysyłka od""Kwota zamówienia, od której wysyłka jest darmowa
Domyślny rozmiar paczkiARozmiar: A, B, C
UbezpieczenieNieDodaj ubezpieczenie do przesyłki

Po wybraniu “InPost Paczkomat” na kasie wyświetla się interaktywny widget mapy.

Widget oferuje:

  • Mapę z pinezkami Paczkomatów
  • Wyszukiwanie po mieście - wpisz nazwę miasta, aby wycentrować mapę
  • Wyszukiwanie po współrzędnych - automatyczne geolokalizacja (za zgodą użytkownika)
  • Wyszukiwanie po kodzie pocztowym - znajdź najbliższe Paczkomaty
  • Listę Paczkomatów - posortowaną od najbliższego
  • Szczegóły punktu - adres, godziny otwarcia, dostępne rozmiary skrytek

Widget wysyła zapytanie do endpointu ShipX API:

GET /v1/points?type=parcel_locker&city={city}&per_page=25

Wyniki są cache’owane na 24 godziny w transients WordPress.

Gdy klient wyrazi zgodę na geolokalizację:

GET /v1/points?type=parcel_locker&relative_point={lat},{lng}&per_page=10
/**
* Filtruje listę punktów odbioru InPost.
*
* @param array $points Tablica punktów odbioru z API
* @param string $city Wyszukiwane miasto
* @param array $coords Współrzędne [lat, lng] lub pusta tablica
*/
apply_filters('polski_pro/inpost/points', array $points, string $city, array $coords): array;

Przykład - wykluczenie punktów tymczasowo niedostępnych:

add_filter('polski_pro/inpost/points', function (array $points, string $city, array $coords): array {
$excluded_points = ['KRA123', 'WAW456']; // Tymczasowo wyłączone
return array_filter($points, function (array $point) use ($excluded_points): bool {
return ! in_array($point['name'], $excluded_points, true);
});
}, 10, 3);

W panelu InPost na stronie zamówienia:

  1. Generuj etykietę - tworzy przesyłkę w API ShipX i generuje etykietę PDF
  2. Pobierz etykietę - pobiera wygenerowaną etykietę
  3. Drukuj etykietę - otwiera podgląd wydruku

Zaznacz wiele zamówień na liście i wybierz “Generuj etykiety InPost”. Etykiety generują się w tle. Po zakończeniu pobierz plik ZIP.

Etykieta jest generowana na podstawie:

PoleŹródłoOpis
NadawcaUstawienia sklepuAdres i dane firmy z WooCommerce
OdbiorcaDane zamówieniaImię, nazwisko, telefon, e-mail
Punkt odbioruWybór klientaID Paczkomatu wybranego na kasie
Rozmiar paczkiUstawienie metodyLub nadpisanie w zamówieniu
Kwota pobraniaZamówienie CODTylko dla zamówień za pobraniem
/**
* Filtruje dane przesyłki przed wysłaniem do API ShipX.
*
* @param array $shipment_data Dane przesyłki
* @param \WC_Order $order Zamówienie WooCommerce
*/
apply_filters('polski_pro/inpost/shipment_data', array $shipment_data, \WC_Order $order): array;

Przykład - dodanie referencji zamówienia:

add_filter('polski_pro/inpost/shipment_data', function (array $shipment_data, \WC_Order $order): array {
$shipment_data['reference'] = sprintf('ORDER-%s', $order->get_order_number());
return $shipment_data;
}, 10, 2);

Po wygenerowaniu etykiety moduł sprawdza status przesyłki co 2 godziny (WP-Cron). Statusy mapują się na statusy WooCommerce:

Status InPostStatus WooCommerceOpis
createdprocessingPrzesyłka utworzona
dispatched_by_senderprocessingNadana przez nadawcę
collected_from_sendershippedOdebrana od nadawcy
out_for_deliveryshippedW doręczeniu
ready_to_pickupshippedGotowa do odbioru w Paczkomacie
deliveredcompletedDostarczona / odebrana

Klient dostaje e-mail z linkiem do śledzenia na stronie InPost. Link jest dodawany do:

  • E-maila “Zamówienie w realizacji”
  • Strony “Moje konto > Zamówienia > Szczegóły”
  • Notatek zamówienia (widocznych dla klienta)
/**
* Akcja wywoływana po aktualizacji statusu przesyłki.
*
* @param int $order_id ID zamówienia
* @param string $tracking_number Numer śledzenia
* @param string $old_status Poprzedni status InPost
* @param string $new_status Nowy status InPost
*/
do_action('polski_pro/inpost/status_updated', int $order_id, string $tracking_number, string $old_status, string $new_status);

Przykład - powiadomienie SMS o gotowości do odbioru:

add_action('polski_pro/inpost/status_updated', function (
int $order_id,
string $tracking_number,
string $old_status,
string $new_status
): void {
if ($new_status === 'ready_to_pickup') {
$order = wc_get_order($order_id);
$phone = $order->get_billing_phone();
send_sms($phone, sprintf(
'Twoja paczka %s czeka w Paczkomacie. Kod odbioru w e-mailu.',
$tracking_number
));
}
}, 10, 4);
RozmiarWymiary (cm)Waga max
A8 x 38 x 6425 kg
B19 x 38 x 6425 kg
C41 x 38 x 6425 kg

Rozmiar paczki może być ustawiany globalnie, per metoda wysyłki lub nadpisywany ręcznie w zamówieniu.

Mapa Paczkomatów nie ładuje się Sprawdź, czy token API jest poprawny i aktywny. Sprawdź konsolę przeglądarki pod kątem błędów CORS lub JavaScript. Upewnij się, że skrypt polski-pro-inpost-map.js jest załadowany.

Błąd generowania etykiety “Unauthorized” Token API wygasł lub nie ma uprawnień do tworzenia przesyłek. Wygeneruj nowy token w panelu InPost Manager.

Status przesyłki nie aktualizuje się Sprawdź, czy WP-Cron działa poprawnie. Uruchom ręcznie: wp cron event run polski_pro_inpost_tracking.

Ta strona ma wyłącznie charakter informacyjny i nie stanowi porady prawnej. Przed wdrożeniem skonsultuj się z prawnikiem. Polski for WooCommerce jest oprogramowaniem open source (GPLv2) dostarczanym bez gwarancji.