Loyetta

Siparişler

Sepete ürün ekledikten sonra, kullanıcılar puanlarını kullanmak için sipariş oluşturabilir. Siparişler fiziksel ürünler, sanal ürünler (hediye çekleri) veya her ikisini birden içerebilir.


Sipariş Oluştur

Mevcut sepet içeriğinden bir sipariş oluşturun. Bu, kullanıcının puan bakiyesinden düşüm yapacak ve sepeti temizleyecektir.

POST/v1/store/orders

Bu endpoint, kullanıcının sepet toplamını karşılayacak yeterli puana sahip olmasını gerektirir. Sepet boş olmamalıdır.

Örnek İstek

bash
curl -X POST "https://marka.prod.loyetta.com/api/v1/store/orders" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json"

Başarılı Yanıt

json
{
  "success": true,
  "message": "Siparişiniz alındı"
}

Hata Yanıtı (400)

Sepet veya sipariş oluşturmada bir sorun olduğunda döndürülür.

json
{
  "success": false,
  "message": "Yetersiz puan bakiyesi",
  "cart_updated": true
}

cart_updated Değeri

cart_updated değeri true olduğunda, sipariş denemesi sırasında sepetin otomatik olarak değiştirildiği anlamına gelir. Bu şu durumlarda gerçekleşebilir:

  • Ürün stokta yok: Sepetteki bir ürün artık mevcut değil veya yeterli stok yok. Ürün sepetten kaldırılacaktır.
  • Fiyat değişti: Bir ürünün fiyatı sepete eklendikten sonra değişmiş. Sepet yeni fiyatla güncellenecektir.
  • Ürün kullanılamıyor: Bir ürün mağazadan devre dışı bırakılmış veya kaldırılmış. Ürün sepetten kaldırılacaktır.

cart_updated: true aldığınızda, siparişi tekrar denemeden önce mutlaka sepeti yeniden çekin. Sepet toplamı değişmiş olabilir ve bazı ürünler kaldırılmış olabilir.


Siparişleri Listele

Kullanıcının siparişlerinin sayfalanmış listesini alın. Fiziksel ve sanal (hediye çeki) siparişler tek bir listede döndürülür.

GET/v1/store/orders

Query Parametreleri

ParametreTürAçıklama
page[number]integerSayfa numarası (varsayılan: 1)
page[size]integerSayfa başına öğe (varsayılan: 15)

Örnek İstek

bash
curl -X GET "https://marka.prod.loyetta.com/api/v1/store/orders?page[number]=1" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt

json
{
  "data": [
    {
      "id": "120aaa50",
      "status": "shipped",
      "type": "physical",
      "total_paid": 15000,
      "created_at": "2024-01-15T10:30:00.000000Z",
      "items": [
        {
          "quantity": 1,
          "regular_price": 15000,
          "sale_price": null,
          "product": {
            "id": "154dsc",
            "title": "Kablosuz Kulaklık",
            "sku": "WH-001",
            "thumbnail": "https://example.com/kulaklik.jpg"
          }
        }
      ]
    },
    {
      "id": "220bbb60",
      "status": "completed",
      "type": "virtual",
      "total_paid": 5000,
      "created_at": "2024-01-16T14:20:00.000000Z",
      "items": [
        {
          "quantity": 1,
          "regular_price": 5000,
          "sale_price": null,
          "product": {
            "id": "gc-001",
            "title": "50 TL Hediye Kartı",
            "sku": "GC-50TL",
            "thumbnail": "https://example.com/hediyekart.jpg"
          },
          "cards": [
            {
              "card_code": "ABCD-1234-EFGH-5678",
              "card_pin": "987654"
            }
          ]
        }
      ]
    }
  ],
  "links": {
    "first": "https://marka.prod.loyetta.com/api/v1/store/orders?page[number]=1",
    "last": "https://marka.prod.loyetta.com/api/v1/store/orders?page[number]=1",
    "prev": null,
    "next": null
  },
  "meta": {
    "current_page": 1,
    "from": 1,
    "last_page": 1,
    "path": "https://marka.prod.loyetta.com/api/v1/store/orders",
    "per_page": 15,
    "to": 2,
    "total": 2
  }
}

