Sipariş kaydet
POST /Orders/SaveOrders — OMS API · Siparişler
Satış kanalınızda oluşan siparişleri OMS'ye aktarır. Gövde bir dizidir; tek istekte birden fazla kayıt gönderebilirsiniz.
Ne zaman çağrılır: Sipariş ödemesi tamamlanıp kesinleştiğinde.
orderNumbersiparişin tekillik anahtarıdır. Aynı numarayla tekrar gönderilen sipariş yeniden yaratılmaz; gövdedeki paketlerden yenisourcePackageId'ye sahip olanlar mevcut siparişe eklenir, var olanlar atlanır.- Paketleri sipariş anında bilmiyorsanız
packagesalanını boş bırakıp sonradan Paket oluştur ucunu kullanabilirsiniz. - Her kalemin
linesdizisinde adet kadar satır gönderin; iptal ve iade işlemlerisourceOrderItemLineIdüzerinden yapılır. - Yanıt sipariş bazlıdır:
items[].itemCode=orderNumber. Biri başarısızsa genelisSuccessfalseolur; başarısız siparişin hatasıitems[].errorMesssagealanındadır, diğerleri kaydedilmiş olabilir. - Bir paketin
deliveryServiceTypedeğeri geçersizse istek HTTP 500 ile kesilir; listede o siparişten önceki siparişler kaydedilmiş olabilir.
Kimlik: Bearer token ya da Basic Auth (kullanıcı:parola veya kullanıcı:parola:kiracı, Base64) kabul edilir. Satıcı (vendor) kullanıcısıyla çağrılırsa tüm paketlerin vendorCode değeri o satıcıya ait olmalıdır.
İstek gövdesi
items(object[], zorunlu): Sipariş kalemleri.items.sku(string, zorunlu): Ürün SKU kodu.items.lines(object[]): Kalemin adet bazlı satırları.items.lines.saleTotal(number<double>): Satırın satış tutarı.items.lines.productTypeId(integer<int64>): Ürün tipi kimliği.items.lines.erpOrderItemLineId(string): Satırın ERP'deki karşılığı.items.lines.orderItemLineTaxes(object[]): Satıra ait vergiler.items.lines.orderItemLinePayments(object[]): Satıra düşen ödeme payları.items.lines.sourceOrderItemLineId(string, zorunlu): Satırın sizin sisteminizdeki tekil kimliği. Adetli kalemlerde her adet için ayrı satır gönderilir; iptal/iade bu kimlikle yapılır.items.lines.orderItemLineDiscounts(object[]): Satıra uygulanan indirimler.
items.isGift(boolean): Hediye paketi mi.items.barcode(string, zorunlu): Ürün barkodu.items.seoName(string): Ürünün SEO adı.items.vatRate(number<double>): KDV oranı.items.currency(string): Para birimi.items.giftNote(string): Hediye notu.items.quantity(integer<int32>): Adet.items.vendorId(integer<int64>): Satıcı kimliği.items.listPrice(number<double>): Birim liste fiyatı.items.modelCode(string): Ürün model kodu.items.saleTotal(number<double>): Kalemin toplam satış tutarı.items.lastStatus(string): Kalemin kaynak sistemdeki son statüsü.items.optionCode(string): Ürün seçenek (renk vb.) kodu.items.productName(string, zorunlu): Ürün adı.items.priceExclTax(number<double>): Vergi hariç fiyat.items.productPrice(number<double>): Birim satış fiyatı.items.productTypeId(integer<int64>): Ürün tipi kimliği.items.unitSaleTotal(number<double>): Birim satış tutarı.items.productPhotoPath1(string): Ürün görseli adresi.items.sourceOrderItemId(string, zorunlu): Kalemin sizin sisteminizdeki tekil kimliği.items.salesRepresentativeId(string): Satış temsilcisi kimliği.
posId(integer<int64>): Kasa kimliği.isGift(boolean): Hediye siparişi mi.isGuest(boolean): Üye olmadan verilen sipariş mi.orderId(string): Siparişin sizin sisteminizdeki kimliği. Paket oluştururkensourceOrderIdolarak kullanılır.posCode(string): Kasa kodu.storeId(integer<int64>): Mağaza kimliği.customer(object, zorunlu): Müşteri bilgisi.customer.email(string, zorunlu): E-posta adresi.customer.phone(string): Sabit telefon.customer.lastName(string, zorunlu): Müşteri soyadı.customer.firstName(string, zorunlu): Müşteri adı.customer.taxNumber(string): Vergi numarası.customer.customerId(string): Müşterinin sizin sisteminizdeki kimliği. Doluysa müşteri kodu olarak bu kullanılır.customer.countryCode(string): Müşterinin ülke kodu. VarsayılanTR.customer.mobilePhone(string, zorunlu): Cep telefonu.customer.customerCode(string): Müşteri kodu (customerIdboşsa kullanılır).customer.identityNumber(string): Kimlik numarası.customer.mobilePhonePrefix(string): Cep telefonu ülke kodu öneki.customer.customerAttributes(object[]): Müşteriye ait ek alanlar.customer.customerAttributes.attributeKey(string, zorunlu): Ek alan adı.customer.customerAttributes.attributeValue(string, zorunlu): Ek alan değeri.
giftNote(string): Hediye notu.packages(object[]): Gönderi paketleri. Paketler sonradanCreatePackageile de eklenebilir.packages.cargoKey(string): Kargo anahtarı.packages.lastStatus(string): Paketin kaynak sistemdeki son statüsü.packages.vendorCode(string): Paketi gönderecek satıcı kodu. Satıcı kullanıcısıyla çağrıldığında tüm paketler o satıcıya ait olmalıdır.packages.trackingURL(string): Kargo takip bağlantısı.packages.packageItems(object[], zorunlu): Pakete giren kalemler.packages.packageItems.vatRate(number<double>): KDV oranı.packages.packageItems.quantity(integer<int32>): Bu pakete giren adet.packages.packageItems.saleTotal(number<double>): Pakete düşen satış tutarı.packages.packageItems.vendorSku(string): Satıcının kendi SKU kodu.packages.packageItems.sourceOrderItemId(string, zorunlu): Pakete giren sipariş kalemininitems[].sourceOrderItemIddeğeri.packages.packageItems.packageItemAttributes(object[]): Paket kalemine ait ek alanlar.
packages.subVendorCode(string): Alt satıcı kodu.packages.deliveryMethod(integer<int32>): Teslim yöntemi.0= kargo ile teslim (varsayılan).packages.erpOrderNumber(string): Paketin ERP sipariş numarası.packages.invoiceAddress(object, zorunlu): Fatura adresi.packages.invoiceAddress.phone(string, zorunlu): Telefon numarası.packages.invoiceAddress.region(string): Bölge bilgisi.packages.invoiceAddress.isValid(boolean): Adresin doğrulanmış olup olmadığı.packages.invoiceAddress.zipCode(string, zorunlu): Posta kodu.packages.invoiceAddress.cityCode(string): İl kodu.packages.invoiceAddress.cityName(string, zorunlu): İl adı.packages.invoiceAddress.lastName(string, zorunlu): Alıcı soyadı.packages.invoiceAddress.firstName(string, zorunlu): Alıcı adı.packages.invoiceAddress.stateCode(string): Eyalet/bölge kodu.packages.invoiceAddress.stateName(string): Eyalet/bölge adı (yurt dışı adresler).packages.invoiceAddress.taxNumber(string): Vergi numarası (kurumsal fatura).packages.invoiceAddress.taxOffice(string): Vergi dairesi (kurumsal fatura).packages.invoiceAddress.streetCode(string): Cadde/sokak kodu.packages.invoiceAddress.streetName(string): Cadde/sokak adı.packages.invoiceAddress.addressType(string, zorunlu): Adres tipi:Shipment(teslimat) ya daInvoice(fatura).packages.invoiceAddress.companyName(string): Firma adı (kurumsal fatura için).packages.invoiceAddress.countryName(string, zorunlu): Ülke adı.packages.invoiceAddress.phonePrefix(string): Telefon ülke kodu öneki.packages.invoiceAddress.addressLine1(string, zorunlu): Adres satırı 1.packages.invoiceAddress.addressLine2(string, zorunlu): Adres satırı 2. Alan zorunludur; ikinci satır yoksa-gibi bir değer gönderin.packages.invoiceAddress.buildingCode(string): Bina kodu.packages.invoiceAddress.districtCode(string): İlçe kodu.packages.invoiceAddress.districtName(string, zorunlu): İlçe adı.packages.invoiceAddress.provinceName(string): Vilayet adı (yurt dışı adresler).packages.invoiceAddress.identityNumber(string): Kimlik numarası (bireysel fatura).packages.invoiceAddress.sourceAddressId(string, zorunlu): Adresin sizin sisteminizdeki kimliği; sipariş içinde tekil olmalıdır (1,2gibi verilebilir).packages.invoiceAddress.externalCityCode(string): İlin dış sistemdeki kodu.packages.invoiceAddress.formattedAddress(string): Biçimlendirilmiş tam adres metni.packages.invoiceAddress.neighborhoodCode(string): Mahalle kodu.packages.invoiceAddress.addressAttributes(object[]): Adrese ait ek alanlar.packages.invoiceAddress.externalStateCode(string): Eyalet/bölgenin dış sistemdeki kodu.packages.invoiceAddress.neighbourhoodName(string): Mahalle adı.packages.invoiceAddress.externalStreetCode(string): Cadde/sokağın dış sistemdeki kodu.packages.invoiceAddress.externalAddressCode(string): Adresin dış sistemdeki kodu.packages.invoiceAddress.externalBuildingCode(string): Binanın dış sistemdeki kodu.packages.invoiceAddress.externalDistrictCode(string): İlçenin dış sistemdeki kodu.packages.invoiceAddress.externalNeighborhoodCode(string): Mahallenin dış sistemdeki kodu.
packages.trackingNumber(string): Kargo takip numarası.packages.shipmentAddress(object): Teslimat adresi. Kargo ile teslimde (deliveryMethod0) gönderilmelidir; yoksa fatura adresi kullanılır.packages.shipmentAddress.phone(string, zorunlu): Telefon numarası.packages.shipmentAddress.region(string): Bölge bilgisi.packages.shipmentAddress.isValid(boolean): Adresin doğrulanmış olup olmadığı.packages.shipmentAddress.zipCode(string, zorunlu): Posta kodu.packages.shipmentAddress.cityCode(string): İl kodu.packages.shipmentAddress.cityName(string, zorunlu): İl adı.packages.shipmentAddress.lastName(string, zorunlu): Alıcı soyadı.packages.shipmentAddress.firstName(string, zorunlu): Alıcı adı.packages.shipmentAddress.stateCode(string): Eyalet/bölge kodu.packages.shipmentAddress.stateName(string): Eyalet/bölge adı (yurt dışı adresler).packages.shipmentAddress.taxNumber(string): Vergi numarası (kurumsal fatura).packages.shipmentAddress.taxOffice(string): Vergi dairesi (kurumsal fatura).packages.shipmentAddress.streetCode(string): Cadde/sokak kodu.packages.shipmentAddress.streetName(string): Cadde/sokak adı.packages.shipmentAddress.addressType(string, zorunlu): Adres tipi:Shipment(teslimat) ya daInvoice(fatura).packages.shipmentAddress.companyName(string): Firma adı (kurumsal fatura için).packages.shipmentAddress.countryName(string, zorunlu): Ülke adı.packages.shipmentAddress.phonePrefix(string): Telefon ülke kodu öneki.packages.shipmentAddress.addressLine1(string, zorunlu): Adres satırı 1.packages.shipmentAddress.addressLine2(string, zorunlu): Adres satırı 2. Alan zorunludur; ikinci satır yoksa-gibi bir değer gönderin.packages.shipmentAddress.buildingCode(string): Bina kodu.packages.shipmentAddress.districtCode(string): İlçe kodu.packages.shipmentAddress.districtName(string, zorunlu): İlçe adı.packages.shipmentAddress.provinceName(string): Vilayet adı (yurt dışı adresler).packages.shipmentAddress.identityNumber(string): Kimlik numarası (bireysel fatura).packages.shipmentAddress.sourceAddressId(string, zorunlu): Adresin sizin sisteminizdeki kimliği; sipariş içinde tekil olmalıdır (1,2gibi verilebilir).packages.shipmentAddress.externalCityCode(string): İlin dış sistemdeki kodu.packages.shipmentAddress.formattedAddress(string): Biçimlendirilmiş tam adres metni.packages.shipmentAddress.neighborhoodCode(string): Mahalle kodu.packages.shipmentAddress.addressAttributes(object[]): Adrese ait ek alanlar.packages.shipmentAddress.externalStateCode(string): Eyalet/bölgenin dış sistemdeki kodu.packages.shipmentAddress.neighbourhoodName(string): Mahalle adı.packages.shipmentAddress.externalStreetCode(string): Cadde/sokağın dış sistemdeki kodu.packages.shipmentAddress.externalAddressCode(string): Adresin dış sistemdeki kodu.packages.shipmentAddress.externalBuildingCode(string): Binanın dış sistemdeki kodu.packages.shipmentAddress.externalDistrictCode(string): İlçenin dış sistemdeki kodu.packages.shipmentAddress.externalNeighborhoodCode(string): Mahallenin dış sistemdeki kodu.
packages.sourcePackageId(string, zorunlu): Paketin sizin sisteminizdeki tekil kimliği. Aynı kimlikle ikinci kez gönderilen paket atlanır.packages.deliverySlotCode(string): Teslimat zaman dilimi kodu (en fazla 50 karakter).packages.lastModifiedDate(string<date-time>): Paketin son değişiklik zamanı. Gönderilmezse istek anı kullanılır.packages.cargoIsChangeable(boolean): Kargo firmasının sonradan değiştirilebilir olup olmadığı.packages.packageAttributes(object[]): Pakete ait ek alanlar.packages.packageAttributes.attributeKey(string, zorunlu): Ek alan adı.packages.packageAttributes.attributeValue(string, zorunlu): Ek alan değeri.
packages.carrierCompanyCode(string): Kargo firması kodu.packages.erpOrderCreateDate(string<date-time>): ERP'de sipariş oluşma zamanı.packages.deliveryServiceType(string): Teslimat hizmet tipi. Boş bırakılabilir; doluysa listedeki değerlerden biri olmalıdır, aksi halde sipariş reddedilir (büyük/küçük harf duyarsız).
payments(object[]): Sipariş düzeyinde ödemeler.payments.iban(string): Havale/EFT ödemelerinde IBAN.payments.total(number<double>): Ödeme tutarı.payments.force3d(boolean): Ödemede 3D Secure zorlandı mı.payments.posName(string): Ödemenin alındığı sanal POS adı.payments.bankName(string): Banka adı.payments.cardName(string): Kart adı.payments.cardType(string): Kart tipi.payments.interest(number<double>): Vade farkı tutarı.payments.posPoint(number<double>): Kullanılan POS puanı.payments.cardFamily(string): Kart ailesi.payments.cardIssuer(string): Kartı çıkaran kuruluş.payments.fraudScore(integer<int32>): Dolandırıcılık skoru.payments.force3dRule(string, zorunlu): 3D Secure zorlama kuralı bilgisi. Alan boş dize kabul etmez; kural yoksa anlamlı bir değer gönderin.payments.paidDateUtc(string<date-time>): Ödeme zamanı (UTC).payments.paymentType(string): Ödeme tipi.payments.paymentAgent(string): Ödeme aracısı.payments.international(boolean): Yurt dışı kartı mı.payments.paymentMethod(string): Ödeme yöntemi.payments.paymentStatus(integer<int32>): Ödeme durumu kodu.payments.cardHolderName(string): Kart sahibinin adı.payments.installmentCount(integer<int32>): Taksit sayısı.payments.loyaltyUsedPoint(number<double>): Kullanılan sadakat puanı.payments.transferBankName(string): Havale/EFT ödemelerinde banka adı.payments.captureTransactionId(string): Tahsilat (capture) işlem kimliği.payments.maskedCreditCardNumber(string): Maskelenmiş kart numarası.payments.captureTransactionResult(string): Tahsilat işlem sonucu.payments.cashOnDeliveryPaymentType(string): Kapıda ödeme tipi.payments.subscriptionTransactionId(string): Abonelik işlem kimliği.payments.authorizationTransactionId(string): Provizyon işlem kimliği.payments.allowStoringCreditCardNumber(boolean): Kart numarasının saklanmasına izin verilip verilmediği.payments.authorizationTransactionCode(string): Provizyon onay kodu.payments.authorizationTransactionResult(string): Provizyon işlem sonucu.
supplier(string): Tedarikçi bilgisi.addresses(object[]): Siparişe ait adres listesi.addresses.phone(string, zorunlu): Telefon numarası.addresses.region(string): Bölge bilgisi.addresses.isValid(boolean): Adresin doğrulanmış olup olmadığı.addresses.zipCode(string, zorunlu): Posta kodu.addresses.cityCode(string): İl kodu.addresses.cityName(string, zorunlu): İl adı.addresses.lastName(string, zorunlu): Alıcı soyadı.addresses.firstName(string, zorunlu): Alıcı adı.addresses.stateCode(string): Eyalet/bölge kodu.addresses.stateName(string): Eyalet/bölge adı (yurt dışı adresler).addresses.taxNumber(string): Vergi numarası (kurumsal fatura).addresses.taxOffice(string): Vergi dairesi (kurumsal fatura).addresses.streetCode(string): Cadde/sokak kodu.addresses.streetName(string): Cadde/sokak adı.addresses.addressType(string, zorunlu): Adres tipi:Shipment(teslimat) ya daInvoice(fatura).addresses.companyName(string): Firma adı (kurumsal fatura için).addresses.countryName(string, zorunlu): Ülke adı.addresses.phonePrefix(string): Telefon ülke kodu öneki.addresses.addressLine1(string, zorunlu): Adres satırı 1.addresses.addressLine2(string, zorunlu): Adres satırı 2. Alan zorunludur; ikinci satır yoksa-gibi bir değer gönderin.addresses.buildingCode(string): Bina kodu.addresses.districtCode(string): İlçe kodu.addresses.districtName(string, zorunlu): İlçe adı.addresses.provinceName(string): Vilayet adı (yurt dışı adresler).addresses.identityNumber(string): Kimlik numarası (bireysel fatura).addresses.sourceAddressId(string, zorunlu): Adresin sizin sisteminizdeki kimliği; sipariş içinde tekil olmalıdır (1,2gibi verilebilir).addresses.externalCityCode(string): İlin dış sistemdeki kodu.addresses.formattedAddress(string): Biçimlendirilmiş tam adres metni.addresses.neighborhoodCode(string): Mahalle kodu.addresses.addressAttributes(object[]): Adrese ait ek alanlar.addresses.addressAttributes.attributeKey(string, zorunlu): Ek alan adı.addresses.addressAttributes.attributeValue(string, zorunlu): Ek alan değeri.
addresses.externalStateCode(string): Eyalet/bölgenin dış sistemdeki kodu.addresses.neighbourhoodName(string): Mahalle adı.addresses.externalStreetCode(string): Cadde/sokağın dış sistemdeki kodu.addresses.externalAddressCode(string): Adresin dış sistemdeki kodu.addresses.externalBuildingCode(string): Binanın dış sistemdeki kodu.addresses.externalDistrictCode(string): İlçenin dış sistemdeki kodu.addresses.externalNeighborhoodCode(string): Mahallenin dış sistemdeki kodu.
cashierId(string): Kasiyer kimliği.discounts(object[]): Sipariş düzeyinde indirimler.discounts.total(number<double>): İndirim toplamı.discounts.amount(number<double>): İndirim tutarı.discounts.couponCode(string): Kupon kodu.discounts.discountId(string): İndirim kimliği.discounts.realAmount(number<double>): Gerçekleşen indirim tutarı.discounts.discountCode(string): İndirim kodu.discounts.discountName(string): İndirim adı.discounts.discountCampId(string, zorunlu): Kampanya kimliği.discounts.discountTypeId(string): İndirim tipi kimliği.
orderDate(string<date-time>, zorunlu): Sipariş zamanı.storeCode(string): Mağaza kodu (storeIdyoksa kullanılır).deviceCode(string): Cihaz kodu.lastStatus(string): Siparişin kaynak sistemdeki son statüsü.channelCode(string, zorunlu): Satış kanalı kodu (en fazla 50 karakter), ör.WEB.countryCode(string): Sipariş ülkesi kodu.description(string): Sipariş notu.orderNumber(string): Sipariş numarası. Siparişin tekillik anahtarıdır: aynı numarayla tekrar gönderilen sipariş yeniden yaratılmaz, yalnızca yeni paketleri eklenir.languageCode(string): Sipariş dili kodu.applicationId(integer<int64>): Siparişin geldiği uygulama kimliği (web sitesi, mobil uygulama, mağaza uygulaması vb.).erpOrderNumber(string): ERP sipariş numarası.additionalCosts(object[]): Ek maliyetler.additionalCosts.cost(number<double>): Tutar.additionalCosts.rate(number<double>): Oran.additionalCosts.description(string): Ek maliyet açıklaması.
orderAttributes(object[]): Siparişe ait ek alanlar.orderAttributes.attributeKey(string, zorunlu): Ek alan adı.orderAttributes.attributeValue(string, zorunlu): Ek alan değeri.
totalShippingPrice(number<double>): Toplam kargo ücreti.orderSourceTypeCode(string): Sipariş kaynak tipi kodu.
Yanıtlar
- 200: İstek işlendi. Sipariş bazlı sonuç için
itemsdizisine bakın. - 400: Gövde doğrulanamadı (zorunlu alan eksik, tip uyumsuz ya da JSON bozuk). Yanıt ASP.NET Core
ValidationProblemDetailsbiçimindedir;errorsalanı hangi alanın hatalı olduğunu gösterir. - 401:
Authorizationbaşlığı yok, token geçersiz ya da süresi dolmuş. Gövde boş döner;/Auth/loginile yeni token alın. - 500: Beklenmeyen sunucu hatası. Bu yanıt PascalCase alan adlarıyla döner (diğer yanıtlardan farklı olarak) ve
nullalanlar da yazılır.
200 yanıt alanları
items(object[], zorunlu): Gönderilen her kayıt için ayrı sonuç.items.itemCode(string, zorunlu): Sonucun ait olduğu kaydın kodu (sipariş kaydındaorderNumber, paket oluşturmadasourcePackageId).items.isSuccess(boolean, zorunlu): Bu kayıt başarıyla işlendiysetrue.items.errorMesssage(string): Kayıt başarısızsa hata mesajı. Yalnızca doluysa döner.
errorType(string): Genel hata tipi. Yalnızca doluysa döner.isSuccess(boolean, zorunlu): Listedeki tüm kayıtlar başarılıysatrue; en az biri başarısızsafalse.errorSource(string): Hata kaynağı. Yalnızca doluysa döner.errorMesssage(string): Genel hata mesajı (ör. sipariş bulunamadı). Yalnızca doluysa döner.