Sipariş oluşturma

Sipariş oluşturma

POST /SaveOrder

Adisyo'da yeni bir sipariş oluşturur.

Örnek istek

İki ürün içeren sipariş oluşturma
curl -X POST 'https://ext.adisyo.com/api/External/v2/SaveOrder' \
  --header "x-api-key: ..." \
  --header "x-api-secret: ..." \
  --header "x-api-consumer: ..." \
  --header 'Content-Type: application/json' \
  --data '{
      "CustomerName": "Ahmet",
      "CustomerSurname": "Yılmaz",
      "CustomerId": "MUS-03",
      "CustomerPhone": "5551234567",
      "CustomerPhone2": "5559876543",
      "Address": "Atatürk Mahallesi, Çiçek Sokak No:12 Daire:4",
      "AddressDescription": "Migros’un karşısındaki apartman, kırmızı kapılı bina",
      "Region": "Ataşehir",
      "City": "İstanbul",
      "PaymentMethodId": 3,
      "PaymentNote": "Teslimatta kredi kartı ile ödeme yapılacak",
      "Discount": 0,
      "OrderTotal": 12.00,
      "OrderNote": "Lütfen sipariş sıcak getirilsin, yanında ıslak mendil ve peçete de olsun",
      "WebOrderId": "SIP-07",
      "CustomerLatitude": "40,987654",
      "CustomerLongitude": "29,123456",
      "OrderDetails": [
        {
          "ProductUnitId": 2359421,
          "Quantity": 2,
          "OrderDetailNote": "Büyük boy olsun, baharatsız tercih ediyorum"
        },
        {
          "ProductUnitId": 2359422,
          "Quantity": 1
        }
      ]
  }'

İstek Parametreleri

Yukarıdaki sipariş kaydetme isteğini aşağıdaki örnek senaryo üzerinden açıklayalım:

  • Restoranınızın bir web sitesi var.
  • Ahmet Yılmaz isimli bir müşteri, web siteniz üzerinden sipariş veriyor.
  • Eğer bu müşteri daha önce sisteminizde kayıtlı değilse, öncelikle kendi veritabanınıza kaydetmeli ve oluşturduğunuz müşteri ID’sini (örnekte MUS-03) Adisyo API’sine göndermelisiniz.
  • Oluşan siparişi, kendi sisteminizde SIP-07 olarak kaydettiğinizi varsayalım. Bu siparişi Adisyo'ya aynı referans numarası ile gönderirseniz, işlemin takibi ve sonraki adımlar için kullanılabilir.
