Ürün Kaydetme (Save Product)

Ürün Kaydetme (Save Product)

Ürün servisleri için WSDL adresi: https://api.n11.com/ws/CategoryService.wsdl

Yeni ürün oluşturmak veya mevcut ürünü güncellemek için kullanılır. Ürün kodu “productSellerCode” adıyla veirlen data bu mağaza için bir kayıtlı bir ürünü gösteriyorsa bu ürün güncellenir, aksi halde yeni bir ürün oluşturulur.

Öncelikle ürüne varyant eklemek için GetCategoryAttributes ve GetCategoryAttributesId servislerinin category.attributeList.attribute.variant değeri “true” olan kategori özelliklerine varyant iletebilirsiniz.

Product.Attribute.Attribute.Value alanında GetCategoryAttributeValue metodu ile gelen değerler dışında da değer girebilirsiniz. GetCategoryAttributeValue metoduyla gelmeyen bir değer girdiğiniz durumda ürün katalogda onay sürecine girecektir.

SaveProduct ile oluşturduğunuz ürünler aşağıdaki kontrol süreçlerinden geçerek n11 katalogu ile doğrudan eşleşerek satışa açılmaktadır. Ürün n11 katalogu ile eşleşmiyor ise response başarılı sonuç verecektir. Katalog onay sürecinde sonra satışa açılacaktır.

SaveProduct n11 katalogunda arama yapılması için GTIN veya Katalog ID bilgilerinden en az biri dolu olmalıdır.

1. Kontrol product.stockItems.stockItem.n11CatalogId değeri dolu ise n11 katalogundan doğrudan satışa açılır.

2.Kontrol Catalog ID boş ise GTIN(Barkod) product.stockItems.stockItem.gtin alanı değer girilmelidir. product.stockItems.stockItem.gtin değeri n11 katalogu ile eşleşme aranır.

3. Kontrolde GTIN ve Katalog ID değerlerinden sonuç bulunamaz ise product.title n11 katalogu ile %99 eşleştirme ile doğrudan satışa açılmaktadır

Eğer product.title ile n11 katalogundan bulunmuyor ise ürün katalog ekibinin onayına gönderilecektir. Katalog ekibi tarafından onaylanan ürün herhangi bir işlem yapılmadan direkt satışa açılacaktır.

category.attributeList.attribute.variant değeri “true” olan ürünlere stockItems bilgilerine stok girişi yaparak görsel eklemeniz gerekmektedir.

product.stockItems.stockItem.images.image.url; Ürün görsellerine ait URL adresi listesidir. Görsel url adresleri SSL sertifikalı "https" formatında adresler olmalıdır. Bir stokItem için maksimum 3 adet görsel eklenebilir.Yüklenen fotoğrafın bir kenarının maksimum 5000 pixel olması gerekmektedir.

Varyantlı/ varyantsız ürün gönderimlerimde optionprice değerinin dolu iletilmesi gerekmektedir.

category.id” içinde ürünün dahil olacağı kategori N11 ID bilgisi yer almalıdır, kategori listesi CategoryService GetParentCategory ile başlayıp GetSubCategories metodları ile alınabilir, ürün dahil olacağı kategori en alt seviyede olmalıdır.

"templateName" içinde sistemde bu mağaza için tanımlı olan bir teslimat şablonu kullanılmalıdır. Teslimat şablonları tanımlamak için Satış Ofisi ekranlarından Hesabım > Teslimat Bilgileri menü adımları takip edilerek manuel olarak oluşturulabilir veya ShipmentService içinden createOrUpdateShipmentTemplate metodu kullanılabilir.

