Siparişler

BYNovax mağazasında oluşan satışları ERP sistemine aktarın.

Endpointler

GET/ordersSiparişleri listele
GET/orders/{order}Sipariş detayını oku
AlanÖrnek
order_noBNX-20260830-GQAFVE
payment_statuspaid / pending_payment / cancelled
order_statusnew / processing / shipped / cancelled
fulfillment_statusunfulfilled / shipped / cancelled
currencyTRY
grand_total1559.88
customerAd, e-posta, telefon
shipping_addressTeslimat adresi: ad, e-posta, telefon, ülke, şehir, ilçe, mahalle, posta kodu ve açık adres
invoice_addressFatura adresi: kişi / unvan, iletişim, vergi numarası, vergi dairesi ve adres bilgileri
itemsSKU, product_id, variant_id, qty, fiyat

Orders API ne işe yarar?

BYNovax mağazasına gelen siparişleri ERP, muhasebe, depo veya fulfillment sisteminize aktarmak için kullanılır.

External Commerce API V1 sipariş tarafında read ağırlıklıdır. Siparişleri listeleyebilir ve detaylarını okuyabilirsiniz.

Gerekli scope

GET /orders ve GET /orders/{order} için orders:read scope gerekir.

External Commerce API V1 contract'ında orders:write isimli bir scope bulunmaz.

Sipariş liste filtreleri

QueryAmaç
limitSayfa büyüklüğü; varsayılan 30, maksimum 100
after_idPagination cursor
payment_statusÖdeme durumu filtresi
order_statusSipariş durumu filtresi
fulfillment_statusFulfillment durumu filtresi
created_afterBelirli zamandan sonra oluşturulan siparişler
updated_afterBelirli zamandan sonra güncellenen siparişler

Sipariş listesinde teslimat adresi

GET /orders response içindeki her sipariş shipping_address alanı taşır. Teslimat adresi kaydı mevcut değilse değer null olur.

Adres mevcutsa name, email, phone, country, city, district, neighborhood, postal_code ve address_line alanları döner.

Bu nedenle ERP veya entegratör, teslimat adresini almak için her sipariş adına ayrıca GET /orders/{order} çağrısı yapmak zorunda değildir.

{
  "id": 116,
  "order_no": "BNX-20260916-RKD3OI",
  "customer": {
    "name": "Ad Soyad",
    "email": "mail@example.com",
    "phone": "05xxxxxxxxx"
  },
  "shipping_address": {
    "name": "Ad Soyad",
    "email": "mail@example.com",
    "phone": "05xxxxxxxxx",
    "country": "Türkiye",
    "city": "Antalya",
    "district": "Muratpaşa",
    "neighborhood": "Mahalle",
    "postal_code": "07000",
    "address_line": "Açık adres"
  }
}

Orders pagination yönü

Orders endpointi yeni siparişleri önce okuyabilmek için azalan ID cursor davranışı kullanır.

Kendi after_id hesabınızı üretmeyin; response içerisindeki next_after_id değerini takip edin.

Liste response'unda önemli alanlar

AlanAçıklama
id / uid / order_noSipariş kimlik bilgileri
payment_statusÖdeme durumu
order_statusSipariş durumu
fulfillment_statusFulfillment durumu
currencySipariş para birimi
subtotalAra toplam
discount_totalİndirim toplamı
shipping_totalKargo toplamı
tax_totalVergi toplamı
grand_totalGenel toplam
shipping_providerKargo sağlayıcı bilgisi
customerMüşteri özet bilgisi
shipmentVarsa shipment özeti

Sipariş detayında ek bilgiler

GET /orders/{order} liste özetine ek olarak customer_note, shipping_address, items ve daha ayrıntılı shipment bilgisi sağlayabilir.

ERP'ye sipariş aktarırken yalnız liste response'una güvenmek yerine gerekiyorsa detay endpointini kullanın.

ERP senkronizasyon modeli

1. GET /orders?limit=30
2. Daha önce aktarılmamış order ID'leri belirle.
3. Gerekirse GET /orders/{order} ile detayı al.
4. ERP satış siparişini oluştur.
5. BYNovax order ID/UID/order_no eşlemesini sakla.
6. next_after_id ile sonraki sayfaya geç.
7. Webhook ile yeni değişiklikleri gerçek zamanlı takip et.

Polling + webhook birlikte kullanım

Webhooks gerçek zamanlı değişiklikleri almak için kullanılabilir; periyodik Orders API taraması ise kaçırılmış eventlere karşı reconciliation mekanizması olarak çalışabilir.

Aynı order_no veya order ID için ERP tarafında duplicate oluşturmayacak idempotent import mantığı kurun.

Çalıştığını nasıl doğrularım?

  • orders:read credential üzerinde var.
  • GET /orders 200 dönüyor.
  • Order ID/UID ERP'de kalıcı eşleniyor.
  • Aynı sipariş ikinci kez ERP'de oluşturulmuyor.
  • Pagination cursor doğru şekilde devam ediyor.

Sipariş liste contractı — adresler

shipping_address ile invoice_address aynı değerleri taşıyabilir ancak entegrasyon contractında iki ayrı alan olarak işlenmelidir.
AlanAçıklama
shipping_addressTeslimat adresi; kayıt yoksa null
invoice_addressbilling_address_id authority üzerinden gelen fatura adresi; kayıt yoksa null
customerSipariş müşteri özeti

invoice_address alanları

AlanAçıklama
nameFatura adresindeki kişi / unvan
emailFatura adresi e-posta bilgisi
phoneTelefon
tax_numberVergi numarası; geçmiş siparişlerde veya bilgi girilmemişse null olabilir
tax_officeVergi dairesi; geçmiş siparişlerde veya bilgi girilmemişse null olabilir
countryÜlke
cityŞehir
districtİlçe
neighborhoodMahalle
postal_codePosta kodu
address_lineAçık adres

Sipariş liste contractı — items

AlanAçıklama
idOrder item kimliği
product_idBYNovax ürün kimliği; nullable olabilir
variant_idBYNovax varyant kimliği; varyantsız üründe null olabilir
skuSipariş satırı SKU değeri
nameSipariş satırı ürün adı
image_urlSatır görsel URL bilgisi
currencyPara birimi
unit_priceBirim fiyat
quantityAdet
line_subtotalSatır ara toplamı
tax_rateVergi oranı
tax_totalSatır vergi toplamı
line_totalSatır genel toplamı
optionsSipariş satırı seçenekleri

Sipariş import güvenliği

  • ERP duplicate kontrolünü order ID, UID veya order_no eşlemesiyle yapmalıdır.
  • Liste response içindeki items doğrudan order ile birlikte işlenebilir; yalnız ürün kataloğundaki güncel state'e bakarak geçmiş sipariş satırını yeniden üretmeyin.
  • Contractta tarihsel barcode snapshot alanı bulunmadığı için barcode'u order item için zorunlu kabul etmeyin.
  • shipping_address ve invoice_address alanlarını ayrı saklayın.
  • Webhook + polling birlikte kullanılıyorsa aynı order için duplicate ERP kaydı oluşturmayın.

Satış senkronizasyonu

  • BYNovax mağazasında sipariş oluşur.
  • Harici sistem order.created webhook olayını alır.
  • Webhook'taki order ID ile GET /orders/{order} çağrılır.
  • Sipariş harici ERP veya entegrasyon sistemine işlenir.
  • inventory.updated eventleri stok state değişikliklerini bildirir.