Bu sayfa genel webhook prensiplerini açıklar. Sanal POS özelinde olay listesi ve örnek payload’lar için: Sanal POS Webhook Olayları.
Neden webhook?
| Polling | Webhook |
|---|---|
Sürekli GET istekleriyle durum sorgulanır | Olay gerçekleşince Payven sizin endpoint’inize bildirir |
| Gecikme: sorgulama aralığı kadar | Gecikme: saniyenin altı |
| Rate limit kotanızı tüketir | Limitten muaf |
| Sunucu kaynağını boşa kullanır | Sadece olay olduğunda çalışır |
Akış
Endpoint kuralları
Webhook endpoint’iniz aşağıdaki kurallara uymalıdır:HTTPS zorunlu — HTTP URL’leri reddedilir.
Public erişilebilir — özel ağ veya VPN arkasında olamaz.
15 saniye içinde HTTP 2xx döner — Payven delivery timeout’u 15 saniyedir; performans için handler’ınızı 5 saniyenin altında tamamlamayı hedefleyin, uzun süren işler için iş kuyruğa atılmalıdır.
Idempotent çalışır — aynı olay birden fazla kez gelebilir.
İmzayı doğrular — sahte istekleri reddeder.
Genel istek formatı
| Header | Açıklama |
|---|---|
X-Payven-Event | Olay tipi (örn. payment.completed). |
X-Payven-Event-Id | Olay kimliği — aynı olay birden fazla teslim edilse bile aynı kalır. Idempotent handler’ınızda bu değeri kullanın. |
X-Payven-Delivery-Id | Teslim kimliği — her teslim denemesinde farklıdır. Debug ve teslim kaydı eşleştirmesi için kullanılır. |
X-Payven-Signature | Request body’nin HMAC-SHA256 imzası — sha256=<hex> formatında. |
X-Payven-Timestamp | İmzalanan Unix zaman damgası (saniye). Replay saldırılarına karşı 5 dakika tolerans dışındaki istekleri reddedin. |
İmza doğrulama (kısa)
Request body ile timestamp’isubscription.secret ile HMAC-SHA256 hashlenir. Detay ve kod örnekleri: İmza Doğrulama.
Yeniden deneme
İlk denemede2xx dönmezse Payven otomatik olarak yeniden dener:
| Deneme | Bekleme süresi |
|---|---|
| 1 | Hemen |
| 2 | 1 dakika |
| 3 | 5 dakika |
| 4 | 30 dakika |
| 5 | 2 saat |
| 6 | 24 saat |
Abone olmak
Webhook abonelikleri her ürün için ayrı tanımlanır. Sanal POS örneği:secret değerini saklayın — imza doğrulamasında kullanacaksınız.
Test ve debug
Konsol → Webhook Teslim Kayıtları ekranından her teslim denemesinin:- HTTP yanıt kodunu,
- Response body’sini,
- Süresini,
- Yeniden deneme sayısını,
- Tam request/response payload’unu