Today Automate logo
Dokumentacja z przykładami kodu

Shopify Admin API – Kompletny Przewodnik

Gotowe przykłady w Python, PHP i JavaScript. Autoryzacja, zamówienia, produkty, fulfillment.

Access TokenREST + GraphQL2 req/sWebhooks

Base URL

https://{shop}.myshopify.com/admin/api/{version}

Autoryzacja

X-Shopify-Access-Token: {token}

Rate limit

2 req/s · bucket 40

Shopify Admin API

Shopify Admin API to REST i GraphQL API dające pełen dostęp do danych sklepu. Zarządzaj zamówieniami, produktami, klientami, wysyłką i płatnościami programowo.

1. Konfiguracja klienta

Access Token generujesz w panelu Shopify: Ustawienia → Aplikacje → Opracuj aplikacje. Token ma prefix shpat_.

import requests

SHOP_DOMAIN   = "twojsklep.myshopify.com"
ACCESS_TOKEN  = "shpat_TWOJ_ACCESS_TOKEN"  # z panelu Custom App lub Partner App
API_VERSION   = "2024-01"

BASE_URL = f"https://{SHOP_DOMAIN}/admin/api/{API_VERSION}"
HEADERS  = {
    "X-Shopify-Access-Token": ACCESS_TOKEN,
    "Content-Type":           "application/json",
}

def shopify_get(endpoint: str, params: dict = None) -> dict:
    resp = requests.get(f"{BASE_URL}{endpoint}", headers=HEADERS, params=params or {})
    resp.raise_for_status()
    return resp.json()

def shopify_post(endpoint: str, data: dict) -> dict:
    resp = requests.post(f"{BASE_URL}{endpoint}", headers=HEADERS, json=data)
    resp.raise_for_status()
    return resp.json()

def shopify_put(endpoint: str, data: dict) -> dict:
    resp = requests.put(f"{BASE_URL}{endpoint}", headers=HEADERS, json=data)
    resp.raise_for_status()
    return resp.json()

print("Shopify API gotowe")

2. Pobieranie zamówień

Shopify zwraca max 250 zamówień na stronę. Paginacja jest cursor-based przez nagłówek Link.

from datetime import datetime, timedelta

def pobierz_zamowienia(days_back: int = 7) -> list:
    date_from = (datetime.utcnow() - timedelta(days=days_back)).strftime(
        "%Y-%m-%dT%H:%M:%SZ"
    )
    wszystkie = []
    endpoint  = "/orders.json"
    params    = {
        "created_at_min": date_from,
        "status":         "any",
        "limit":          250,    # Shopify max per page
    }

    while endpoint:
        data     = shopify_get(endpoint, params)
        zamowienia = data.get("orders", [])
        wszystkie.extend(zamowienia)
        print(f"Pobrano łącznie: {len(wszystkie)} zamówień")

        # Paginacja przez Link header (cursor-based)
        # W requests: resp.links.get('next', {}).get('url')
        endpoint = None  # Dla uproszczenia – dodaj obsługę Link headers
        params   = {}
        if len(zamowienia) < 250:
            break

    return wszystkie

zamowienia = pobierz_zamowienia(days_back=7)
for zam in zamowienia[:3]:
    print(
        "#" + str(zam["order_number"]) +
        " | " + zam["email"] +
        " | " + str(zam["total_price"]) + " " + zam["currency"] +
        " | " + zam["financial_status"]
    )

3. Tworzenie fulfillmentu

Fulfillment to potwierdzenie realizacji zamówienia z opcjonalnym numerem śledzenia. Shopify powiadamia klienta e-mailem automatycznie.

def zrealizuj_zamowienie(order_id: int, location_id: int, tracking_number: str = None) -> dict:
    """Tworzy fulfillment dla zamówienia Shopify."""
    payload = {
        "fulfillment": {
            "location_id":    location_id,
            "notify_customer": True,
        }
    }
    if tracking_number:
        payload["fulfillment"]["tracking_info"] = {
            "number": tracking_number,
        }

    result = shopify_post(
        f"/orders/{order_id}/fulfillments.json",
        payload,
    )
    print(f"Fulfillment #{result['fulfillment']['id']} utworzony dla zamówienia #{order_id}")
    return result

# Pobierz ID lokalizacji
locations = shopify_get("/locations.json")
location_id = locations["locations"][0]["id"]

# Zrealizuj zamówienie
zrealizuj_zamowienie(order_id=1234567890, location_id=location_id, tracking_number="PL123456789PL")

Potrzebujesz integracji Shopify na zamówienie?

Budujemy custom apps Shopify, integracje z ERP i systemami logistycznymi. Wdrożenia dla polskich i zagranicznych sklepów.

FAQ

Jak uzyskać Access Token do Shopify API?
W panelu Shopify: Ustawienia → Aplikacje i kanały sprzedaży → Opracuj aplikacje → Utwórz aplikację. Skonfiguruj zakres uprawnień (scopes) i zainstaluj aplikację – uzyskasz Access Token zaczynający się od shpat_.
REST API czy GraphQL API Shopify – co wybrać?
Shopify zaleca GraphQL API jako przyszłościowe. REST API jest prostsze do nauki i nadal wspierane. Dla prostych integracji (zamówienia, produkty) REST wystarczy. GraphQL jest lepszy przy złożonych zapytaniach i dużych wolumenach.
Jaki jest limit zapytań Shopify API?
REST API: 2 zapytania/sekundę (bucket size 40, uzupełniany 2/s). GraphQL: limit kosztowy na podstawie złożoności zapytania. Przekroczenie zwraca HTTP 429 z nagłówkiem Retry-After.
Jak skonfigurować webhooks Shopify?
Webhooks konfigurujesz przez API: POST /webhooks.json z topic (np. orders/create) i address (URL do wywołania). Każde zdarzenie podpisane jest HMAC-SHA256 nagłówkiem X-Shopify-Hmac-Sha256 – zawsze weryfikuj podpis.
Dotted

Skontaktuj się z nami

Wyrażam zgodę na przetwarzanie danych oraz akceptuję Politykę Prywatności

Kontakt

Numer telefonu

+48 697 322 226