Skip to content

SDK Referansı

bash
npm install winkwop-theme-sdk
ts
import { winkwop } from 'winkwop-theme-sdk';

winkwop istemcisi vitrin tarafından mağazaya bağlı kurulur. Yerel geliştirmede aynı paket configureWinkwop() ile bağlanır — bileşen kodunuz iki ortamda da aynıdır.

store

ts
winkwop.store.domain   // "magazam"

products

ts
products.list(options?)   → WinkwopProduct[]
products.page(options?)   → ProductPage          // aynı sorgu + sayfalama bilgisi
products.get(idOrSlug)    → WinkwopProductDetail // seçenekler + varyantlar
products.facets(options?) → WinkwopFacets        // fiyat aralığı, markalar, kategoriler

options (ProductQuery): category, search, sort, limit, page, minPrice, maxPrice, brands, inStock.

ts
const { products, total, has_next } = await winkwop.products.page({
  category: 'ayakkabi',
  sort: 'price_asc',
  limit: 12,
});

Listeleme için önce veri prop'unu düşünün

Sunucuda çözüldüğü için ilk boyamada veri hazır olur ve mağaza sahibi kaynağı kendisi seçebilir → Veri bağlama.

categories

ts
categories.list()        → WinkwopCategory[]
categories.get(idOrSlug) → WinkwopCategory

cart

Sepet ilk çağrıda kendiliğinden oluşur ve tarayıcıda saklanır; kurulum gerekmez. Her işlem sepetin son hâlini döner — kendiniz yeniden çekmeniz gerekmez.

ts
cart.get()                                   → WinkwopCart
cart.add(productId, quantity?, variantId?)   → WinkwopCart
cart.updateItem(itemId, quantity)            → WinkwopCart
cart.removeItem(itemId)                      → WinkwopCart
cart.previewCoupon(code)                     → WinkwopCouponPreview
cart.checkoutUrl()                           → string

previewCoupon kuponu kullanmaz, yalnızca indirimi hesaplar. Gerçek kullanım sipariş anında yazılır.

Varyantlı üründe variantId zorunlu

Stok varyant satırlarında tutulur. Seçenekli bir ürünü variantId olmadan sepete eklerseniz o kalem hiçbir zaman sipariş edilemez. Ürün kartındaki hızlı ekleme düğmesi seçenekli üründe sepete eklememeli, detay sayfasına götürmelidir.

Sepet yanıtı otomatik kampanyayı da taşır:

ts
cart.discount_name          // "Yaz Kampanyası" | undefined
cart.discount_amount        // kampanya indirimi
cart.discount_free_shipping // kampanya kargo bedava veriyor mu
cart.total                  // ara toplam − kampanya

payments

ts
payments.methods() → WinkwopPaymentMethod[]

Bu satış kanalında açık ödeme yöntemleri. Sırlar (API anahtarı vb.) asla gelmez; yalnızca müşteriye gösterilmesi güvenli alanlar döner.

checkout

ts
checkout(input) → CheckoutResult

Siparişi tamamlar; başarılıysa sepet kapanır.

Pratikte bunu çağırmanız gerekmez: ödeme sayfası platformun sabit sayfasıdır → Sayfalar. cart.checkoutUrl() ile yönlendirin.

customer

Müşteri hesabı. Oturum jetonu tarayıcıda saklanır; sipariş ve adres uçları jetonu otomatik taşır.

ts
customer.register(input)
customer.login(email, password)
customer.logout()
customer.me()
customer.orders()
customer.addresses()

Yerel geliştirme

ts
import { configureWinkwop, isWinkwopReady } from 'winkwop-theme-sdk';

configureWinkwop({ apiUrl: 'http://127.0.0.1:3050/api/v1', storeDomain: 'dev-magaza' });

CLI ile kurulan projede bu zaten src/dev.tsx içinde yapılır; elle çağırmanız gerekmez.

Hata yönetimi

Tüm çağrılar Promise döner ve hata durumunda reject eder. Bölümünüz veriyi çekemediğinde çökmemeli:

ts
useEffect(() => {
  winkwop.cart.get().then(setCart).catch(() => setCart(null));
}, []);

Winkwop tema platformu