Program magazynowy WMS.net

Integracja WMS z PrestaShop - zamówienia i stany towaru

Jak połączyć magazyn ze sklepem PrestaShop przez Webservice: kto prowadzi stan dostępny, jak zmienia się status zamówienia i co robi integracja po błędzie.

Opublikowano · Aktualizacja
www.programmagazyn.pl/integracje/
Pracownik w czapce pakuje zamówienie e-commerce, karton z pomarańczowymi etykietami wysyłkowymi
Pracownik w czapce pakuje zamówienie e-commerce, karton z pomarańczowymi etykietami wysyłkowymi
W skrócie

Jak połączyć magazyn ze sklepem PrestaShop przez Webservice: kto prowadzi stan dostępny, jak zmienia się status zamówienia i co robi integracja po błędzie.

PrestaShop trzyma w sklepie zamówienia i stany towaru, a magazyn potrzebuje z nich tylko tego, co da się spakować. Studio WMS.net nie zastępuje panelu sklepu. Rezerwuje towar na lokalizacji, prowadzi kompletację i wydanie, a wynik odsyła do sklepu: status zamówienia i numer przesyłki. Stan dostępny wraca tą samą drogą.

Ogólny przepływ danych między platformą a magazynem opisuje strona o integracji WMS z platformami e-commerce, a układ magazynu sklepu strona o WMS dla e-commerce. Drogę przez warstwę pośrednią pokazuje integracja WMS z BaseLinkerem, a sprzedaż na Allegro integracja WMS z Allegro. Tutaj schodzimy do Webservice PrestaShop, czyli interfejsu, przez który magazyn rozmawia ze sklepem bezpośrednio. Opis opiera się na dokumentacji dla programistów PrestaShop 9 (stan na 6.10.2026), więc wersję sklepu potwierdza analiza.

Co udostępnia Webservice PrestaShop

Jeden interfejs CRUD i osobny zasób na każdy rodzaj danych.

Webservice daje dostęp do bazy sklepu przez operacje CRUD: POST tworzy rekord, GET go czyta, PUT aktualizuje, PATCH zmienia wybrane pola, a DELETE usuwa. Adres leży w katalogu /api/ instalacji sklepu. Uwierzytelnienie opiera się na kluczu API podanym jako nazwa użytkownika przy pustym haśle, a dokumentacja zaleca nagłówek autoryzacji zamiast klucza w adresie.

Interfejs włącza się w panelu sklepu w sekcji Advanced Parameters > Web service, gdzie powstaje też 32-znakowy klucz. Uprawnienia nadaje się osobno dla każdego zasobu i każdej metody. Instrukcja tworzenia dostępu radzi nie dawać kluczom API wszystkich praw do wszystkich zasobów, więc magazyn dostaje osobny klucz z odczytem zamówień i zapisem w kilku zasobach opisanych niżej.

Odpowiedź da się zawęzić. Parametr display wybiera pola, filter[pole]=wartość filtruje rekordy, a limit=0,100 ogranicza ich liczbę. Wynik porządkuje sort, a zakres dat wymaga date=1. Format JSON włącza output_format=JSON. Schemat zasobu pokazuje schema=synopsis, co oszczędza zgadywania nazw pól.

Dane wymieniane ze sklepem PrestaShop i zasoby Webservice, którymi się je przenosi
DaneKierunekZasóbUwaga z dokumentacji
Nowe zamówieniasklep → WMSordersPole current_state da się filtrować; pozycje w order_rows niosą referencję i EAN13
Stan dostępnyWMS → sklepstock_availablesRekord dotyczy produktu i kombinacji; ilość w polu quantity
Status zamówieniaWMS → skleporder_historiesPOST z id_order i id_order_state; sendemail=1 wysyła e-mail
Numer przesyłkiWMS → skleporder_carriersPole tracking_number; wymagane id_order i id_carrier
Korekta po zwrociesklep → WMSorder_slipDokument korygujący z pozycjami order_slip_details

Opis zasobów nie podaje limitu zapytań na minutę. Tempo wymiany ogranicza więc wydajność hostingu sklepu, a nie reguła interfejsu, i ustala je analiza.

Przepływ zamówienia od sklepu do kuriera

Magazyn odpytuje sklep i odpowiada po każdym etapie.

Webservice odpowiada na zapytania, więc to magazyn sprawdza, czy pojawiły się nowe zamówienia. Integracja filtruje je po statusie (filter[current_state]), sortuje rosnąco po identyfikatorze i pobiera partiami przez limit. Zlecenie wydania powstaje dla zamówienia w statusie, który sklep uznaje za opłacony. Które statusy to oznaczają, a także czy sklep potrafi sam powiadomić magazyn o nowym zamówieniu, ustala analiza.