Parametre AdıData TipiAçıklama
CustomerNameStringSiparişi veren müşterinin adı
CustomerSurnameStringSiparişi veren müşterinin soyadı
CustomerIdStringSiparişi veren müşterinin sizin sisteminizdeki ID'si (MUS-03)
CustomerPhoneStringSiparişi veren müşterinin birincil telefon numarası
CustomerPhone2StringSiparişi veren müşterinin ikincil telefon numarası
AddressStringSiparişi veren müşterinin adresi
AddressDescriptionStringSiparişi veren müşterinin adres tarifi
RegionStringSiparişi veren müşterinin semt/ilçe adı
CityStringSiparişi veren müşterinin şehri
PaymentMethodIdNumberÖdeme Tipi
PaymentNoteStringÖdeme notu
DiscountNumberSiparişteki toplam indirim tutarı
OrderNoteStringSipariş notu
WebOrderIdStringSiparişin sizin sisteminizdeki ID'si (SIP-07)
OrderTotalNumberSipariş toplam tutarı
DeliveryFeeNumberTeslimat ücreti (Sipariş toplamını hesaplama)
ServiceChargeNumberServis ücreti veya diğer ekstra hizmet ücretleri (Sipariş toplamını hesaplama)
CustomerLatitudeStringMüşteri enlem bilgisi (##,####)
CustomerLongitudeStringMüşteri boylam bilgisi (##,####)
OrderDetailsArraySipariş detaylarının listesi
[].OrderDetails.ProductUnitIdNumberÜrün birim ID'si (Siparişte ürünü belirtme)
[].OrderDetails.ProductCodeStringÜrün kodu (Siparişte ürünü belirtme)
[].OrderDetails.QuantityNumberÜrün adedi
[].OrderDetails.OrderDetailNoteString?Sipariş detayı notu
(TODO) [].OrderDetails.NameString?Ürün veya menü adı
[].OrderDetails.IsMenuBooleanMenü mü? (Menü ürünleri)
[].OrderDetails.MenuIdNumber?Menü ID'si (Menü ürünleri)
[].OrderDetails.ParentIdString?Bağlı olduğu menü veya ürünün ID'si (Menü ürünleri)

Sipariş Toplamını Hesaplama

Sipariş toplam tutarına eklenen ekstra ücretleri 2 ayrı değer üzerinden iletebilirsiniz. Teslimat için ayrıca bir ödeme alınıyorsa bunu DeliveryFee alanı üzerinden gönderebilirsiniz.

Örneğin, ürün kalemleri 40, teslimat ücreti 15 TL olan bir sipariş için, OrderTotal: 55, DeliveryFee: 15 olarak iletilmelidir. Ayrıca, ekstra servis ücreti veya buna benzer ek ücretler de ServiceCharge alanı üzerinden gönderilmelidir.

Örneğin, paketleme ücreti 10, ek servis ücreti 20 olarak hizmet veren bir restoran için, ürün kalemleri de 90 TL olan bir siparişte ServiceCharge: 30, OrderTotal: 120 TL olarak iletilmelidir.

Bu siparişte bir de 20 TL teslimat ücreti varsa OrderTotal: 140 ve DeliveryFee: 20 TL olmalıdır.

Siparişte ürünü belirtme

Ürün listesi endpointinden alınan ürün listesini baz alarak, oluşturacağınız siparişlerin ürün detaylarında ProductUnitId veya ProductCode alanlarından yalnızca birini tercih etmeniz gerekir. Siparişteki ürün listesini oluştururken bu alanlardan birini doldurup diğerini null bırakmalı veya hiç göndermemelisiniz.

Menü ürünleri

Sipariş içindeki bir ürün, farklı bir menü altında bulunuyorsa, kendisine ait bir ParentId değeri olmalıdır. Aksi takdirde, ParentId gönderilmemeli veya null olarak belirtilmelidir.

Not: Bir ürünün MenuId ve ParentId değerleri aynı olmamalıdır.

Örnek: Menü İçeren Ürünler

  • Hamburger bir menüdür, bu nedenle kendisine ait bir MenuId değeri vardır.
  • Kola, Hamburger Menüsü altında yer aldığı için ParentId değeri, Hamburger’in MenuId değeri ile aynı olmalıdır.
Menü İçeren Ürünler
"OrderDetails": [
  {
    "Quantity": 1,
    "ProductUnitId": 123,
    "IsMenu": true,
    "MenuId": 1,
    "ParentId": null
  },
  {
    "Quantity": 1,
    "ProductUnitId": 234,
    "IsMenu": false,
    "MenuId": null,
    "ParentId": "1"
  }
]

Örnek: Bağımsız Ürünler

Eğer Kola herhangi bir menüye bağlı değilse, ParentId parametresi gönderilmemelidir.

Bağımsız Ürünler
"OrderDetails": [
  {
    "Quantity": 1,
    "ProductUnitId": 123,
    "IsMenu": false,
    "MenuId": null,
    "ParentId": null
  },
  {
    "Quantity": 1,
    "ProductUnitId": 234,
    "IsMenu": false,
    "MenuId": null,
    "ParentId": null
  }
]

Örnek cevap

Kaydedilen sipariş cevabı
{
  "orderId": 643287,
  "orderTotal": 18.00,
  "discount": 0.00,
  "insertedDate": "2025-09-26T20:21:40.05",
  "status": 100,
  "message": null
}

Cevap parametreleri

Parametre AdıData TipiAçıklama
orderIdNumberSiparişin Adisyo sistemindeki ID'si
orderTotalNumberSiparişin toplam tutarı
discountNumberSiparişte uygulanan toplam indirim tutarı
insertedDateDate ISO 8601Siparişin sisteme kaydedildiği tarih
statusNumberSonuç Kodları
messageStringİşlem sonucu mesajı