Skip to main content

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.

Aşağıdaki olaylar Sanal POS modülü tarafından yayınlanır. Aboneliğinizde events: ["*"] ile hepsini, ya da seçici olarak alabilirsiniz.

Genel olay yapısı

{
  "id": "evt_8e3f5c12",
  "type": "payment.succeeded",
  "createdAt": "2026-05-03T12:34:56Z",
  "tenantId": "1a2b3c4d-...",
  "merchantId": "3fa85f64-...",
  "data": { ... }
}
AlanAçıklama
idOlay kimliği — idempotent işleme için kullanın
typeOlay tipi (aşağıdaki tablo)
createdAtOlayın oluştuğu UTC zaman
dataOlay-spesifik payload (genelde tam payment objesi)

Ödeme olayları

TipTetiklenme
payment.createdYeni bir ödeme oluşturuldu (henüz banka onayı yok)
payment.authorizedBanka tutarı onayladı (Pre-Auth dahil)
payment.capturedCapture başarılı
payment.succeededÖdeme başarıyla tamamlandı (Sale veya Capture sonrası)
payment.failedÖdeme banka tarafından reddedildi
payment.voidedİptal başarılı
payment.expiredHosted Checkout / Pay-by-Link süresi doldu
{
  "type": "payment.succeeded",
  "data": {
    "id": "8e3f5c12-...",
    "externalId": "ORDER-1001",
    "status": "Success",
    "amount": 15000,
    "currency": "TRY",
    "card": { "binNumber": "454671", "lastFourDigits": "7894", ... },
    "connector": { "responseCode": "00", "authCode": "123456" }
  }
}

3D Secure olayları

TipTetiklenme
payment.threeds.initialized3DS init yapıldı, müşteri yönlendirilecek
payment.threeds.authenticated3DS başarılı, banka onayı bekleniyor
payment.threeds.failed3DS başarısız

İade olayları

TipTetiklenme
refund.createdİade isteği oluşturuldu
refund.succeededİade banka tarafında onaylandı
refund.failedİade reddedildi
{
  "type": "refund.succeeded",
  "data": {
    "id": "ref_9f3d2b8e",
    "paymentId": "8e3f5c12-...",
    "amount": 5000,
    "currency": "TRY",
    "status": "Success"
  }
}

Hosted Checkout olayları

TipTetiklenme
checkout.session.completedMüşteri ödemeyi başarıyla tamamladı
checkout.session.failedMüşteri ödeme yapamadı
checkout.session.expiredOturum süresi doldu
TipTetiklenme
payment.link.createdLink oluşturuldu
payment.link.viewedMüşteri link’e tıkladı
payment.link.expiredLink süresi doldu

Mutabakat olayları

TipTetiklenme
reconciliation.createdYeni mutabakat oturumu açıldı
reconciliation.completedMutabakat tamamlandı
reconciliation.discrepancyMutabakatta tutarsızlık tespit edildi

Sistem olayları

TipTetiklenme
webhook.testPOST /webhooks/{id}/test çağrısı
plan.usage.warningKotanın %80’i geçildi
plan.usage.criticalKotanın %95’i geçildi
plan.usage.exceededKota aşıldı, istekler reddedilmeye başlandı

Idempotent işleme

Aynı olay birden fazla kez gelebilir (Payven retry mekanizması veya ağ sorunları nedeniyle). evt.id değerini saklayıp duplikatları yok sayın:
async function handleEvent(evt) {
  const seen = await db.events.findOne({ id: evt.id });
  if (seen) return; // duplikat
  await db.events.insert({ id: evt.id, processedAt: new Date() });
  await processEvent(evt);
}

Olay sürümlemesi

Yeni alanlar olay payload’una eklenebilir, mevcut alanlar silinmez. İstemcinizi tolerant yazın — bilmediği alanları yok saysın.