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.
/v1/store/ordersBu endpoint, kullanıcının sepet toplamını karşılayacak yeterli puana sahip olmasını gerektirir. Sepet boş olmamalıdır.
Örnek İstek
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
{
"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.
{
"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.
/v1/store/ordersQuery Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
page[number] | integer | Sayfa numarası (varsayılan: 1) |
page[size] | integer | Sayfa başına öğe (varsayılan: 15) |
Örnek İstek
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
{
"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
| Alan | Tür | Açıklama |
|---|---|---|
id | string | Benzersiz sipariş tanımlayıcısı |
status | string | Sipariş durumu (aşağıdaki durum değerlerine bakın) |
type | string | Sipariş türü: physical veya virtual |
total_paid | integer | Sipariş için ödenen toplam puan |
created_at | string | ISO 8601 formatında sipariş oluşturma zamanı |
items | array | Sipariş öğeleri dizisi |
Sipariş Öğesi Nesnesi
| Alan | Tür | Açıklama |
|---|---|---|
quantity | integer | Sipariş edilen miktar |
regular_price | integer | Sipariş anındaki normal fiyat |
sale_price | integer | null | Sipariş anındaki indirimli fiyat (indirim yoksa null) |
product.id | string | Ürün ID'si |
product.title | string | Ürün başlığı |
product.sku | string | Ürün SKU'su |
product.thumbnail | string | Ürün küçük resmi URL'i |
cards | array | undefined | Hediye çeki bilgileri. Yalnızca sanal sipariş öğelerinde bulunur. |
cards[].card_code | string | Hediye çeki kodu |
cards[].card_pin | string | Hediye ç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.
/v1/store/orders/{storeOrder}Path Parametreleri
| Parametre | Tür | Açıklama |
|---|---|---|
storeOrder | string | Alınacak siparişin ID'si |
Örnek İstek
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ş)
{
"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ş)
{
"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)
| Alan | Tür | Açıklama |
|---|---|---|
name | string | Alıcı adı |
province | string | İl |
district | string | İlçe |
neighborhood | string | Mahalle |
address | string | Açı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)
{
"success": false,
"message": "Order not found"
}Sipariş Durum Değerleri
| Durum | Açıklama |
|---|---|
pending_approval | Sipariş onay bekliyor |
waiting_supply | Sipariş stok/tedarik bekliyor |
processing | Sipariş işleniyor |
shipped | Sipariş kargoya verildi (sadece fiziksel siparişler) |
completed | Sipariş tamamlandı/teslim edildi |
cancelled | Sipariş iptal edildi |