Zasoby Webservice PrestaShop i odpowiedniki w Studio WMS.net Schemat w dwóch kolumnach. Zasób orders przekazuje zamówienia do zlecenia wydania ZWZ. Magazyn odsyła stan dostępny do stock_availables, wpisy statusu do order_histories i numer listu do order_carriers. Całość obsługuje usługa SSService.exe z ruchem wychodzącym HTTPS. PrestaShop (Webservice) Studio WMS.net orders zamówienia ze statusem Zlecenie wydania ZWZ rezerwacja towaru GET + filter stock_availables pole quantity w kombinacji Stan dostępny półka minus rezerwacje PUT lub PATCH order_histories nowy wpis statusu Etapy ZWZ i WZ kompletacja i pakowanie POST order_carriers pole tracking_number Numer listu z etykiety przewoźnika PUT lub PATCH SSService.exe: usługa Windows na serwerze, ruch tylko wychodzący HTTPS Zapis do sklepu przechodzi przez tabelę wysyłkową z ponawianiem i unikalnym identyfikatorem komunikatu.
Cztery zasoby Webservice i kierunek przepływu. Zamówienia płyną do magazynu, a stan towaru i dane przesyłki wracają do sklepu.

W Studio WMS.net zamówienie przyjmuje postać zlecenia wydania ZWZ z odbiorcą i przewoźnikiem w nagłówku. Pozycje łączy się z indeksem towaru po referencji albo po EAN13, bo oba pola leżą w order_rows. Kompletację prowadzi aplikacja magazynowa na Androida, a zasady pracy na hali opisuje strona o kompletacji zamówień. Przy pakowaniu na podstawie ZWZ powstaje dokument WZ, który omawia strona o dokumentach WZ.

Stany magazynowe w PrestaShop

Zasób stock_availables przyjmuje ilość dla produktu i jego kombinacji.

Stan towaru w sklepie leży w zasobie stock_availables. Rekord wiąże ilość (quantity) z produktem i jego kombinacją (id_product_attribute), a pola depends_on_stock i out_of_stock opisują zależność od magazynu oraz zachowanie sklepu przy braku towaru. W sklepie z kombinacjami, na przykład rozmiarami i kolorami, stan wysyła się osobno dla każdej kombinacji. Indeks WMS musi więc wskazywać kombinację, a nie tylko produkt.

Dokumentacja opisuje aktualizację na dwa sposoby: PUT z pełnym, wcześniej pobranym zasobem albo PATCH z samym identyfikatorem i zmienionymi polami. Dla stanów wygodniejszy jest PATCH, bo przenosi tylko liczbę, ale o jego przyjęciu przez ten zasób w danej wersji sklepu rozstrzyga test w analizie. Do sklepu powinien trafiać stan dostępny, czyli towar na półce pomniejszony o rezerwacje, który opisuje strona o stanach magazynowych.

Kto jest źródłem prawdy dla poszczególnych danych
DaneŹródło prawdyPowód
Treść zamówienia, płatność, adresPrestaShopZmienia się po stronie kupującego, nie magazynu
Stan fizyczny i lokalizacjaWMSTylko magazyn widzi skany i dokumenty
Rezerwacja pod zamówienieWMSPowstaje przy zleceniu wydania
Stan dostępny w sklepieWMS liczy, PrestaShop publikujeOferta ma pokazywać półkę pomniejszoną o rezerwacje
Status realizacjiWMS zmienia, PrestaShop pokazujeEtap pracy wynika z dokumentu magazynowego
Stan dostępny w sklepie liczy jeden system, ten, który zna rezerwacje. Ręczna zmiana quantity w panelu sklepu przy jednoczesnym zapisie z WMS kończy się rozjazdem, którego nikt nie wyjaśni po fakcie.

Po inwentaryzacji do sklepu wysyła się pełną wartość quantity, a nie różnicę, bo powtórzenie takiego zapisu niczego nie psuje. Zapas bezpieczeństwa dla towarów o małym stanie ustala analiza.

Statusy zamówień i ich mapowanie

Statusy zakłada sprzedawca, więc ich odpowiedniki w WMS trzeba uzgodnić.

Zasób order_states opisuje status: jego nazwę w wielu językach oraz flagi, na przykład paid i shipped. Do statusu przypisano też szablon wiadomości. Magazyn nie wyśle więc słowa „spakowane”, tylko identyfikator statusu, który sprzedawca wcześniej założył. Zmianę wykonuje POST do order_histories z wymaganymi polami id_order i id_order_state.

Parametr sendemail=1 uruchamia wiadomość do kupującego zgodną z szablonem statusu. Wysyłka e-maila przy każdej zmianie bywa niepożądana, dlatego analiza wskazuje, które zmiany ją wywołują. Tabela podaje punkt wyjścia, a nazwy w ostatniej kolumnie są przykładami.

