- Node.js
- Güvenilirlik
- Hata yönetimi
Ödeme zaman aşımları: bir tahsilatı asla körlemesine yeniden denemeyin
Zaman aşımına uğrayan bir ödeme isteğinin sonucu bilinmez. Yeniden denemenin müşteriden neden iki kez tahsilat yapabileceğini ve Better Payment'in bunu nasıl bildirdiğini öğrenin.
Yazar:Furkan Özay
1 dk okuma
Bir ödeme isteği gönderirsiniz. Sağlayıcı kartı çeker, ardından cevap size ulaşmadan bağlantınız kopar. Kodunuz bir zaman aşımı görür.
Ödemeye ne oldu? Bilmiyorsunuz. Tahsilat gerçekleşmiş olabilir, olmamış da olabilir. Zaman aşımını başarısızlık sayıp müşterinin tekrar denemesine izin vermek, insanların iki kez tahsil edilmesinin yoludur.
Zaman aşımı bir ret değildir
Ret bir cevaptır: sağlayıcı size hayır dedi. Zaman aşımı ise cevabın yokluğudur. İkisi farklı ele alınmalıdır:
- Ret durumunda başka bir kartla yeniden denemek güvenlidir.
- Zaman aşımı durumunda önce kontrol etmek gerekir.
Birçok entegrasyon ikisini de "hata" olarak eşler ve müşteriye aynı mesajı gösterir. Hata tam olarak budur.
Better Payment ne döndürür?
Sağlayıcı cevap vermediğinde sonuç bir başarısızlık değildir. Sağlayıcıdan bağımsız NETWORK_ERROR koduyla pending döner:
import { PaymentErrorCode } from 'better-payment';
const result = await payment.createPayment(request);
if (result.status === 'pending' && result.code === PaymentErrorCode.NETWORK_ERROR) {
// Tahsilat gerçekleşmiş olabilir. Müşterinin tekrar ödeme yapmasına izin vermeyin.
await orders.markNeedsCheck(request.conversationId);
}Bu kod için önerilen müşteri mesajı "Ödemeniz kontrol ediliyor. Lütfen tekrar ödeme yapmayın." şeklindedir. i18n eklentisi bu mesajı müşterinin dilinde errorMessage alanına yazar.
Asla otomatik yeniden denenmez
Ödeme, iade ve iptal istekleri asla otomatik olarak yeniden denenmez. Zaman aşımından sonra tahsilatı sessizce yeniden deneyen bir kütüphane, çifte çekim yapan bir kütüphanedir. Better Payment kararı, kontrol ettikten sonra size bırakır.
Müşterinin tekrar denemesine izin vermeden önce ödemeyi getPayment() ile kontrol edin. Sağlayıcıda ödeme varsa siparişi ona göre işaretleyin. Yoksa yeni bir deneme güvenlidir. Hızlı başlangıç sayfası sonuç durumlarını ve aynı uyarıyı listeler.
Kısa bir kontrol listesi
- Genel bir "hata" yerine
statusvecodeüzerinden dallanın. NETWORK_ERRORilependingsonucunu "bilinmiyor" olarak ele alın, asla "başarısız" olarak değil.- Her yeniden denemeden önce ödemeyi kontrol edin.
- Sipariş başına tek bir
conversationIdkullanın; böylece yeniden deneme ikinci bir siparişe dönüşmez. - Müşteriye tekrar ödeme yapmaması gerektiğini söyleyen bir mesaj gösterin.
Tüm liste ve önerilen mesajlar için hata kodlarına bakın.
Okumaya devam edin
- Next.js
- iyzico
- 3D Secure
Next.js ile iyzico 3D Secure entegrasyonu: adım adım rehber
Next.js App Router'da iyzico ile 3D Secure ödeme almak: kurulum, sunucuda istek oluşturma, callback doğrulama ve siparişi güncelleme.
- Node.js
- iyzico
- Geçiş
iyzipay paketinden Better Payment'a geçiş
Resmi iyzipay Node.js paketini kullanıyorsanız Better Payment'a nasıl geçersiniz: kod karşılaştırması, callback doğrulama ve adım adım geçiş listesi.