Sipariş Nesnesi

AlanTürAçıklama
idstringBenzersiz sipariş tanımlayıcısı
statusstringSipariş durumu (aşağıdaki durum değerlerine bakın)
typestringSipariş türü: physical veya virtual
total_paidintegerSipariş için ödenen toplam puan
created_atstringISO 8601 formatında sipariş oluşturma zamanı
itemsarraySipariş öğeleri dizisi

Sipariş Öğesi Nesnesi

AlanTürAçıklama
quantityintegerSipariş edilen miktar
regular_priceintegerSipariş anındaki normal fiyat
sale_priceinteger | nullSipariş anındaki indirimli fiyat (indirim yoksa null)
product.idstringÜrün ID'si
product.titlestringÜrün başlığı
product.skustringÜrün SKU'su
product.thumbnailstringÜrün küçük resmi URL'i
cardsarray | undefinedHediye çeki bilgileri. Yalnızca sanal sipariş öğelerinde bulunur.
cards[].card_codestringHediye çeki kodu
cards[].card_pinstringHediye çeki PIN'i

cards özelliği yalnızca virtual türündeki siparişlerin öğelerinde görünür. Fiziksel sipariş öğelerinde bu alan bulunmaz.


Sipariş Detayı

Belirli bir siparişin detaylı bilgilerini alın. Fiziksel siparişlerin adres bilgileri yalnızca bu endpoint'te döndürülür.

GET/v1/store/orders/{storeOrder}

Path Parametreleri

ParametreTürAçıklama
storeOrderstringAlınacak siparişin ID'si

Örnek İstek

bash
curl -X GET "https://marka.prod.loyetta.com/api/v1/store/orders/120aaa50" \
  -H "Authorization: Bearer {musteri-tokeni}" \
  -H "Accept: application/json"

Yanıt (Fiziksel Sipariş)

json
{
  "success": true,
  "data": {
    "id": "120aaa50",
    "status": "shipped",
    "type": "physical",
    "total_paid": 15000,
    "created_at": "2024-01-15T10:30:00.000000Z",
    "items": [
      {
        "quantity": 1,
        "regular_price": 15000,
        "sale_price": null,
        "product": {
          "id": "154dsc",
          "title": "Kablosuz Kulaklık",
          "sku": "WH-001",
          "thumbnail": "https://example.com/kulaklik.jpg"
        }
      }
    ],
    "address": {
      "name": "Ahmet Yılmaz",
      "province": "İstanbul",
      "district": "Ataşehir",
      "neighborhood": "İçerenköy Mah.",
      "address": "Topçu İbrahim Sk. AND Plaza"
    }
  }
}

Yanıt (Sanal Sipariş)

json
{
  "success": true,
  "data": {
    "id": "220bbb60",
    "status": "completed",
    "type": "virtual",
    "total_paid": 5000,
    "created_at": "2024-01-16T14:20:00.000000Z",
    "items": [
      {
        "quantity": 1,
        "regular_price": 5000,
        "sale_price": null,
        "product": {
          "id": "gc-001",
          "title": "50 TL Hediye Kartı",
          "sku": "GC-50TL",
          "thumbnail": "https://example.com/hediyekart.jpg"
        },
        "cards": [
          {
            "card_code": "ABCD-1234-EFGH-5678",
            "card_pin": "987654"
          }
        ]
      }
    ]
  }
}

Adres Nesnesi (Yalnızca Fiziksel Siparişler)

AlanTürAçıklama
namestringAlıcı adı
provincestringİl
districtstringİlçe
neighborhoodstringMahalle
addressstringAçık adres

Adres bilgileri yalnızca sipariş detay endpoint'inde döndürülür, sipariş listesinde döndürülmez. Yalnızca physical türündeki siparişlerde bulunur.

Hata Yanıtı (404)

json
{
  "success": false,
  "message": "Order not found"
}

Sipariş Durum Değerleri

DurumAçıklama
pending_approvalSipariş onay bekliyor
waiting_supplySipariş stok/tedarik bekliyor
processingSipariş işleniyor
shippedSipariş kargoya verildi (sadece fiziksel siparişler)
completedSipariş tamamlandı/teslim edildi
cancelledSipariş iptal edildi