Etap w magazynie i przykładowy status w sklepie
Zdarzenie w WMSDokumentPrzykładowy statusZapis
Towar zarezerwowany, zlecenie zapisaneZWZW przygotowaniuPOST order_histories
Kompletacja i pakowanie zakończoneWZ w tokuSpakowanePOST order_histories
Paczka przekazana kurierowiWZ zamkniętyWysłanenumer listu, potem POST order_histories
Brak towaru na lokalizacjiZWZ z uwagąWstrzymane do wyjaśnieniaPOST order_histories bez e-maila

Jedna reguła chroni przed błędem: przed zmianą statusu integracja odczytuje bieżący current_state zamówienia. Jeżeli sprzedawca anulował zamówienie w trakcie kompletacji, WMS tego nie nadpisuje. Zwalnia rezerwację i zgłasza towar do odłożenia na lokalizację.

Przesyłki i numer listu

Numer listu powstaje po spakowaniu i wraca do sklepu przed zmianą statusu.

Numer przesyłki ma w PrestaShop dwa miejsca. Pole shipping_number leży w zasobie orders, a pole tracking_number w zasobie order_carriers, który wiąże zamówienie z przewoźnikiem. Magazyn zapisuje numer w order_carriers, a który z dwóch zasobów sklep pokazuje kupującemu, sprawdza analiza.

Etykietę kurierską magazyn przygotowuje sam. Integracja ze Studio Spedycja.net rejestruje numery listów i kojarzy je z dokumentami WZ, a drukarka etykiet drukuje je na stanowisku pakowania, jak opisuje strona o wysyłce przez firmy kurierskie. Numer zapisuje się przed zmianą statusu na wysłane, bo kupujący po tej zmianie od razu szuka listu.

Pracownica skanuje paczkę za pomocą tabletu ze skanerem
Skan paczki przed wydrukiem etykiety potwierdza zawartość. Dopiero po nim numer listu trafia do sklepu.

Zwroty i dokumenty korygujące

Sklep rozlicza pieniądze, a magazyn przyjmuje towar.

Dokumentacja opisuje zasób order_slip, czyli dokument korygujący z kwotami i pozycjami order_slip_details. Odpowiada on na pytanie o pieniądze, a nie o towar. Magazyn odpowiada za paczkę: przyjmuje ją dokumentem przyjęcia, odkłada na wydzieloną lokalizację poza stanem dostępnym i dopiero po ocenie zwraca na półkę sprzedażową.

Zwrot wiąże się z zamówieniem po polu id_order, więc magazynier skanujący paczkę widzi, co kupujący zamawiał. Czy sklep rejestruje zwrot towaru osobnym zasobem Webservice, czy tylko wystawia dokument korygujący, potwierdza analiza. Decyzję o zwrocie pieniędzy podejmuje sprzedawca poza magazynem, na przykład w systemie ERP połączonym z WMS.

Błędy i ponowienia

Po awarii integracja ma dojść do poprawnego stanu bez ręcznej interwencji.

Każda wymiana ma jawny klucz, którym jest numer zamówienia z pola reference albo jego identyfikator. Dzięki temu ponowione pobranie nie tworzy drugiego zlecenia, a powtórzony zapis quantity niczego nie zmienia. Wychodzące komunikaty trafiają do tabeli wysyłkowej z ponawianiem i unikalnym identyfikatorem, więc po powrocie łączności ruch nie dubluje się.

Wyjątkiem jest POST do order_histories, bo każde wywołanie dodaje nowy wpis historii. Powtórzenie po błędzie sieci mogłoby więc zapisać status dwa razy i wysłać drugi e-mail. Dlatego integracja czyta current_state przed zapisem i pomija zmianę, która już zaszła.

Typowe sytuacje błędne i reakcja integracji
SytuacjaSkutekReakcja integracji
Klucz wyłączony albo bez uprawnienia do zasobuZapytania odrzuconeAlarm i kontrola uprawnień klucza dla każdego zasobu
Sklep wolny lub niedostępnyBrak odpowiedziKolejka wychodząca i ponowienie po wydłużanym odstępie
Powtórzony POST do order_historiesDrugi wpis historii i drugi e-mailOdczyt current_state przed zapisem
Ten sam numer zamówienia pobrany dwa razyZdwojone zlecenie wydaniaOdrzucenie drugiej próby po kluczu zamówienia
Status zmieniony ręcznie w sklepie w trakcie kompletacjiRozjazd statusówOdczyt przed zapisem i reguła z analizy

Błąd, który zniknął po ponowieniu, nadal trzeba zapisać w dzienniku integracji. Bez zapisu nikt nie sprawdzi, czy wraca.

Kto wykonuje integrację po stronie Studio WMS.net

Usługa Windows na serwerze, a zakres dla sklepu potwierdza analiza.

