WooCommerce API · Webhook

WooCommerce webhook imza doğrulama: X-WC-Webhook-Signature ve başlıklar

WooCommerce her webhook teslimatına X-WC-Webhook-Signature başlığı ekler. Bu değer, istek gövdesinin gizli anahtarla hesaplanan HMAC-SHA256 özetinin base64 karşılığıdır. Alıcı aynı hesabı ham gövde üzerinde yapıp başlıkla karşılaştırır ve eşleşmeyen isteği reddeder. Diğer başlıklar konu, kaynak, olay ve teslimat numarasını taşır.

Teslimat başlıkları

BaşlıkÖrnekNe işe yarar
X-WC-Webhook-SourceSitenin adresiİsteğin hangi siteden geldiği
X-WC-Webhook-Topicorder.updatedKonu
X-WC-Webhook-ResourceorderKaynak
X-WC-Webhook-EventupdatedOlay
X-WC-Webhook-Signaturebase64 metinGövdenin HMAC-SHA256 imzası
X-WC-Webhook-IDSayıWebhook kaydının numarası
X-WC-Webhook-Delivery-IDSayıTeslim kaydının numarası

Konuya göre işlem seçmek için gövdeyi açmadan X-WC-Webhook-Topic başlığına bakabilirsiniz. Ama işlemden önce imzayı mutlaka doğrulayın.

İmzayı doğrulama adımları

  • İsteğin gövdesini JSON’a çevirmeden önce ham bayt olarak alın.
  • Ham gövdenin HMAC-SHA256 özetini webhook’ta tanımlı gizli anahtarla hesaplayın.
  • Sonucu base64 ile kodlayın.
  • Bulduğunuz değeri X-WC-Webhook-Signature başlığıyla sabit zamanlı bir karşılaştırma işleviyle karşılaştırın.
  • Eşleşmiyorsa isteği işlemeyin ve 401 döndürün.

En sık hata, gövdeyi önce JSON olarak çözüp sonra yeniden metne çevirerek imzalamaktır. Boşluklar ve alan sırası değişeceği için imza tutmaz. Gövdeyi değiştiren vekil sunucular ya da güvenlik katmanları da aynı sonuca yol açar.

Reddetmenin bir yan etkisi var: 2xx dışındaki her yanıt hata sayılır ve art arda hatalar webhook’u devre dışı bırakır. Anahtar uyuşmazlığını fark ettiğinizde hemen düzeltin.

Gövdede ne gelir?

Konu türüGövde
Ürün, sipariş, müşteri, kuponKaynağın REST API’de döndüğü nesnenin aynısı
action.EYLEM_ADIEylemin ilk argümanı, ör. sepete eklemede cart_item_key

Sipariş webhook’unda gövde, GET /orders/ID yanıtındaki nesnedir: durum, kalemler, adresler ve iadeler dahil. Bu yüzden çoğu durumda ek bir API çağrısına gerek kalmaz. Yine de gövde teslim anındaki durumu yansıtır; sonraki değişiklikler için yeni bildirim gelir.

Güvenilir işleme önerileri

  • Bildirimi hızla kaydedip 2xx döndürün, asıl işi kuyrukta yapın. Uzun süren işlem zaman aşımına ve hata sayımına yol açar.
  • Aynı kaydın kısa sürede birden çok updated bildirimi gelebilir; işleminizi aynı bildirim iki kez gelse de aynı sonucu verecek şekilde kurun.
  • Teslim numarasını kayıtlarınıza yazın; WooCommerce günlüğüyle eşleştirmeyi kolaylaştırır.
  • Webhook devre dışı kalabilir ya da bildirim kaçabilir. Belirli aralıklarla API’den okuyarak eksikleri tamamlayın.

Sık hatalar

BelirtiNedenÇözüm
İmza her istekte tutmuyorGövde çözülüp yeniden yazıldıktan sonra imzalandıHam gövdeyi kullanın
İmza bazen tutmuyorAraya giren katman gövdeyi değiştiriyorVekil sunucu ve güvenlik ayarlarını kontrol edin
Tüm istekler 401Alıcıdaki anahtar webhook’taki anahtarla aynı değilAnahtarı iki tarafta yeniden eşitleyin
Başlık bulunamıyorBaşlık adının büyük küçük harfine bakılıyorBaşlık adlarını harf duyarsız okuyun

Sık sorulanlar

X-WC-Webhook-Signature nasıl hesaplanır?

İstek gövdesinin, webhook’taki gizli anahtarla hesaplanan HMAC-SHA256 özetinin base64 karşılığıdır. Alıcı aynı hesabı ham gövde üzerinde yapar.

İmza neden tutmuyor?

Genellikle gövde imzalanmadan önce JSON olarak çözülüp yeniden yazılmıştır ya da gizli anahtar farklıdır. Ham gövdeyi ve anahtarı kontrol edin.

Webhook gövdesinde sipariş ayrıntıları var mı?

Evet. Belgeye göre ürün ve sipariş gibi kaynaklarda gövde, REST API’nin o kaynak için döndüğü nesnenin aynısıdır.

İmzası geçersiz isteğe ne döndürmeliyim?

401 gibi bir hata kodu döndürüp isteği işlemeyin. Ama art arda hatalar webhook’u devre dışı bırakacağı için anahtar sorununu hızla çözün.

Kaynaklar

İlgili WooCommerce API konuları

Son güncelleme: 27.10.2026 · WooCommerce API rehberinin tamamı

WooCommerce entegrasyonunu kod yazmadan kurun

Saystok bu API'lerle stok, sipariş ve fiyatı sizin yerinize eşitler. 30 gün ücretsiz.