Webhook endpoint’iniz internete açıktır — tarafınıza gelen isteklerin gerçekten Payven’den geldiğini kanıtlamak için HMAC-SHA256 imzasını doğrulamak şarttır. Aksi halde sahte istekler gönderilebilir.Documentation Index
Fetch the complete documentation index at: https://docs.payven.com.tr/llms.txt
Use this file to discover all available pages before exploring further.
İmza üretimi
Payven, her webhook isteğinde imzayı şu şekilde hesaplar:| Bileşen | Açıklama |
|---|---|
secret | Webhook abonelik oluştururken aldığınız whsec_... değeri |
timestamp | İsteğin gönderildiği Unix epoch saniyesi |
httpBody | İstek gövdesinin tam binary içeriği (parse edilmemiş ham string) |
Doğrulama adımları
Replay saldırılarına karşı timestamp'i kontrol edin
now - timestamp > 5 dk ise reddedin (eski isteğin tekrarı olabilir).Sabit zamanlı karşılaştırma
Hesapladığınız imzayla
X-Payven-Signature değerini timing-safe karşılaştırın.Kod örnekleri
Yaygın hatalar
İmza doğrulanamıyor: framework body'yi değiştirmiş olabilir
İmza doğrulanamıyor: framework body'yi değiştirmiş olabilir
Body’yi mutlaka raw bytes olarak okuyun. Express’te
express.json() middleware’i body’yi parse edip yeniden serialize ettiği için imza bozulur. express.raw() kullanın.ASP.NET’te otomatik model binding aynı sorunu yaratır — [FromBody] yerine Request.Body stream’i okuyun.Timestamp tolerance neden 5 dakika?
Timestamp tolerance neden 5 dakika?
Sunucu saatleri arasında küçük sapmalar (NTP gecikmesi) ve ağ gecikmesi olabilir. 5 dakika makul bir tolerans. Daha sıkı (örn. 1 dk) yapabilirsiniz; daha gevşek (örn. 1 saat) yapmayın — replay riski artar.
Signature header karşılaştırma neden timing-safe olmalı?
Signature header karşılaştırma neden timing-safe olmalı?
Normal
== karşılaştırması karakter karakter yapılır ve eşleşmeyen ilk karakterde durur. Saldırgan, doğru karakteri bulduğunda yanıt süresinin biraz uzadığını ölçerek imzayı brute-force keşfedebilir. Timing-safe karşılaştırma her zaman aynı sürede çalışır.Birden fazla webhook abonem var, hangi secret hangisi?
Birden fazla webhook abonem var, hangi secret hangisi?
Her aboneliğin kendi secret’ı vardır. Hangi abonelikten geldiğini ayırt etmek için
X-Payven-Webhook-Id başlığına bakın ve eşleşen secret’ı kullanın.