Integracje w Studio WMS.net, w tym z platformami sprzedażowymi, wykonuje usługa Windows SSService.exe instalowana na serwerze. Działa w sieci klienta i łączy się ze sklepem ruchem wychodzącym HTTPS, więc nie trzeba publikować w Internecie punktu dostępowego magazynu.

Strona opisuje drogę wymiany przez Webservice, a nie gotowy moduł do instalacji w sklepie. Które zasoby wchodzą w zakres dla danego sklepu, potwierdza analiza przedwdrożeniowa. Zachowanie przy awarii opisuje sekcja o błędach i ponowieniach.

Co ustala analiza wdrożeniowa

Cztery decyzje, od których zależy zakres prac.

Zakres integracji dla konkretnego sklepu wynika z analizy przedwdrożeniowej. Na liście decyzji są cztery pozycje:

  • Statusy sklepu - które identyfikatory order_states odpowiadają etapom ZWZ i WZ oraz które zmiany wysyłają e-mail.
  • Identyfikacja towaru - po czym łączy się indeks WMS z produktem i kombinacją: referencja czy EAN13.
  • Tempo wymiany - jak często pobiera się zamówienia i wysyła stany przy wydajności hostingu sklepu.
  • Przesyłki i zwroty - gdzie zapisuje się numer listu i jak sklep rejestruje zwrot towaru.

Zakres prac programistycznych zależy od liczby i złożoności systemów, z którymi magazyn ma się komunikować, a zasady wyceny opisuje cennik.

Słownik pojęć

Pojęcia z integracji z PrestaShop

Terminy, które padają przy łączeniu magazynu ze sklepem PrestaShop, wyjaśnione w kontekście wymiany danych.

WSWebservice
Interfejs sklepu udostępniający bazę przez operacje CRUD pod adresem /api/. Wymaga włączenia w panelu i klucza z uprawnieniami.
KEYKlucz API
32-znakowy ciąg generowany w panelu sklepu, który identyfikuje integrację. Uprawnienia przypisuje się osobno dla każdego zasobu.
RESZasób
Typ danych dostępny w Webservice, na przykład orders albo stock_availables. Każdy ma własny adres i zestaw pól.
STSStatus zamówienia
Etap realizacji zdefiniowany w sklepie w zasobie order_states. Magazyn ustawia go przez identyfikator, a nie przez nazwę.
HISTHistoria zamówienia
Lista zmian statusu zapisywana w zasobie order_histories. Każdy POST dodaje nowy wpis, więc powtórzenie go dubluje.
COMBKombinacja
Wariant produktu, na przykład rozmiar i kolor. Stan w sklepie liczy się dla kombinacji, nie tylko dla produktu.
ATPStan dostępny
Towar na półce pomniejszony o rezerwacje. To ta wartość trafia do sklepu, a nie stan fizyczny.
IDEMIdempotentność
Cecha operacji, która po powtórzeniu daje ten sam wynik. Zapis stanu ją ma, a dodanie wpisu historii nie.
FAQ

Integracja WMS z PrestaShop - najczęstsze pytania

01

Czy PrestaShop sam powiadamia magazyn o nowym zamówieniu?

Opis Webservice zakłada zapytania, więc magazyn pobiera zamówienia w wybranym odstępie. Czy sklep ma moduł powiadomień o nowym zamówieniu, ustala analiza. Częstość pobierania zależy od liczby zamówień i wydajności hostingu.

02

Jakie uprawnienia klucza API potrzebuje magazyn?

Osobny klucz z odczytem zamówień i zapisem w zasobach stanów, statusów oraz przesyłek. Dokumentacja odradza dawanie kluczom API wszystkich praw do wszystkich zasobów. Wyciek klucza wymaga jego wyłączenia w panelu sklepu.

03

Czy zmiana statusu przez Webservice wysyła e-mail do kupującego?

Wysyła go wtedy, gdy w zapytaniu podano parametr sendemail=1. Treść wynika z szablonu przypisanego do statusu w sklepie. Które zmiany mają wysyłać wiadomość, ustala analiza.

04

Kto prowadzi stan towaru, PrestaShop czy WMS?

Stan fizyczny prowadzi WMS, bo zna skany i lokalizacje. Sklep dostaje z niego stan dostępny i publikuje go w ofercie. Ręczna zmiana quantity w panelu sklepu wymaga osobnej reguły.

05

Czy do PrestaShop jest gotowy moduł integracyjny?

Nie deklarujemy gotowego modułu. Integrację wykonuje usługa SSService.exe przez Webservice sklepu, a zakres dla konkretnego sklepu potwierdza analiza przedwdrożeniowa.

Chcesz sprawdzić, jak zamówienie z PrestaShop przechodzi przez magazyn?

Uruchom bezpłatne demo programu magazynowego WMS.net albo opisz swój sklep w zapytaniu o wycenę.