T-SOFT/Storefront API/Misafir Sepeti

Misafir Sepeti

Yetki:storefront:read — token üretimi uygulama token'ı ister; üretilen misafir token'ı storefront:cart scope'u taşır. Token almak için Kimlik Doğrulama.

Üye olmayan kullanıcıların sepet uçlarını kullanabilmesi için misafir sepet token'ı üretir ve müşteri girişinde misafir sepetinin üye sepetine taşınmasını tanımlar. Token üretimi storefront:read scope'lu uygulama token'ı ister; üretilen misafir token'ı storefront:cart scope'u taşır.

Misafir token'ı alma

POST /guest-token

İstek gövdesi boştur; kimlik, uygulama token'ından gelir.

curl -X POST "https://<domain>/api/v3/storefront/2026-01/guest-token" \
  -H "Accept: application/vnd.api+json" \
  -H "Authorization: Bearer <app_access_token>"
{
  "access_token": "8|xxxxxxxxxxxxxxxxxxxxxxxx",
  "token_type": "Bearer",
  "expires_at": "2026-08-27T10:00:00+00:00",
  "scope": "storefront:cart"
}

Yanıt durum kodu 201 Created'tır.

AlanTipKural
access_tokenstringMisafir sepet token'ı
token_typestringSabit "Bearer"
expires_atstringISO 8601; token 30 gün geçerlidir
scopestringSabit "storefront:cart"

Her çağrı yeni bir misafir kimliği ve token üretir; uygulama token'ı gibi idempotent değildir. Client token'ı saklamalı ve süresi boyunca aynı token'la devam etmelidir.

Misafir akışı

  1. Uygulama token'ıyla POST /guest-token çağrılır, dönen access_token saklanır.
  2. Tüm sepet istekleri bu token'la yapılır: Authorization: Bearer <guest_access_token>. Ayrı bir header ya da parametre yoktur; misafir token'ı standart bearer olarak gider.
  3. GET /cart, DELETE /cart, POST /cart-items, PATCH /cart-items/{itemId}, DELETE /cart-items/{itemId} uçlarının tamamı üye sepetiyle birebir aynı yanıt şeklini döner (data.id: "me").
  4. Misafir sepetleri birbirinden izoledir; bir token yalnızca kendi satırlarını görür.

Girişte sepet birleşmesi

Misafir, üye girişi yaptığında sepetinin üye sepetine taşınması için giriş isteğine guestCartToken alanı eklenir:

POST /api/v3/storefront/customer/token

curl -X POST "https://<domain>/api/v3/storefront/customer/token" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "identifier": "musteri@example.com",
    "password": "<password>",
    "device_name": "iphone-15",
    "guestCartToken": "<guest_access_token>"
  }'
AlanTipKural
guestCartTokenstringOpsiyonel; misafir akışındaki access_token değeri. Verilmezse giriş sepete dokunmaz

Birleşme kuralları:

  • Misafir satırı üye sepetinde yoksa üye sepetine eklenir.
  • Aynı ürün/varyant satırı üye sepetinde varsa adet misafir değeriyle üzerine yazılır (toplanmaz) — misafirin son niyeti esas alınır.
  • Birleşme sonrası misafir sepeti temizlenir ve misafir token'ı iptal edilir: aynı token'la yapılan sonraki sepet istekleri 401 döner. Client, girişten sonra müşteri token'ına geçmelidir.
  • Geçersiz, süresi dolmuş ya da misafir olmayan bir guestCartToken sessizce yok sayılır — giriş normal tamamlanır, birleşme yapılmaz, gönderilen token iptal edilmez.

Mağazada "girişte üye sepeti korunmasın" ayarı kapalıysa satır taşıma yukarıdaki gibi çalışır; ayar açıksa üye sepetine satır taşınmaz ama misafir sepeti yine temizlenir ve token iptal edilir.

Hatalar

Durum koduSebep
401guest-token ucunda uygulama token'ı yok/geçersiz; müşteri token'ıyla çağrı da 401 döner
403Uygulama token'ında storefront:read scope'u eksik

Uç hız sınırına tabidir; 429 yanıtında Retry-After başlığına uy.