Program magazynowy WMS.net

Integracja WMS z Shoper - zamówienia, stany, statusy

Jak połączyć magazyn ze sklepem Shoper przez REST API: limit zapytań, źródło prawdy dla stanów, mapa statusów i ponowienia po błędzie w wymianie danych.

Opublikowano · Aktualizacja
www.programmagazyn.pl/integracje/
Dwie pracownice pakują zamówienia z kartonami na taśmie produkcyjnej w rękawiczkach ochronnych
Dwie pracownice pakują zamówienia z kartonami na taśmie produkcyjnej w rękawiczkach ochronnych
W skrócie

Jak połączyć magazyn ze sklepem Shoper przez REST API: limit zapytań, źródło prawdy dla stanów, mapa statusów i ponowienia po błędzie w wymianie danych.

Sklep na Shoperze przyjmuje zamówienie i płatność, a magazyn zaczyna pracę dopiero wtedy, gdy towar 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. Od 2024 roku historia marki wymienia integracje z platformami e-commerce (Baselinker, Shoper).

Ogólny przepływ danych między platformą a magazynem opisuje strona o integracji WMS z platformami e-commerce, a układ całego magazynu sklepu strona o WMS dla e-commerce. Ta strona zajmuje się tym, co jest specyficzne dla Shopera: zasobami API, limitem zapytań i statusami. Dane o API pochodzą z oficjalnej dokumentacji Shopera (stan na 6.10.2026). Drugą popularną drogę opisuje strona o integracji z BaseLinkerem.

Co Shoper udostępnia magazynowi

Jedno REST API, osobny zasób na każdy rodzaj danych i limit liczony na aplikację.

Zapytania kierujesz na adres sklepu z końcówką /webapi/rest/. Uwierzytelnienie opiera się na OAuth 2.0: aplikacja wysyła identyfikator i sekret metodą POST na /webapi/rest/auth, dostaje token i podaje go w nagłówku Authorization jako Bearer (dokumentacja uwierzytelnienia). Token ma ograniczoną ważność, więc usługa musi pobrać nowy bez udziału człowieka. Uprawnienia przydziela się osobno dla zasobu i czynności, na przykład orders_read albo orders_edit. Magazyn nie potrzebuje prawa usuwania zamówień, więc tego uprawnienia nie nadaje się w ogóle.

Limit liczy się na aplikację metodą cieknącego wiadra (dokumentacja żądań zbiorczych). Licznik bieżących wywołań wraca w nagłówku X-SHOP-API-CALLS, a pojemność wiadra w X-SHOP-API-LIMIT, domyślnie 10. Licznik maleje o wartość z X-SHOP-API-BANDWIDTH, domyślnie 2 na sekundę. Po przepełnieniu sklep zwraca błąd 429 z nagłówkiem Retry-After. Listy przychodzą stronami po najwyżej 50 rekordów (parametr limit, domyślnie 10), a do 25 wywołań można połączyć w jedno żądanie na /webapi/rest/bulk. Przy takim limicie liczy się kolejka z odstępem, a pojedyncze wywołanie nie ma znaczenia.

Dane wymieniane ze sklepem Shoper i zasoby API, którymi się je przenosi
DaneKierunekZasób lub zdarzenieOgraniczenie z dokumentacji
Nowe zamówieniaShoper → WMSorders, webhook order.createstrony po najwyżej 50 rekordów
Opłacenie zamówieniaShoper → WMSwebhook order.paidsklep musi móc wywołać adres odbioru
Status zamówieniaWMS → Shoperorders (PUT), statusesstatus_id z listy sklepu; typy new, opened, closed, not completed
Stan towaruWMS → Shoperproduct-stocksdo 25 wywołań w jednym żądaniu bulk
Paczka i numer przesyłkiWMS → Shoperparcelsnazwy pól potwierdza analiza

Przepływ zamówienia od Shopera do kuriera

Zamówienie pobiera usługa Windows, a sklep dostaje z powrotem status i paczkę.

Zamówienie można pobrać dwiema drogami. Webhook order.create (albo order.paid) wywołuje adres odbioru zaraz po zdarzeniu (dokumentacja zdarzenia order.status). Odpytywanie zasobu orders co jakiś czas nie wymaga niczego poza łącznością wychodzącą. Usługa Windows w sieci klienta, która nawiązuje tylko połączenia wychodzące po HTTPS, nie wystawia adresu odbioru, więc przy tej konfiguracji zostaje odpytywanie. Webhook wymaga adresu, który sklep może wywołać z Internetu, a to jest decyzja o bezpieczeństwie sieci, nie o wygodzie.

