Webhook ( web kancaları ) geliştirmeleri ile birlikte , belirli bir olay ve ya işlem gerçekleştiğinde başka bir uygulamayı otomatik olarak bilgilendirebileceğiz.

Siparişlerinizi çekmek için kullandığınız getshipmentpackage servisini kullanarak veri almak yerine , webhookla ( web kancaları ile ) ,olayın meydana geldiği zaman tetiklenen sizlerin paylaştığı özel bir URL’ye istek gönderen bir mekanizma kullanılmaktadır.

Webhook Servisi

Trendyol Satıcı Merkezi'ndeki sipariş pakerleri ile ilgili bildirim almak için webhook aboneliklerini kullanabilirsiniz. Siparişlerin aşağıdaki statuleri için webhook kullanılabilir

  • "CREATED"
  • "PICKING"
  • "INVOICED"
  • "SHIPPED"
  • "CANCELLED"
  • "DELIVERED"
  • "UNDELIVERED"
  • "RETURNED"
  • "UNSUPPLIED"
  • "AWAITING"
  • "UNPACKED"
  • "AT_COLLECTION_POINT"
  • "VERIFIED"

Tüm statuleri tek bir webhook yaratma servisi ile elde edebilirsiniz. Yapılan istekler statu farketmeksizin full order datası olarak iletilecek olup, satıcıların, siparişin istenen durumunu alabilmesi için webhook hizmetini aşağıda ki modele göre sağlamanız gerekmektedir.

Webhook Authorization

İzin verilen 2 tür yetkilendirme yöntemi vardır: "BASIC_AUTHENTICATION" veya "API_KEY". Webhook isteğinizi oluştururken "AuthenticationType" adlı alanda ilgili yöntemlerden birini kullanmalısınız.

  • "AuthenticationType" alanı "API_KEY" ise, "apiKey" alanı zorunludur ve "username" ve "password" alanları gönderilmeyebilir.
    • Eğer servisiniz header'da api key bekliyorsa, ilgili alan "x-api-key" olarak gönderilecektir.
  • "AuthenticationType" alanı "BASIC_AUTHENTICATION" ise, "username" ve "password" alanları zorunludur. "apiKey" alanı gönderilmeyebilir.

Webhook Yeniden Tetikleme Modeli

Webhook servislerinde hata alınması durumunda, sistem otomatik olarak aksiyon alacak olup ilgili webhook isteğini pasife alacaktır, bu kapsamda satıcılarımıza iki adet mail iletiyor olacağız.

  • 1.Mailde hata alınan webhook ID ile ilgili bilgileri paylaşıyor olup, bu servise istek atmaya devam edeceğimiz süreyi sizinle paylaşıyor olacağız.
  • 2.Mailde ise ilgili sürenin sonuna geldiğimizi ve hata alınan webhook ID nin pasife alındığını sizlere bildirmiş olacağız.

Pasife alınan webhooklarınızı servisinizdeki sorunu giderdikten sonra aktife alabilirsiniz.

Webhook Önemli Notlar

  • Webhook servislerinize yapılan herhangi bir başarısız istek olması durumunda, Trendyol, başarılı olana kadar her 5 dakikada bir başarısız istekleri iletecektir. (Bu gelecekte değiştirilecektir)
  • Webhook ile veri gönderimi her zaman olanaklı olamadığı için, ilgili servis üzerinden, Trendyol'dan periyodik olarak veri almak için geliştirme yapmanız tavsiye edilmektedir.
    • Örneğin sipariş datası için bir webhook isteği oluşturduysanız, getshipmentpackage servisini kullanarak periyodik olarak datalarınızı eşitlemenizi öneririz.
  • Webhook servislerinizin endpointi "Trendyol", "Dolap", "Localhost" ibareleri içermemelidir.
  • 1 satıcı için oluşturulabileceek maksimum webhook sayısı 15 dir. Pasife alınan webhooklarda burdaki sayıya dahildir. Maksimum webhook sayısını aşarsanız var olan webhooklarınızdan uygun olanı silip yeniden webhook tanımlayabilirsiniz

Webhook Request Modeli

Şu anda satıcıların getShipmentPackages hizmetiyle yalnızca aynı modele sahip siparişleri kullanmasına izin veriyoruz.

  • Request tipi JSON formatında olmalıdır.
  • Request methodu POST olmalıdır.

"createdBy" aşağıdaki değerleri alabilir:

  • "order-creation" -> Paket, gelen siparişle doğrudan oluşturulur
  • "cancel" -> Paket, kısmi iptalden sonra oluşturulur
  • "split" -> Paket, paket bölünmesine göre oluşturulur
  • "transfer" -> Siparişi alan satıcının ürünü olmaması nedeniyle Trendyol tarafından başka bir satıcıya yönlendirilen siparişler.

