events[] dizisinde dinlemek istediklerinizi belirtirsiniz.
Genel yapı
Tüm olaylar şu yapıda gönderilir:| Alan | Açıklama |
|---|---|
id | Olay kimliği — idempotency için kullanın. Aynı olay birden fazla kez gönderilebilir ama id aynıdır. |
type | Olay tipi (payment.completed, refund.completed, vb.) |
created_at | Olayın Payven tarafında oluşturulma zamanı (UTC, ISO 8601) |
data | Olaya özel payload — bkz. her olay altında |
data ortak alanları
Tüm data payload’ları aşağıdaki alanları içerir (boş olabilirler):
| Alan | Açıklama |
|---|---|
transaction_id | İlgili işlemin Payven kimliği (UUID) |
status | İşlem mevcut durumu — bkz. Payment Status |
amount | Tutar (kuruş) |
currency | Para birimi |
merchant_id | İşlemin merchant kimliği |
provider_transaction_id | Bankadaki referans |
auth_code | Onay kodu |
error_code | Hata kodu (sadece başarısız olaylarda dolu) |
error_message | Hata mesajı |
masked_card_number | Maskelenmiş kart (örn. 454671******7894) |
card_brand | Kart birliği (visa, mastercard, troy, amex) |
Olay tipleri
payment.completed
Tetikleyici: Sale akışı (Non-3D veya 3DS sonrası) başarıyla tamamlandığında.
payment.failed
Tetikleyici: Banka tarafı reddi veya teknik hata.
payment.authorized
Tetikleyici: Pre-Auth (ön provizyon) başarıyla alındığında. Tutar bloke edildi, henüz çekilmedi.
capture.completed
Tetikleyici: Pre-Auth → Capture başarıyla tamamlandığında.
void.completed
Tetikleyici: İşlem void edildiğinde (mutabakat öncesi tam iptal). Pre-Auth iptalinde de bu olay yayınlanır.
refund.completed
Tetikleyici: İade başarıyla yapıldığında (tam veya kısmi).
status alanı işlemin mevcut durumunu yansıtır: kısmi iade için ana Transaction completed kalır (iade alt-Transaction olarak ayrı yazılır), tüm tutar iade edildiğinde ana Transaction refunded olur.
3ds.completed
Tetikleyici: 3D Secure doğrulaması başarılı + bankada otorizasyon başarılı.
3ds.failed
Tetikleyici: 3DS doğrulaması başarısız (yanlış SMS, timeout, kullanıcı iptali) veya 3DS sonrası banka reddi.
Recurring (subscription) olayları
subscription.charged
Tetikleyici: Tekrarlayan ödeme planının bir taksiti başarıyla çekildiğinde. Her başarılı taksit için ayrıca payment.completed da yayınlanır.
subscription.failed
Tetikleyici: Bir taksit başarısız olduğunda (kart bakiyesi, banka reddi). Plan otomatik askıya alınmaz.
subscription.cancelled
Tetikleyici: Kullanıcı veya operatör planı iptal ettiğinde (POST /recurring/{id}/cancel).
subscription.completed
Tetikleyici: Planın tüm taksitleri başarıyla tamamlandığında.
subscription.charge.reversed
Tetikleyici: Daha önceden başarıyla çekilmiş bir taksit, provider tarafında tersine çevrildiğinde (same-day void / reversal). İlişkili Transaction için ayrıca void.completed da fire eder.
subscription.charge.failed
Tetikleyici: Daha önceden başarıyla çekilmiş bir taksit provider sonradan Error olarak raporladığında (provider correction). İlişkili Transaction için ayrıca payment.failed fire eder.
Chargeback (ters ibraz) olayları
chargeback.opened
Tetikleyici: Bankadan bir chargeback (ters ibraz) bildirimi alındığında.
chargeback.resolved
Tetikleyici: Chargeback sonuçlandığında — kabul, ret veya delil sunma süreci tamamlandığında.
Settlement olayları
settlement.created
Tetikleyici: Bir gün/dönem için settlement kaydı oluşturulduğunda.
settlement.completed
Tetikleyici: Settlement işlemi (bankaya ödenmiş, mutabakat onaylanmış) tamamlandığında.
Olay → İşlem durumu eşleşmesi
Webhook subscription örneği
["*"] kullanmayın — açık liste tutmak ileride yeni olay tiplerini bilinçli almanızı sağlar (mevcut handler’ınızda olmayan olay tipleri unhandled error fırlatmasın).
Yol haritası
İleride eklenmesi planlanan olaylar:connector.health_changed— banka sağlık durumu değişti (circuit breaker open/close)reconciliation.discrepancy_detected,reconciliation.finalized— mutabakat olayları