Webhook, "bir şey olunca bana haber ver" düzenidir. Normalde yazılım pazaryerine düzenli aralıklarla "yeni sipariş var mı?" diye sorar. Webhook'ta ise pazaryeri, sipariş oluştuğu anda bilgiyi sizin adresinize kendisi gönderir. Böylece bekleme süresi kısalır ve gereksiz istek azalır.
Polling ile farkı
| Konu | Polling (düzenli sorgu) | Webhook |
|---|---|---|
| Kim başlatır | Sizin yazılımınız | Platform |
| Gecikme | Sorgu aralığı kadar | Genellikle saniyeler |
| İstek yükü | Değişiklik olmasa da sorgu yapılır | Yalnız olay olunca istek gelir |
| Risk | Aralık uzunsa geç fark edilir | Bildirim kaçarsa haberiniz olmaz |
Pazaryerlerinde webhook
Trendyol'da webhook API ile tanımlanır. Satıcı abone olacağı sipariş statülerini seçer: CREATED, PICKING, INVOICED, SHIPPED, CANCELLED, DELIVERED, RETURNED ve diğerleri. Liste boş bırakılırsa tüm statüler atanır. Bildirim, statüden bağımsız olarak tüm sipariş verisini JSON gövdeyle ve POST isteğiyle taşır; model sipariş paketlerini çekme servisiyle aynıdır.
Trendyol'un webhook model sayfasına göre başarısız istek, başarılı olana kadar 5 dakikada bir yeniden gönderilir. Hata sürerse webhook otomatik olarak pasife alınır ve satıcıya e-posta gider. Sorun giderildikten sonra webhook yeniden aktif edilebilir.
WooCommerce'te ise mağaza sahibi panelden bir olay (ör. sipariş güncellendi) ve teslim adresi seçerek webhook oluşturur. Her platformun olay adları ve gövde yapısı farklıdır.
Güvenlik: bildirimin gerçekten platformdan geldiğini doğrulamak
Webhook adresi internete açıktır. Bu yüzden gelen isteğin sahte olmadığı kontrol edilmelidir. Yaygın yöntemler:
- İmza doğrulama: WooCommerce her bildirime X-WC-Webhook-Signature başlığı ekler. Bu değer, gövdenin gizli anahtarla HMAC-SHA256 ile imzalanıp base64 ile kodlanmış hâlidir. Alıcı aynı hesabı yapar ve sonuçları karşılaştırır.
- Kimlik bilgisi: Trendyol webhook tanımında BASIC_AUTHENTICATION ya da API_KEY seçilebilir. API_KEY seçilirse anahtar x-api-key başlığıyla gelir.
- Gizli adres parçası: Adrese tahmin edilemeyen bir belirteç eklenir.
- Sınırlama: IP başına istek sınırı ve gövde boyutu sınırı konur.
Webhook tek başına yetmez
Bildirimler ağ hatası, sunucu bakımı ya da platform tarafındaki bir sorun yüzünden kaçabilir. Bu yüzden iyi entegrasyonlar webhook'un yanında düzenli bir yedek sorgu da çalıştırır. Aynı siparişin iki kez gelme ihtimaline karşı işlem idempotent tasarlanır: sipariş numarası daha önce işlendiyse stok ikinci kez düşülmez.
Saystok'ta webhook yalnız WooCommerce, Trendyol, Hepsiburada ve N11 için kullanılır. WooCommerce bildirimlerinde imza mağazanın kendi gizli anahtarıyla doğrulanır. Tüm platformlarda siparişler ayrıca 5 dakikada bir okunur; kaçan bildirim bu turda yakalanır.