SaveProductRequest
Auth Bkz: Yetkilendirme
product.productSellerCode Ürün Mağaza Kodu
product.title Bkz: title
product.subtitle Bkz: subtitle
product.description Ürün açıklama bilgileri (HTML olabilir)
product.attributes.attribute Ürün özelliklerinin adı ve değeri girilen alan
product.category.id Ürün kategori numarası
product.price Ürün baz fiyatı
product.currencyType Ürün liste fiyatı para birimi
product.images.image.url Ürün resmi URL adresi
product.images.image.order Ürün resmi gösterilme sırası
product.saleStartDate Ürün satış başlangıç tarihi (dd/MM/yyyy), boş gönderilirse ürün aynı gün satışa çıkar
product.saleEndDate Ürün satış bitiş tarihi (dd/MM/yyyy), boş gönderilirse çok ileri bir tarihe atanır
product.productionDate Ürün üretim tarihi (dd/MM/yyyy)
product.expirationDate Ürün son kullanma tarihi (dd/MM/yyyy)
product.productCondition Bkz: Ürün Durumu
product.preparingDay Ürün kargoya verilme süresi (gün olarak)
product. domestic Ürünün yerli üretim olup olmadığını belirtir.Boolean olarak true/false değeri alır.
product.discount Bkz: Ürün İndirim Bilgisi
product.shipmentTemplate Teslimat Şablon Adı
product.stockItems.stockItem.quantity Stok miktarı
product.stockItems.stockItem.sellerStockCode Mağaza ürün stok kodu
product.stockItems.stockItem.attributes.attribute.name Eğer ürünün seçenekleri varsa bu bilgiler girilir, isim olarak kendi belirlediğiniz bir değerleri kullanabilirsiniz.
product.stockItems.stockItem.attributes.attribute.value Eğer ürünün seçenekleri varsa bu bilgiler girilir, değer olarak kendi belirlediğiniz bir değerleri kullanabilirsiniz.
product.stockItems.stockItem.optionPrice Ürün stok biriminin liste fiyatı
product.stockItems.stockItem.bundle Birlikte satış yapılan ürünler
product.stockItems.stockItem.mpn Ürünün üretici parça numarası
product.stockItems.stockItem.gtin Ürünün global ticari öğe numarası
product.stockItems.stockItem.oem Parça/Ürün bağlantı numarası
product.stockItems.stockItem.n11CatalogId Ürünün N11 katalog numarası
specialProductInfoList.specialProductInf.key Seyahat kategori ürün açıklama bilgilerinin girildiği alan. Bu Alana; TurProgrami, IptalIadeKosullari,EkHizmetler bilgileri girilerek açıklama oluşturulur
specialProductInfoList.specialProductInf.value Key’e karşılık gelen html verisi
product.groupAttribute Ürünün gruplandığı özellik adı  
product.groupItemCode Ürünün gruplandığı özellik grubunun adı (satıcı verir)  
product.itemName Ürünün gruplandığı özellik değeri  

*Bold alanlar zorunlu alanlardır.

SaveProductResponse
result Bkz: Result
product Bkz: Ürün Özet Bilgisi

SaveProduct Örnek Çağrı

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.n11.com/ws/schemas">
    <soapenv:Header/>
    <soapenv:Body>
        <sch:SaveProductRequest>
            <auth>
                <appKey>***</appKey>
                <appSecret>***</appSecret>
            </auth>
            <product>
                <productSellerCode>Deneme1234567</productSellerCode>
                <title>Lorem Ipsum</title>
                <subtitle>Lorem ipsum dolor sit amet</subtitle>
                <description>Hello World!</description>
                <category>
                    <id>1000476</id>
                </category>
                <specialProductInfoList/>
                <price>3000</price>
                <domestic>true</domestic>
                <currencyType>1</currencyType>
                <images>
                    <!--1 or more repetitions:-->
                    <image>
                        <url>https://www.google.com/logos/doodles/2016/bahrain-national-day-2016-6221988579246080-hp2x.jpg</url>
                        <order>1</order>
                    </image>
                </images>
                <approvalStatus>1</approvalStatus>
                <attributes>
                    <!--1 or more repetitions:-->
                    <attribute>
                        <name>Marka</name>
                        <value>Apple</value>
                    </attribute>
                    <attribute>
                        <name>Renk</name>
                        <value>Mavi</value>
                    </attribute>
                </attributes>
                <saleStartDate>26/12/2016</saleStartDate>
                <saleEndDate>26/12/2017</saleEndDate>
                <productionDate>01/12/2016</productionDate>
                <expirationDate/>
                <productCondition>1</productCondition>
                <preparingDay>1</preparingDay>
                <discount>
                    <startDate/>
                    <endDate/>
                    <type/>
                    <value/>
                </discount>
                <shipmentTemplate>AGT</shipmentTemplate>
                <stockItems>
                    <!--1 or more repetitions:-->
                    <stockItem>
                        <bundle/>
                        <mpn/>
                        <gtin>0190198066473</gtin>
                        <oem></oem>
                        <n11CatalogId></n11CatalogId>
                        <quantity>5</quantity>
                        <sellerStockCode>StokKodu1234567890-1</sellerStockCode>
                        <attributes>
                            <!--1 or more repetitions:-->
                            <attribute>
                                <name>Renk</name>
                                <value>Mavi</value>
                            </attribute>
                        </attributes>
                        <optionPrice/>
                    </stockItem>
                    <stockItem>
                        <bundle/>
                        <mpn/>
                        <gtin>0190198066474</gtin>
                        <oem></oem>
                        <n11CatalogId></n11CatalogId>
                        <quantity>5</quantity>
                        <sellerStockCode>StokKodu1234567890-2</sellerStockCode>
                        <attributes>
                            <!--1 or more repetitions:-->
                            <attribute>
                                <name>Renk</name>
                                <value>Kırmızı</value>
                            </attribute>
                        </attributes>
                        <optionPrice/>
                    </stockItem>
                </stockItems>
                <groupAttribute></groupAttribute>
                <groupItemCode></groupItemCode>
                <itemName></itemName>
            </product>
        </sch:SaveProductRequest>
    </soapenv:Body>
