Webhook Entegrasyonu
Webhook, Hemen Mağaza içinde gerçekleşen olayları dış sistemlere HTTP isteğiyle bildiren mekanizmadır. Hemen Builders webhook yönetimi HemenHeadless teslimat çekirdeğini yeniden kullanır; Builders tarafı app, tenant, scope ve audit bağlamını sağlar.Ne zaman webhook kullanılır?
- Sipariş oluştuğunda ERP sistemine aktarmak.
- Ödeme alındığında muhasebe entegrasyonunu tetiklemek.
- Ürün veya stok değiştiğinde dış sistemi güncellemek.
- Storefront veya admin app içinde gerçek zamanlı takip yapmak.
Desteklenen başlangıç eventleri
Endpoint ekleme
Tenant admin panelinde private app detayından veya Builders API üzerinden webhook endpoint’i ekleyebilirsiniz. Gerekenler:- App aktif olmalı.
- App scope setinde
webhooks:writebulunmalı. - Endpoint URL’i HTTPS olmalı.
- Endpoint idempotent çalışmalı.
secret sadece oluşturma anında gösterilir.
Test delivery üretme
Webhook endpoint’inizi dış sisteme gerçek istek atmadan test etmek için imzalı test delivery oluşturabilirsiniz:HM-* header setini ve body örneğini döndürür. Production event gönderimleri HemenHeadless dispatcher ve queue üzerinden yapılır.
İmza header’ları
Webhook payload’ı standartHM-* header’ları ile gönderilir.
HM-Timestampdeğerinin kabul edilen zaman aralığında olduğunu kontrol edin.- Request body ve timestamp ile beklenen HMAC SHA256 imzasını üretin.
- Beklenen imza ile
HM-Signaturedeğerini constant-time compare ile karşılaştırın. HM-Event-Iddeğerini idempotency anahtarı olarak saklayın.
Payload örneği
Node.js doğrulama örneği
Retry ve delivery log
Webhook gönderimi başarısız olursa delivery kaydı retry kuyruğuna alınır. Delivery detaylarında şu bilgiler tutulur:- Request URL ve event tipi.
- Attempt count.
- Son response status/body özeti.
- Hata mesajı.
- Bir sonraki retry zamanı.
- Dead-letter durumu.
İyi endpoint davranışı
2xxresponse sadece işlem kabul edildiyse dönülmelidir.- Aynı
HM-Event-Idtekrar gelirse işlem ikinci kez uygulanmamalıdır. - Endpoint 5 saniye içinde yanıt vermelidir.
- Ağır işlemler kendi kuyruğunuza alınmalıdır.
- Signature hatasında
401veya403dönülmelidir.