Zdarzenie przyspiesza integrację, ale kompletność gwarantuje dopiero odczyt kontrolny listy zamówień. Magazyn nie może zależeć od jednego powiadomienia.

Schemat pokazuje podział ról. Usługa stoi pośrodku, bo to ona pilnuje limitu i kolejki. Sklep nie widzi struktury WMS, a WMS nie zna adresu API sklepu.

Schemat wymiany danych między Shoperem, usługą SSService.exe i Studio WMS.net Trzy bloki w rzędzie: Shoper, usługa Windows SSService.exe i Studio WMS.net. Usługa odczytuje zamówienia z API Shopera, opcjonalnie przyjmuje webhook, zapisuje do sklepu status, paczkę i stan oraz przekazuje do WMS nowe zlecenia. Pod spodem sześć limitów API Shopera, które pilnuje kolejka usługi. Shoper REST API /webapi/rest/ webhooki, statusy, paczki SSService.exe usługa Windows kolejka i tabela wysyłkowa Studio WMS.net ZWZ, rezerwacja, WZ stany i dokumenty odczyt zamówień webhook (opcja) zapis do sklepu nowe zlecenie stan i status WZ Limity Shopera, które pilnuje kolejka usługi Pojemność wiadra 10 wywołań (domyślnie) Ubytek licznika 2 na sekundę (domyślnie) Przepełnienie błąd 429 i Retry-After Żądanie bulk do 25 wywołań naraz Lista zamówień do 50 rekordów na stronę Token OAuth wygasa, pobierany nowy
Usługa SSService.exe łączy sklep i magazyn. Szare pola pod spodem to limity API, które kolejka musi pilnować.

W Studio WMS.net zamówienie ze sklepu przyjmuje postać zlecenia wydania ZWZ z odbiorcą i przewoźnikiem w nagłówku. Kompletację prowadzi aplikacja magazynowa na Androidzie, a przy pakowaniu na podstawie ZWZ powstaje dokument WZ. Zasady pracy na hali opisuje strona o kompletacji zamówień.

Stany i źródło prawdy

Gdy sklep i magazyn liczą te same sztuki, ostatnie słowo ma ten, który zna rezerwacje.

Shoper zapisuje stan towaru w zasobie product-stocks. Fizyczną liczbę sztuk zna tylko magazyn, bo widzi skany i lokalizacje. Do sklepu powinien trafiać stan dostępny, czyli towar na półce pomniejszony o rezerwacje (opis na stronie o stanach magazynowych). Zmianę wykonuje żądanie PUT na wskazany wiersz zasobu, a wiele zmian łączy się w paczki po 25. Pełne uzgodnienie całego katalogu robi się poza godzinami szczytu, a w ciągu dnia wysyła się tylko pozycje, w których stan się zmienił. Domyślny ubytek 2 wywołań na sekundę nie pozwala inaczej.

Kto prowadzi poszczególne dane w układzie Shoper i WMS
DaneProwadziPowód
Treść zamówienia, płatność, adresShoperZmienia się po stronie kupującego
Stan fizyczny i lokalizacjaWMSTylko magazyn widzi skany i dokumenty
Rezerwacja pod zamówienieWMSPowstaje przy zleceniu wydania
Stan widoczny w sklepieWMS liczy, Shoper publikujeOferta ma pokazywać półkę pomniejszoną o rezerwacje
Opis i cena produktuShoperMagazyn nie edytuje katalogu handlowego
Status zamówieniaWMS zmienia, Shoper przechowujeEtap pracy wynika z dokumentu magazynowego
Ręczna zmiana stanu w panelu sklepu zostanie nadpisana przy najbliższej synchronizacji. Albo sprzedawca przestaje edytować stan w panelu, albo każdą korektę wprowadza w magazynie.

Wiersz zasobu product-stocks trzeba połączyć z indeksem WMS po jednym polu, na przykład po kodzie produktu albo po numerze EAN. Które z nich sklep wypełnia konsekwentnie, sprawdza analiza. Zapas bezpieczeństwa dla towarów o małym stanie odejmuje się od wartości wysyłanej do sklepu, a jego wielkość ustala sprzedawca.

Statusy zamówień i ich mapowanie

Listę statusów tworzy sprzedawca, więc ich odpowiedniki w WMS trzeba uzgodnić.

