PrestaShop WebService API
PrestaShop WebService to wbudowane API dostępne od wersji 1.4. Daje pełny dostęp do zasobów sklepu przez HTTP. Autoryzacja przez klucz API w Basic Auth (klucz jako login, puste hasło).
1. Konfiguracja klienta
Uwaga: Zapis (PUT/POST) w PrestaShop API wymaga XML – nie JSON. Odczyt możesz robić przez ?output_format=JSON.
import requests
from requests.auth import HTTPBasicAuth
import xml.etree.ElementTree as ET
SHOP_URL = "https://twojsklep.pl"
API_KEY = "TWOJ_KLUCZ_WEBSERVICE" # z panelu PrestaShop
# PrestaShop API obsługuje zarówno XML jak i JSON
# JSON przez dodanie parametru ?output_format=JSON
BASE_URL = f"{SHOP_URL}/api"
def ps_get(resource: str, params: dict = None) -> dict:
"""Pobierz zasoby PrestaShop API jako JSON."""
all_params = {"output_format": "JSON", **(params or {})}
resp = requests.get(
f"{BASE_URL}/{resource}",
auth=HTTPBasicAuth(API_KEY, ""), # hasło puste
params=all_params,
)
resp.raise_for_status()
return resp.json()
def ps_put(resource: str, resource_id: int, xml_payload: str) -> None:
"""Aktualizuj zasób przez PUT z payloadem XML."""
resp = requests.put(
f"{BASE_URL}/{resource}/{resource_id}",
auth=HTTPBasicAuth(API_KEY, ""),
data=xml_payload,
headers={"Content-Type": "application/xml"},
)
resp.raise_for_status()
print(f"Zaktualizowano {resource}/{resource_id}")
print("PrestaShop API gotowe")2. Pobieranie zamówień
Paginacja przez parametr limit w formacie offset,count. Parametr display=full zwraca wszystkie pola.
# Pobierz zamówienia PrestaShop z paginacją
def pobierz_zamowienia(limit_per_page: int = 50) -> list:
wszystkie = []
offset = 0
while True:
wynik = ps_get("orders", {
"limit": f"{offset},{limit_per_page}",
"display": "full",
"sort": "[id_order]_DESC",
})
zamowienia = wynik.get("orders", [])
wszystkie.extend(zamowienia)
print(f"Pobrano {len(wszystkie)} zamówień...")
if len(zamowienia) < limit_per_page:
break
offset += limit_per_page
return wszystkie
zamowienia = pobierz_zamowienia()
print(f"Łącznie: {len(zamowienia)} zamówień")
for zam in zamowienia[:3]:
print(
"ID: " + str(zam["id"]) +
" | klient: " + str(zam.get("id_customer", "?")) +
" | kwota: " + str(zam.get("total_paid_tax_incl", "?")) + " PLN" +
" | status: " + str(zam.get("current_state", "?"))
)Potrzebujesz integracji PrestaShop?
Budujemy integracje PrestaShop z hurtowniami, ERP i systemami logistycznymi. Pierwsza konsultacja bezpłatna.
FAQ
Gdzie włączyć i skonfigurować PrestaShop WebService API?
Panel PrestaShop → Zaawansowane → Webservice → Włącz. Następnie kliknij Dodaj nowy klucz. Ustaw uprawnienia (GET/POST/PUT/DELETE) dla wybranych zasobów i skopiuj wygenerowany klucz.
XML czy JSON – co wybrać w PrestaShop API?
PrestaShop API natywnie zwraca XML. JSON uzyskasz przez parametr ?output_format=JSON. Przy odczycie JSON jest wygodniejszy. Przy zapisie (PUT/POST) wymagany jest XML – PrestaShop nie akceptuje JSON dla zapisu.
Jak działa limit i paginacja w PrestaShop API?
Parametr limit przyjmuje dwa formaty: samo N (pierwsze N rekordów) lub offset,N (rekordy od offsetu). Np. limit=50,50 zwraca rekordy 51–100. Brak wbudowanego cursor-based paginacji.
Jak zaktualizować stan magazynowy produktu przez API?
Stany magazynowe to zasób stock_availables. Pobierz listę przez GET /api/stock_availables, znajdź rekordy dla Twojego produktu i aktualizuj pole quantity przez PUT z payloadem XML.