</soapenv:Envelope>
Response
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
    <env:Header/>
    <env:Body>
        <ns3:SaveProductResponse xmlns:ns3="http://www.n11.com/ws/schemas">
            <result>
                <status>success</status>
                <errorMessage/>
            </result>
            <product>
                <currencyAmount>3000.00</currencyAmount>
                <currencyType>1</currencyType>
                <displayPrice>3000.00</displayPrice>
                <isDomestic>true</isDomestic>
                <id>16685311</id>
                <price>3000.00</price>
                <productSellerCode>Deneme1234567</productSellerCode>
                <approvalStatus>1</approvalStatus>
                <saleStatus>2</saleStatus>
                <stockItems>
                    <stockItem>
                        <currencyAmount>3000.00</currencyAmount>
                        <displayPrice>3000.00</displayPrice>
                        <gtin>0190198066474</gtin>
                        <mpn/>
                        <oem/>
                        <n11CatalogId/>
                        <optionPrice>3000.00</optionPrice>
                        <sellerStockCode>StokKodu1234567890-2</sellerStockCode>
                        <attributes>
                            <attribute>
                                <id>354091250</id>
                                <name>Renk</name>
                                <value>Kırmızı</value>
                            </attribute>
                        </attributes>
                        <id>121876345662</id>
                        <quantity>5</quantity>
                        <version>0</version>
                    </stockItem>
                    <stockItem>
                        <currencyAmount>3000.00</currencyAmount>
                        <displayPrice>3000.00</displayPrice>
                        <gtin>0190198066473</gtin>
                        <mpn/>
                        <oem/>
                        <n11CatalogId/>
                        <optionPrice>3000.00</optionPrice>
                        <sellerStockCode>StokKodu1234567890-1</sellerStockCode>
                        <attributes>
                            <attribute>
                                <id>354091250</id>
                                <name>Renk</name>
                                <value>Mavi</value>
                            </attribute>
                        </attributes>
                        <id>121876345663</id>
                        <quantity>5</quantity>
                        <version>0</version>
                    </stockItem>
                </stockItems>
                <subtitle>Lorem ipsum dolor sit amet</subtitle>
                <title>Lorem Ipsum</title>
            </product>
        </ns3:SaveProductResponse>
    </env:Body>