Zasób statuses zwraca listę statusów sklepu. Każdy ma liczbowy identyfikator status_id i typ: new, opened, closed albo not completed. Zmianę wykonuje zapis pola status_id w zamówieniu (dokumentacja zasobu orders), a webhook order.status przesyła zmianę razem z identyfikatorem zamówienia i nowego statusu. Magazyn nie wyśle więc słowa „spakowane”, tylko identyfikator, który sprzedawca wcześniej założył. Przy statusie sklep przechowuje też ustawienie powiadomienia e-mail o zmianie, więc status pośredni może wysłać kupującemu wiadomość, której nikt nie planował.

Etap w magazynie i przykładowy status w sklepie Shoper
Zdarzenie w WMSDokumentPrzykładowy status
Towar zarezerwowany, zlecenie zapisaneZWZW realizacji
Kompletacja i pakowanie zakończoneWZ w tokuSpakowane
Paczka przekazana kurierowiWZ zamkniętyWysłane
Brak towaru na lokalizacjiZWZ z uwagąWstrzymane do wyjaśnienia

Przed każdą zmianą integracja odczytuje bieżący status 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ę. Nazwy statusów w tabeli są przykładami, a ich identyfikatory podaje sklep.

Etykiety i numery przesyłek

Dane paczki są znane dopiero przy pakowaniu, więc numer wraca do sklepu na końcu.

Informacje o przesyłce Shoper przechowuje w zasobie parcels, do którego magazyn zapisuje numer przesyłki po zamknięciu dokumentu WZ. Etykietę wystawia ten, kto ma skonfigurowaną umowę z przewoźnikiem. Gdy robi to magazyn przez Studio Spedycja.net (opis programu), numer listu przewozowego jest skojarzony z dokumentem WZ, a integracja zapisuje go w sklepie. Gdy etykietę tworzy narzędzie przewoźnika po stronie sklepu, numer wraca do WMS i trafia do tego samego dokumentu. Zasady wysyłki opisuje strona o firmach kurierskich. Nazwy pól zasobu parcels i obsługę poszczególnych przewoźników potwierdza analiza.

Pracownica odbiera wydrukowaną etykietę z drukarki z kolorowym ekranem dotykowym w magazynie
Drukarka przy stanowisku pakowania wydaje etykietę dopiero po zamknięciu WZ, kiedy znany jest numer przesyłki.

Zwroty od kupujących

Pieniądze wracają do kupującego ze sklepu, a towar do magazynu.

Zwrot płatności należy do sklepu i bramki płatniczej, a API Shopera ma dla niego osobne zasoby zwrotów i transakcji zamówienia. Magazyn zajmuje się towarem. Przyjmuje paczkę dokumentem przyjęcia i odkłada ją na wydzieloną lokalizację poza stanem dostępnym. Integracja wiąże paczkę z zamówieniem po numerze, więc magazynier widzi, co kupujący zamawiał. Dopiero ocena stanu decyduje, czy towar wraca na półkę sprzedażową. Wtedy stan dostępny rośnie, a kolejna synchronizacja wysyła do sklepu nową wartość. 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.

Kluczem każdej wymiany jest numer zamówienia ze sklepu, więc ponowione pobranie nie tworzy drugiego zlecenia. Zapis do Shopera trafia najpierw do tabeli wysyłkowej z unikalnym identyfikatorem komunikatu. Po powrocie łączności usługa wysyła tylko to, czego sklep jeszcze nie przyjął, i nie dubluje ruchu. Dokumentacja zaleca przy błędzie 429 i błędach serwera rosnące odstępy między próbami.

Typowe sytuacje błędne i reakcja integracji ze sklepem Shoper
SytuacjaSkutekReakcja integracji
Błąd 429, przepełnione wiadroWywołania odrzuconePauza o wartość Retry-After, potem wznowienie kolejki
Wygasły token OAuthSklep odrzuca zapytaniaNowe uwierzytelnienie i powtórzenie wywołania
Webhook nie dotarłZamówienie czeka w sklepieOdczyt kontrolny zasobu orders nadrabia lukę
Ten sam numer zamówienia pobrany dwa razyZdwojone zlecenie wydaniaOdrzucenie drugiej próby po kluczu zamówienia
Anulowanie w trakcie kompletacjiRyzyko nadpisania decyzji sprzedawcyOdczyt statusu przed zapisem i zwolnienie rezerwacji
Błąd serwera sklepuZapis nie doszedłPonowienie z rosnącym odstępem, alarm po kolejnej porażce

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

Co ustala analiza przedwdrożeniowa

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

