Better Payment
Ödemeler

Ön provizyon

Tutarı şimdi kartta bloke edin, sonra capture ile tahsil edin ya da void ile serbest bırakın.

0.2.0 sürümünde eklendi

Normal bir ödeme kartı hemen çeker. Ön provizyon ise yalnızca tutarı bloke eder: müşteri bekleyen bir işlem görür ve limiti düşer, ama siz capture (provizyon kapama) yapana kadar hiçbir şey tahsil edilmez. Sipariş gerçekleşmezse ön provizyonu void ile iptal edin; bloke iade gerekmeden kalkar.

Tipik kullanımlar:

  • Oteller ve kiralama: rezervasyonda depozito bloke edin, çıkışta nihai tutarı (ekstralar ya da hasarla birlikte) tahsil edin.
  • Stok kontrollü siparişler: ödeme adımında bloke edin, ürün kargoya verildiğinde capture yapın. Stokta yoksa void yapın; müşteri hiçbir zaman iade beklemez.
  • Pazaryerleri: satıcı siparişi kabul ettiğinde capture yapın.
  • Değişken tutarlar (tartıyla satılan ürünler, saatlik hizmetler): tahmini tutarı bloke edin, gerçek tutarı capture edin.

Akış

// 1. Block the amount (non-3D) …
const auth = await payment.use('akbank').authorize(order);
// … or with 3D Secure: render threeDSHtmlContent, then completeThreeDSPayment() on the callback
const init = await payment.use('akbank').initThreeDSAuthorize({ ...order, callbackUrl });

if (auth.status === 'success') {
  // auth.paymentId identifies the authorization; store it with the order
}

// 2a. Charge it: the full amount, or less (partial capture)
await payment.use('akbank').capture({
  paymentId: auth.paymentId!,
  amount: '80.00',
  ip: customerIp,
});

// 2b. …or release it; nothing is charged
await payment.use('akbank').voidAuthorization({ paymentId: auth.paymentId!, ip: customerIp });

3D Secure varyantı tam bir 3D ödeme gibi tamamlanır: banka callbackUrl'inize POST eder, completeThreeDSPayment() (ya da handler'ın payment/complete-3ds route'u) doğrular. Bu durumda success sonucu tutarın tahsil edildiği değil, bloke edildiği anlamına gelir. Hangi siparişlerin initThreeDSAuthorize() ile başlatıldığını saklayın ki sonradan capture yapabilesiniz.

Sağlayıcılar

SağlayıcıÖn provizyon3D ön provizyonCaptureVoid
iyzico/payment/preauth/payment/3dsecure/initialize/preauth/payment/postauth/payment/cancel
ParamposTP_Islem_Odeme_OnProv_WMD (NS)TP_Islem_Odeme_OnProv_WMD (3D)TP_Islem_Odeme_OnProv_KapaTP_Islem_Iptal_OnProv
AkbanktxnCode 1004txnCode 3004 (3D_PAY)txnCode 1005txnCode 1003
PayTRhenüz yok (#60)———
  • paymentId, iyzico'da iyzico'nun ödeme numarası; Parampos ve Akbank'ta sizin sipariş numaranızdır.
  • capture() için amount zorunludur. Kısmi capture için bloke edilen tutardan azını verin.
  • Desteklemeyen sağlayıcılar NOT_SUPPORTED fırlatır; HTTP handler 400 döner.

Ön provizyonun genellikle banka ya da sağlayıcı tarafından üye işyeri hesabınızda açılması gerekir. Capture yapılmayan bir ön provizyonun ayrıca süresi dolar: bankaya göre genellikle 7–30 gün sonra. Bundan sonra bloke otomatik olarak kalkar ve capture başarısız olur.

HTTP handler

Routeİşlemauthorize gerekir mi
POST /:provider/authorizeauthorize—
POST /:provider/authorize/init-3dsauthorize/init-3ds—
POST /:provider/capturecapture🔒
POST /:provider/voidvoid🔒

Capture ve void para hareketi yarattığı için, iadeler gibi yalnızca bir authorize hook'uyla birlikte açılabilir. Dördü de Idempotency-Key başlığını kabul eder. Tarayıcı client'ında aynı metotlar var: client.akbank.authorize(...), client.akbank.capture(...) vb.

Doğrulama

iyzico akışı (ön provizyon, kısmi capture, void, 3D ön provizyon) her gece gerçek iyzico sandbox'ına karşı çalıştırılır. Parampos ve Akbank sağlayıcıların spesifikasyonlarını ve referans test vektörlerini izler; henüz kendi sandbox'larında çalıştırılmadı.

Bu sayfada