</env:Envelope>
SaveProduct Örnek Çağrı (JAVA)
public static void main (String []args) {
        String strAppKey = "64155786-da91-4204-8735-443d17acf808";
        String strAppSecret = "***";
        String strUrl = "https://www.google.com/logos/doodles/2016/bahrain-national-day-2016-6221988579246080-hp2x.jpg";
        String strSellerStockCode = "MaviKod-APIDeneme432100000000";
        String strSellerStockCode1 = "KırmızıKod-APIDeneme4321000000000";
        String strAttributeName = "Marka";
        String strAttributeValue = "Apple";
        String strSkuAttributeKey = "Renk";
        String strSkuAttributeValue = "Mavi";
        String strSkuAttributeValue1 = "Kırmızı";
        String strProductTitle = "Lorem ipsum";
        String strProductSubtitle = "Lorem ipsum dolor sit amet";
        String strProductSellerCode = "APIDeneme432101000000000";
        String strProductCondition = "1";
        String strShipmentTemplate = "AGT";
        String strProductDescription = "Hello World!";
        String strGtin = "0190198066473";
        String strGtin1 = "0190198066474";
        Long n11CatalogId = null;
        Long n11CatalogId1 = null;
        int setOrderValue = 1;
        int quantityValue = 10;
        int quantityValue1 = 20;
        int categoryIdValue = 592;
        int priceValue = 50;
        int currencyTypeValue = 1;
        int approvalStatusValue = 1;
        int preparingDayValue = 3;

        Authentication authentication = new Authentication();
        authentication.setAppKey(strAppKey);
        authentication.setAppSecret(strAppSecret);

        ProductImage productImage = new ProductImage();
        ProductImageList productImageList = new ProductImageList();
        productImage.setUrl(strUrl);
        productImage.setOrder(BigInteger.valueOf(setOrderValue));
        productImageList.getImage().add(productImage);

        ProductAttributeRequestList skuAttributeRequestList = new ProductAttributeRequestList();
        ProductAttributeRequest skuAttributeRequest = new ProductAttributeRequest();
        skuAttributeRequest.setName(strSkuAttributeKey);
        skuAttributeRequest.setValue(strSkuAttributeValue);
        skuAttributeRequestList.getAttribute().add(skuAttributeRequest);

        ProductAttributeRequestList skuAttributeRequestList1 = new ProductAttributeRequestList();
        ProductAttributeRequest skuAttributeRequest1 = new ProductAttributeRequest();
        skuAttributeRequest1.setName(strSkuAttributeKey);
        skuAttributeRequest1.setValue(strSkuAttributeValue1);
        skuAttributeRequestList1.getAttribute().add(skuAttributeRequest1);

        ProductSkuRequestList stockItems = new ProductSkuRequestList();

        ProductSkuRequest sku = new ProductSkuRequest();
        sku.setSellerStockCode(strSellerStockCode);
        sku.setAttributes(skuAttributeRequestList);
        sku.setQuantity(BigInteger.valueOf(quantityValue));
        sku.setGtin(strGtin);
        sku.setPimsId(n11CatalogId);

        ProductSkuRequest sku1 = new ProductSkuRequest();
        sku1.setSellerStockCode(strSellerStockCode1);
        sku1.setAttributes(skuAttributeRequestList1);
        sku1.setQuantity(BigInteger.valueOf(quantityValue1));
        sku1.setGtin(strGtin1);
        sku1.setPimsId(n11CatalogId);

        stockItems.getStockItem().add(sku);
        stockItems.getStockItem().add(sku1);

        CategoryRequest categoryRequest = new CategoryRequest();
        categoryRequest.setId(categoryIdValue);

        ProductAttributeRequest productAttribute = new ProductAttributeRequest();
        productAttribute.setName(strAttributeName);
        productAttribute.setValue(strAttributeValue);
        ProductAttributeRequestList productAttributeRequestList = new ProductAttributeRequestList();
        productAttributeRequestList.getAttribute().add(productAttribute);

        ProductRequest productRequest = new ProductRequest();
        productRequest.setTitle(strProductTitle);
        productRequest.setSubtitle(strProductSubtitle);
        productRequest.setDescription(strProductDescription);
        productRequest.setCategory(categoryRequest);
        productRequest.setProductSellerCode(strProductSellerCode);
        productRequest.setPrice(BigDecimal.valueOf(priceValue));
        productRequest.setCurrencyType(BigInteger.valueOf(currencyTypeValue));
        productRequest.setImages(productImageList);
        productRequest.setApprovalStatus(BigInteger.valueOf(approvalStatusValue));
        productRequest.setPreparingDay(BigInteger.valueOf(preparingDayValue));
        productRequest.setStockItems(stockItems);
        productRequest.setProductCondition(strProductCondition);
        productRequest.setShipmentTemplate(strShipmentTemplate);
        productRequest.setAttributes(productAttributeRequestList);

        SaveProductRequest saveProductRequest = new SaveProductRequest();
        saveProductRequest.setAuth(authentication);
        saveProductRequest.setProduct(productRequest);

        ProductServicePort port = new ProductServicePortService().getProductServicePortSoap11();
        SaveProductResponse response = port.saveProduct(saveProductRequest);

        System.out.println("Saving product " + response.getProduct().getId() + " is " + response.getResult().getStatus().getValue());

Yetkilendirme (Authentication)

auth.appKey Servislere erişim için kullanılacak uygulama anahtarı
auth.appSecret Servislere erişim için kullanılacak uygulama şifresi

Sonuç Durum Bilgisi (Result)

result.status İşlem sonucu durum bilgisini gösterir. “success” ve “failure” durum bilgilerini döner.

Sayfalandırma (Pagination)

pagingData.currentPage Gösterilen sayfa numarası (currentpage 0 ile başlar)
pagingData.pageSize Sayfadaki madde sayısı
pagingData.totalCount* Toplam madde sayısı
pagingData.pageCount* Toplam sayfa sayısı

*Request yaparken kullanılmaz, çağrı yapan tarafa response içinde döner.

Ürün Özet Bilgisi (Product Summary Data)

product.currencyAmount Görüntülenen ürün fiyatının para birimi tutarı
product.currencyType Görüntülenen ürün fiyatının para birimi cinsi
1: TL
2: USD
3: EUR
product.displayPrice Görüntülenen ürün fiyatı (Ürünün indirimler sonucu tanımlanan son fiyat hali)
product.id Ürünün N11 ID si
product.productSellerCode Mağaza ürün kodu
product.title Ürün başlığı
product.subtitle Ürün alt başlığı
product.oldPrice Ürüne ait eski baz fiyatı (Güncelleme yapan metodlar sonrasında döner)
product.price Ürünün baz fiyatı
product.displayPrice Görüntülenen ürün fiyatı (Ürünün indirimler sonucu tanımlanan son fiyat hali)
product.saleStatus 1: Satış Öncesi(Before_Sale)
2: Satışta(On_Sale)
3: Stok yok (Out of_Stock)
4: Satışa kapalı (Sale_Closed)
product.approvalStatus Ürün onay durumu:
1: Aktif (Satışta)
2: Beklemede
3: Yasaklı
product.stockItems.stockItem.id Ürün stok N11 ID si
product.stockItems.stockItem.quantity Ürün stok miktarı
product.stockItems.stockItem.version Ürün stok versiyon numarası
product.stockItems.stockItem.currencyAmount Ürün stok biriminin para birimi cinsinden tutarı
product.stockItems.stockItem.displayPrice Ürün stok biriminin görüntülenen ürün fiyatı (Ürünün satıcı indirimi sonucu tanımlanan son fiyat hali)
product.stockItems.stockItem.bundle Birlikte satış yapılan ürünler
product.stockItems.stockItem.mpn Ürünün üretici parça numarası
product.stockItems.stockItem.gtin Ürünün global ticari öğe numarası
product.stockItems.stockItem.oem Parça/Ürün bağlantı numarası
product.stockItems.stockItem.n11CatalogId Ürünün N11 katalog numarası
product.stockItems.stockItem.sellerStockCode Ürün stok mağaza kodu
product.stockItems.stockItem.oldOptionPrice Ürün stok biriminin önceki liste fiyatı (Güncelleme yapan metodlar sonrasında döner)
product.stockItems.stockItem.optionPrice Ürün stok biriminin liste fiyatı
product.stockItems.stockItem.attributes.attribute.name Stok tanımının olduğu seçenek adı
product.stockItems.stockItem.attributes.attribute.value Stok tanımının olduğu seçenek değeri

Ürün Başlığı (Title)

product.title Ürün sayfasında görünecek başlık, en fazla 65 karakter olmalıdır.

Ürün Altbaşlığı (Subtitle)

product.subtitle Ürün sayfasında görünecek altbaşlık, en fazla 65 karakter olmalıdır.

Onay Durumu (Approval Status)

productSearch.approvalStatus Ürünün onay durumu
“Active”: Satışta olan ürünler
“Suspended”: Beklemede olan ürünler
“Prohibited”: Yasaklı olan ürünler
“Unlisted”: Liste dışı ürünler
“WaitingForApproval”: Onay bekleyen ürünler
“Rejected”: Reddedilen ürünler
“UnapprovedUpdate”: Güncelleme onayı bekleyen ürünler

Ürün İndirim Bilgisi (Product Discount Data)

discount.discountType Mağaza İndirim Tipi:
1: İndirim Tutarı Cinsinden
2: İndirim Oranı Cinsinden
3: İndirimli Fiyat Cinsinden
discount.discountValue İndirim Miktarı (indirim tipinde verilen parametreye göre)
discount.discountStartDate Mağaza indirimi başlama tarihi
discount.discountEndDate Mağaza indirimi bitiş tarihi