𝗦𝘁𝗼𝗽 𝗥𝗲𝗳𝘂𝗻𝗱𝗶𝗻𝗴 𝗣𝗮𝘆𝗺𝗲𝗻𝘁𝘀 𝗬𝗼𝘂 𝗦𝗵𝗼𝘂𝗹𝗱 𝗡𝗲𝘃𝗲𝗿 𝗛𝗮𝘃𝗲 𝗖𝗵𝗮𝗿𝗴𝗲𝗱

Birçok geliştirici, karttan anında tahsilat yapan bir ödeme akışı yayınlar. Ardından, stok kontrolleri veya dolandırıcılık kontrolleri gibi sipariş doğrulama işlemleri gerçekleştirirler.

Doğrulama başarısız olursa, kod bir iade işlemi başlatır.

Bu durum müşterileriniz için sorunlar yaratır. Bir tahsilat görürler ve günler sonra bir iade görürler. Şirketinizin güvenilmez olduğunu düşünürler. Paralarının takılı kaldığını sanırlar.

İadelerin gerçek maliyetleri vardır:

Çözüm, authorize ve capture modelini kullanmaktır.

Çoğu eğitim, parayı anında tahsil etmeyi (capture) öğretir. Bunun yerine, önce fonlar üzerinde bir bloke (hold) oluşturmalısınız. Bir bloke, parayı hareket ettirmeden kart üzerinde bekler. Eğer doğrulamanız başarısız olursa, sadece blokeyi iptal edersiniz. Müşterinin ekstresine hiçbir tahsilat yansımaz.

Stripe'da bunu capture_method değerini manual yaparak gerçekleştirirsiniz.

Yeni akış şu şekilde çalışır:

  1. Manuel capture ile bir PaymentIntent oluşturun.
  2. Fonlar yetkilendirilir (authorized) ancak hareket ettirilmez.
  3. Sipariş doğrulamanızı çalıştırın.
  4. Sipariş geçerliyse, ödemeyi tahsil edin (capture).
  5. Sipariş başarısız olursa, intent'i iptal edin.

Bu yaklaşım birkaç avantaj sunar:

Çoğu büyük ödeme sağlayıcısı aynı mantığı kullanır.

Müşteri ödeme butonuna bastıktan sonra iş mantığınızın herhangi bir parçası başarısız olabiliyorsa bu yöntemi kullanın. Riskli kontrollerinizi yetkilendirme (authorization) ve tahsilat (capture) arasına taşıyın. Bu, para hareketlerinizi temiz tutar ve müşterilerinizi mutlu eder.

Kaynak: https://dev.to/jguillaumesio/stop-refunding-payments-you-should-never-have-charged-4d7m