Trendyol siparişleri aşağıdaki modele göre iletiyor olacak


        {
            "shipmentAddress": {
                "id": 11111111,
                "firstName": "Trendyol",
                "lastName": "Customer",
                "company": "",
                "address1": "DSM Grup Danışmanlık İletişim ve Satış Ticaret A.Ş. Maslak Mahallesi Saat Sokak Spine Tower No:5 İç Kapı No:19 Sarıyer/İstanbul",
                "address2": "",
                "city": "İstanbul",
                "cityCode": 34,
                "district": "Sarıyer",
                "districtId": 54,
                "countyId": 0, // CEE bölgesi için gelecektir.
                "countyName": "", // CEE bölgesi için gelecektir.
                "shortAddress": "", // GULF bölgesi için gelecektir.
                "stateName": "", // GULF bölgesi için gelecektir.
                "addressLines": {
                    "addressLine1": "",
                    "addressLine2": ""
                },
                "postalCode": "34200",
                "countryCode": "TR",
                "neighborhoodId": 21111,
                "neighborhood": "Maslak Mahallesi",
                "phone": null,
                "fullAddress": "DSM Grup Danışmanlık İletişim ve Satış Ticaret A.Ş. Maslak Mahallesi Saat Sokak Spine Tower No:5 İç Kapı No:19 Sarıyer/İstanbul",
                "fullName": "Trendyol Customer"
            },
            "orderNumber": "10654411111",
            "grossAmount": 498.90,
            "packageGrossAmount": 498.90,
            "totalDiscount": 0.00,
            "packageSellerDiscount": 0.00,
            "totalTyDiscount": 0.00, // commercial true olduğu durumda dolu gelebilir, false olduğu durumda 0 dönecektir.
            "packageTyDiscount": 0.00, // commercial true olduğu durumda dolu gelebilir, false olduğu durumda 0 dönecektir.
            "packageTotalDiscount": 0.00,
            "discountDisplays": [
            {
                "displayName": "Sepette %20 İndirim",
                "discountAmount": 100
            },
            {
                "displayName": "Trendyol Plus'a Özel Fiyat",
                "discountAmount": 67.2
            },
            {
                "displayName": "Sepette %50 İndirim",
                "discountAmount": 500
            },
            {
                "displayName": "Sepette %30 İndirim",
                "discountAmount": 60
            }
        ],
            "taxNumber": null,
            "invoiceAddress": {
                "id": 11111112,
                "firstName": "Trendyol",
                "lastName": "Customer",
                "company": "", // GULF bölgesi siparişlerinde boş gelebilir.
                "address1": "DSM Grup Danışmanlık İletişim ve Satış Ticaret A.Ş. Maslak Mahallesi Saat Sokak Spine Tower No:5 İç Kapı No:19 Sarıyer/İstanbul",
                "address2": "",
                "city": "İstanbul",
                "cityCode": 0,
                "district": "Sarıyer", // GULF bölgesi siparişlerinde boş gelebilir.
                "districtId": 54,
                "countyId": 0, // CEE bölgesi için gelecektir.
                "countyName": "", // CEE bölgesi için gelecektir.
                "shortAddress": "", // GULF bölgesi için gelecektir.
                "stateName": "", // GULF bölgesi için gelecektir.
                "addressLines": {
                    "addressLine1": "",
                    "addressLine2": ""
                },
                "postalCode": "", // GULF bölgesi siparişlerinde boş gelebilir.
                "countryCode": "TR",
                "neighborhoodId": 0,
                "phone": null,
                "latitude": "11.111111",
                "longitude": "22.222222",
                "fullAddress": "DSM Grup Danışmanlık İletişim ve Satış Ticaret A.Ş. Maslak Mahallesi Saat Sokak Spine Tower No:5 İç Kapı No:19 Sarıyer/İstanbul",
                "fullName": "Trendyol Customer",
                "taxOffice": "Company of OMS's Tax Office", // Kurumsal fatura olmadığı durumda (commercial=false ise) body içerisinde dönmeyecektir.
                "taxNumber": "Company of OMS's Tax Number" // Kurumsal fatura olmadığı durumda (commercial=false ise)) body içerisinde dönmeyecektir.
            },
            "customerFirstName": "Trendyol",
            "customerEmail": "[email protected]",
            "customerId": 1451111111,
            "supplierId": 2738,
            "customerLastName": "Customer",
            "id": 33301111111,
            "shipmentPackageId": 3330111111,
            "cargoTrackingNumber": 7280027504111111,
            "cargoTrackingLink": "https://tracking.trendyol.com/?id=111111111-1111-1111-1111-11111111",
            "cargoSenderNumber": "210090111111",
            "cargoProviderName": "Trendyol Express",
            "lines": [
                {
                    "quantity": 1,
                    "salesCampaignId": 11,
                    "productSize": "Tek Ebat",
                    "merchantSku": "111111",
                    "sku": "8683771111111",
                    "stockCode": "111111",
                    "productName": "Kuş ve Çiçek Desenli Tepsi - Yeşil / Altın Sarısı - 49 cm, 01SYM134, Tek Ebat",
                    "productCode": 1239111111,
                    "contentId": 1239111111,
                    "productOrigin": "TR",
                    "merchantId": 2738,
                    "sellerId": 2738,
                    "amount": 498.90,
                    "lineGrossAmount": 498.90,
                    "discount": 0.00,
                    "lineTotalDiscount": 0.00,
                    "lineSellerDiscount": 0.00,
                    "tyDiscount": 0.00,
                    "lineTyDiscount": 0.00,
                    "discountDetails": [
                        {
                            "lineItemPrice": 498.90,
                            "lineItemDiscount": 0.00,
                            "lineItemSellerDiscount": 0.00,
                            "lineItemTyDiscount": 0.00
                        }
                    ],
                    "currencyCode": "TRY",
                    "productColor": "Yeşil",
                    "id": 4765111111,
                    "lineId": 4765111111,
                    "vatBaseAmount": 20.00,
                    "vatRate": 20.00,
                    "barcode": "8683772071724",
                    "orderLineItemStatusName": "Delivered",
                    "price": 498.90,
                    "lineUnitPrice": 498.90,
                    "fastDeliveryOptions": [],
                    "productCategoryId": 2710,
                    "commission": 13
                    "cancelledBy": "",
                    "cancelReason": "",
                    "cancelReasonCode":
                }
            ],
            "orderDate": 1762253333685,
            "identityNumber": "11111111111",
            "currencyCode": "TRY",
            "packageHistories": [
                {
                    "createdDate": 1762242537624,
                    "status": "Awaiting"
                },
                {
                    "createdDate": 1762242543616,
                    "status": "Created"
                },
                {
                    "createdDate": 1762246983623,
                    "status": "Invoiced"
                },
                {
                   "createdDate": 1762246983623,
                   "status": "Picking"
                },
                {
                    "createdDate": 1762352727000,
                    "status": "Shipped"
                },
                {
                    "createdDate": 1762860180000,
                    "status": "Delivered"
                }
            ],
            "shipmentPackageStatus": "Delivered",
            "status": "Delivered",
            "whoPays": 1, // Eğer satıcı anlaşması ise 1 gelir, trendyol anlaşması ise alan gelmez
            "deliveryType": "normal",
            "timeSlotId": 0,
            "estimatedDeliveryStartDate": 1762858136000,
            "estimatedDeliveryEndDate": 1763030936000,
            "totalPrice": 498.90,
            "packageTotalPrice": 498.90,
            "deliveryAddressType": "Shipment",
            "agreedDeliveryDate": 1762376340000,
            "fastDelivery": false,
            "originShipmentDate": 1762242537619,
            "lastModifiedDate": 1762865408581,
            "commercial": false,
            "fastDeliveryType": "",
            "deliveredByService": false,
            "warehouseId": 372389,
            "invoiceLink": "https://efatura01.evidea.com/11111111111",
            "micro": true,
            "giftBoxRequested": false,
            "3pByTrendyol": false,
            "etgbNo": "25341453EX025864", // micro true olduğunda etgbNo alanı için bilgi dönecektir.
            "etgbDate": 1762646400000, // micro true olduğunda etgbDate alanı için bilgi dönecektir.
            "containsDangerousProduct": false, // micro ihracat siparişlerinde satıcıya gelen siparişte paket içerisinde herhangi bir tehlikeli ürün varsa pil, parfüm vb. gibi, true dönecektir.
            "cargoDeci": 10,
            "isCod": false,
            "createdBy": "order-creation", // Paketin nasıl oluşturulduğunu gösterir, "order-creation", "split", "cancel" veya "transfer" olabilir
            "originPackageIds": null, // Bu alan iptal veya bölme işlemlerinden sonra doldurulur ve bu işlemlerden sonra ilk paketin packageid'sini verir.
            "hsCode": "711111000000" // Bu alan mikro siparişler için string olarak dönecektir.

        }