Shoper REST API
Shoper to popularna polska platforma SaaS dla sklepów internetowych. REST API umożliwia zarządzanie zamówieniami, produktami, klientami i stanami magazynowymi. Token sesji odnawiany jest każdą godziną.
1. Autoryzacja – token sesji
Shoper API nie używa stałych kluczy API – każda sesja wymaga pobrania tymczasowego tokenu przez POST na /webapi/rest/auth. Token wygasa po godzinie.
import requests
SHOP_URL = "https://twojsklep.shoper.pl"
LOGIN = "TWOJ_LOGIN_API"
PASSWORD = "TWOJE_HASLO_API"
def pobierz_token() -> str:
"""Pobiera token sesji Shoper API (ważny 1 godzinę)."""
resp = requests.post(
f"{SHOP_URL}/webapi/rest/auth",
json={"login": LOGIN, "pass": PASSWORD},
)
resp.raise_for_status()
token = resp.json()["token"]
print(f"Token uzyskany: {token[:20]}...")
return token
TOKEN = pobierz_token()
def shoper_get(endpoint: str, params: dict = None) -> dict:
resp = requests.get(
f"{SHOP_URL}/webapi/rest/{endpoint}",
headers={"Authorization": TOKEN},
params=params or {},
)
resp.raise_for_status()
return resp.json()
def shoper_put(endpoint: str, data: dict) -> dict:
resp = requests.put(
f"{SHOP_URL}/webapi/rest/{endpoint}",
headers={"Authorization": TOKEN, "Content-Type": "application/json"},
json=data,
)
resp.raise_for_status()
return resp.json()2. Pobieranie zamówień
Shoper API zwraca max 50 rekordów na stronę. Iteruj po stronach używając parametrów page i limit.
# Pobierz zamówienia Shoper z paginacją
def pobierz_zamowienia(token_func, page: int = 1, limit: int = 50) -> dict:
TOKEN = token_func()
return shoper_get(f"orders?page={page}&limit={limit}&filters[status_id]=1")
# Pobierz wszystkie zamówienia
TOKEN = pobierz_token()
strona = 1
limit = 50
wszystkie = []
while True:
wynik = shoper_get(f"orders?page={strona}&limit={limit}", None)
lista = wynik.get("list", [])
wszystkie.extend(lista)
print(f"Strona {strona}: {len(lista)} zamówień | łącznie: {len(wszystkie)}")
if len(lista) < limit:
break
strona += 1
print(f"Łącznie: {len(wszystkie)} zamówień")
for zam in wszystkie[:3]:
print(
"ID: " + str(zam["order_id"]) +
" | " + zam.get("delivery_firstname", "") + " " + zam.get("delivery_lastname", "") +
" | " + str(zam.get("order_total", "?")) + " PLN"
)Potrzebujesz integracji Shoper na zamówienie?
Budujemy integracje Shoper z BaseLinker, hurtowniami, ERP i systemami logistycznymi. Pierwsza konsultacja bezpłatna.