Ana içeriğe atla
Webhook, entegrasyonun yönünü tersine çevirir. Birkaç dakikada bir OTO’ya ne olduğunu sormak yerine bir URL barındırırsınız ve OTO size haber verir.

Üç olay türü

Başka hiçbir şeye abone olmasanız bile shipmentError’a abone olunBaşarısız bir rezervasyon doğası gereği sessizdir: Sipariş ilerlemez ve hiçbir şey değişmediği için durum değişikliği olayı da tetiklenmez.Yük (payload), nedeni belirtir: bir errorCode ve deliveryCompanyResponse alanında kargo şirketinin kendi ifadesi; genellikle eksik bir şehir ya da posta kodu gibi bir şey. Biri fark ederse bunlar saniyeler içinde düzeltilir; kimse fark etmezse günlerce görünmez kalır.

Webhook kaydetme

POST /rest/v2/webhook Starter+ GET aboneliklerinizi listeler, PUT bir aboneliği id ile günceller, DELETE ise kaldırır. Hepsi aynı yol üzerindedir.

Neler gelir?

Bir orderStatus yükü; siparişi ve yeni durumunu, varsa kargo şirketini ve sürücüyü, takip numarasını ve takip bağlantısını, kargo etiketi (AWB) bağlantısını ve UTC cinsinden bir timestamp değerini içerir. Bir shipmentError yükü; orderId, bir errorCode, OTO’nun errorMessage değerini ve kargo şirketinin ham deliveryCompanyResponse yanıtını içerir. Bir newOrders yükü siparişin tamamını içerir: adres, ürünler, ağırlık, tutarlar, ödeme yöntemi, satış kanalı ve depo.

OTO’dan geldiğini doğrulama

Her yük bir signature içerir: Kaydettiğiniz secretKey ile, iki nokta üst üste ile birleştirilmiş bir dize üzerinden hesaplanan ve base64 ile kodlanan bir HMAC-SHA256 değeri.
İmzayı doğrulayın ve eski zaman damgalarını reddedinWebhook URL’nize, onu öğrenen herkes erişebilir. Doğrulama yapmazsanız, bu kişilerden herhangi biri sisteminize bir siparişin teslim edildiğini söyleyebilir.İmzalanan dize üzerinden HMAC’i yeniden hesaplayın ve sabit süreli (constant-time) bir karşılaştırmayla kontrol edin. Ardından zaman damgasının yeni olduğunu doğrulayın: Eski bir yükteki geçerli imza bir tekrar saldırısıdır (replay) ve dünkü siparişi yeniden teslim edildi olarak işaretlemek, yol açabileceği en hafif sonuçtur.

Sağlam bir uç nokta oluşturma

  • Hemen yanıt verin. Yükü alır almaz 200 döndürün, işlemleri sonra yapın. Yavaş bir uç nokta, bozuk bir uç nokta gibi görünür.
  • Tekrarları bekleyin. Gönderimler tekrarlanabilir. orderId, durum ve zaman damgasını anahtar olarak kullanın ve yeniden işlemeyi zararsız hâle getirin.
  • Sırasız gelmelerini bekleyin. Ağ zamanlaması durum makinenize uymaz. Eski bir olay geç geldi diye bir siparişi asla geriye taşımayın.
  • Ham gövdeyi ayrıştırmadan önce kaydedin. Bir entegrasyon gece saat 2’de sorun çıkardığında, ihtiyacınız olan yük tam da saklamadığınız yüktür.

İlgili sayfalar