Integracje w Studio WMS.net, w tym z platformami sprzedażowymi, wykonuje usługa Windows SSService.exe, instalowana na serwerze. Strona opisuje drogę wymiany i granice API Shopera, a nie listę gotowych ustawień ani gotowy moduł do tej platformy. Zakres dla konkretnego sklepu potwierdza analiza przedwdrożeniowa. Na liście decyzji są cztery pozycje:

  • Pobieranie zamówień - webhook albo odpytywanie, oraz interwał przy domyślnym ubytku 2 wywołań na sekundę.
  • Identyfikacja towaru - po czym łączy się indeks WMS z wierszem product-stocks. Wybór musi być jeden i spójny.
  • Mapa statusów - które identyfikatory status_id odpowiadają etapom ZWZ i WZ, i które z nich wysyłają kupującemu e-mail.
  • Przewoźnicy - kto wystawia etykietę i gdzie zapisuje się numer przesyłki.

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

Słownik pojęć

Pojęcia z integracji ze sklepem Shoper

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

RESTInterfejs REST API
Zbiór adresów, pod którymi program wywołuje funkcje sklepu zapytaniami HTTP. W Shoperze wszystkie stoją pod końcówką /webapi/rest/ adresu sklepu.
OAUTHOAuth 2.0
Sposób uwierzytelnienia, w którym aplikacja wymienia identyfikator i sekret na token dostępu. Token podaje się w nagłówku jako Bearer i ma ograniczoną ważność.
HOOKWebhook
Powiadomienie, które sklep wysyła pod wskazany adres po zdarzeniu, na przykład po utworzeniu zamówienia. Wymaga adresu odbioru dostępnego dla sklepu.
LEAKCieknące wiadro
Algorytm limitu, w którym każde wywołanie podnosi licznik, a licznik maleje stałym tempem. Po przepełnieniu sklep odrzuca zapytania błędem 429.
BULKŻądanie bulk
Jedno zapytanie POST zawierające do 25 pojedynczych wywołań. Zmniejsza liczbę połączeń, ale nie znosi limitu API.
OUTTabela wysyłkowa
Tabela w bazie, do której trafia każdy zapis przeznaczony dla sklepu, razem z unikalnym identyfikatorem komunikatu. Pozwala ponowić wysyłkę bez zdwojenia danych.
ATPStan dostępny
Towar na półce pomniejszony o rezerwacje. To ta wartość trafia do sklepu, a nie stan fizyczny.
429Retry-After
Nagłówek odpowiedzi 429 z liczbą sekund, po których wolno ponowić zapytanie. Usługa wstrzymuje kolejkę na ten czas.
FAQ

Integracja WMS ze sklepem Shoper - najczęstsze pytania

01

Czy Shoper ma limit zapytań do API?

Tak. Limit liczy się na aplikację metodą cieknącego wiadra: domyślnie 10 wywołań w wiadrze i ubytek 2 na sekundę. Po przepełnieniu sklep zwraca błąd 429 z nagłówkiem Retry-After, więc integracja kolejkuje zapytania.

02

Czy WMS musi korzystać z webhooków Shopera?

Nie musi. Zamówienia można odpytywać przez API, co wymaga tylko połączeń wychodzących z serwera. Webhook skraca opóźnienie, ale potrzebuje adresu odbioru dostępnego dla sklepu, więc o wyborze decyduje analiza.

03

Kto prowadzi stan towaru, Shoper czy WMS?

Stan fizyczny prowadzi WMS, bo zna skany i lokalizacje. Do zasobu product-stocks trafia stan dostępny, czyli półka pomniejszona o rezerwacje. Ręczna korekta w panelu sklepu zostanie nadpisana, jeśli analiza nie ustali innej reguły.

04

Czy Studio WMS.net ma gotowy moduł do Shopera?

Strona nie obiecuje gotowej wtyczki. Historia marki wymienia integracje z platformami e-commerce, wśród nich z Shoperem. Integracje wykonuje usługa Windows SSService.exe, a zakres dla konkretnego sklepu potwierdza analiza przedwdrożeniowa.

05

Co się dzieje z zamówieniem anulowanym w trakcie kompletacji?

Przed każdą zmianą statusu integracja czyta bieżący status zamówienia i widzi anulowanie. WMS zwalnia rezerwację i zgłasza towar do odłożenia. Status anulowania zostaje bez zmian.

Chcesz zobaczyć, jak zamówienie ze sklepu Shoper przechodzi przez magazyn?

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