Sürüm notları
better-payment'in sürüm geçmişi ve geriye uyumsuz değişiklikleri.
Sürüm geçmişi sıfırlandı. 0.0.1, yeniden yazılan paketin ilk sürümüdür. 1.x–3.x sürümlerinde hatalı sağlayıcı entegrasyonları ve atlatılabilen callback kontrolleri vardı; bunları kullanmayın. Gerekçe ve adım adım geçiş rehberi için 0.0.1'deki yenilikler sayfasına bakın.
0.6.0
Eklenenler
- Elysia adapter'ı:
better-payment/elysiahandler'ı Elysia'ya (Bun) tek satırda bağlar:app.all('/api/pay/*', toElysiaHandler(payment), { parse: 'none' }). Katkısı için @ScottHallchico'ya teşekkürler.
0.5.2
Eklenenler
- Hata mesajları için dil desteği: Rusça (
ru). Handler'daAccept-Language: ru-RURusça'yı seçer. Katkısı için @ius-sharma'ya teşekkürler.
0.5.1
Eklenenler
- Hata mesajları için dil desteği: Almanca (
de). Handler'daAccept-Language: de-DEAlmanca'yı seçer. Katkısı için @ius-sharma'ya teşekkürler.
Değişenler
- Repo czaydev/better-payment adresine taşındı.
0.5.0
Plugin'ler ve tipli ödeme olayları. Geriye uyumsuz: new BetterPayment() yerine betterPayment() geldi; sağlayıcılar fabrika fonksiyonlarıyla oluşturuluyor. Bkz. 0.5'e geçiş.
Değişenler (geriye uyumsuz)
BetterPaymentsınıfının yerinibetterPayment({ providers, plugins })aldı; sağlayıcılariyzico(),paytr(),akbank()veparampos()ile oluşturuluyor.enabledalanı kaldırıldı.providersiçindeki her anahtar bir sağlayıcı kimliğidir;payment.<id>sağlayıcıya göre tiplidir.getEnabledProviders()string[]döner.
Eklenenler
- Plugin'ler: sağlayıcı işlemleri için before/after hook'ları, tipli metotlar, handler endpoint'leri ve hata kodları. Kendi plugin'inizi birkaç satırda yazın.
- Ödeme olayları: her sağlayıcı ve akış için tek bir tipli dinleyici; yalnızca doğrulanmış sonuçlar için yayınlanır.
- Hata mesajları için dil desteği:
better-payment/pluginsaltındaki ilk resmi plugin. Müşteriye yönelik İngilizce ve Türkçe mesajlar. defineProvider()ile özel sağlayıcılar ve imzalama için WebCrypto yardımcıları.
0.4.0
Sandbox olmadan test ve tek satırlık framework entegrasyonu. Mevcut 0.3.0 kodu çalışmaya devam eder.
Eklenenler
better-payment/testing: uygulama testleri için kimlik bilgisi ve ağ erişimi gerektirmeyen, bellek içi bir sağlayıcı olanMockProvider. Sihirli kart numaraları retleri, 3D Secure hatalarını, kaybolan yanıtları ve başarısız iadeleri kapsar; 3D Secure callback'leri gerçek handler'dan geçer.- Framework adapter'ları:
better-payment/next,better-payment/express,better-payment/fastifyvebetter-payment/honohandler'ı tek satırda bağlar;toFetchHandlerWorkers, Deno ve Bun'u kapsar. - Dokümantasyon artık Türkçe de okunabiliyor.
Değişenler
PROVIDER_DEFAULT_URLS,RemoteProviderTypeile tiplenir (mockdışındaki tüm sağlayıcılar).
0.3.0
Edge ortamları ve sıfır runtime bağımlılığı. Uygulama kodu değişmeden çalışmaya devam eder.
Eklenenler
- Edge ortamı desteği: aynı paket Node.js 20+, Vercel Edge, Cloudflare Workers, Deno ve Bun'da çalışır. Yalnızca
fetchve WebCrypto kullanır. - Özel bir fetch uygulaması (proxy, test stub'ları) için
fetchseçeneği. - Özel sağlayıcılar için
HttpClientveHttpErrordışa açıldı.
Değişenler
- Runtime bağımlılığı yok: axios kaldırıldı. Zaman aşımları, loglama ve yeniden deneme kuralları değişmedi.
PaymentProvider'dan türeyen özel sağlayıcılarsetupAxiosLogging()/setupAxiosRetry()yerinecreateHttpClient()kullanır.
0.2.0
Ön provizyon ve kayıtlı kartlar. Mevcut 0.1.0 kodu çalışmaya devam eder. İki özellik de her gece gerçek iyzico sandbox'ına karşı test edilir.
Eklenenler
- Ön provizyon:
authorize()/initThreeDSAuthorize()tutarı bloke eder,capture()tahsil eder (kısmi capture desteklenir) vevoidAuthorization()serbest bırakır. iyzico, Parampos ve Akbank; PayTR henüz desteklenmiyor. - Kayıtlı kartlar: ödeme sırasında
saveCardile kartı kaydedin, sonrastoredCard: { customerToken, cardToken }ile ödeme alın ve kartlarısaveCard(),listCards()vedeleteCard()ile yönetin. iyzico ve PayTR; Parampos ve Akbank henüz desteklenmiyor. - İkisi için handler route'ları ve tarayıcı client metotları. Capture, void ve kart route'ları bir
authorizehook'u gerektirir.
Değişenler
PaymentRequest.paymentCardtiplerde opsiyonel; çalışma anındapaymentCardya dastoredCard'dan biri zorunludur.- Bir sağlayıcı bir işlemi desteklemediğinde handler
500yerine400döner.
0.1.0
Sıfırlamadan sonraki ilk özellik sürümü. Mevcut 0.0.1 kodu çalışmaya devam eder; davranış değişiklikleri "Değişenler" altında listelenir. iyzico entegrasyonu artık her gece gerçek iyzico sandbox'ına karşı test ediliyor.
Eklenenler
- Birleşik hata kodları: her başarısız sonuç bir
codetaşır (INSUFFICIENT_FUNDS,CARD_DECLINED,THREEDS_FAILED,INVALID_HASH, ...).errorCodesağlayıcının ham kodunu korur. - Sağlayıcı çağrılmadan önce istek doğrulama. Geçersiz istekler tüm geçersiz alanları listeleyerek
code: 'INVALID_REQUEST'döner.validate: falseile kapatılabilir. - Parampos taksitleri:
installmentInfo(),calculatePaidPrice()vegetInstallmentRates()Param oranlarınızı kullanır. - Tekrar eden callback'ler bir kez işlenir; veri değiştiren handler route'ları
Idempotency-Keybaşlığını kabul eder.IdempotencyStorevarsayılan olarak bellek içidir; birden çok örnekle Redis ya da bir veritabanı kullanın. PaymentErrorCodevePaymentStatus,better-payment/client'tan dışa açılır.
Değişenler
- İstek doğrulama hataları
errorCode: 'VALIDATION_ERROR'döner; öncedenerrorCodeboştu. anyiçermeyen daha sıkı public tipler:rawResponseve handler gövdeleriunknown;onCallback/callbackRedirectbirPaymentResponsealır.NETWORK_ERRORmesajları taşıma hatasının adını verir (ECONNRESET, zaman aşımı, ...).- Yayınlanan build küçültüldü: 29.6 kB yerine yaklaşık 19 kB gzip.
0.0.1
Güvenlik
- Parampos: 3D callback hash'i yalnızca yapılandırmanızdaki GUID ile doğrulanır. Önceki sürümler GUID'i callback içeriğinden okuyordu; bu da herkesin başarılı bir ödeme uydurmasına izin veriyordu.
- Parampos / Akbank: bir 3D callback tek başına artık başarılı ödeme sayılmıyor. Parampos
TP_WMD_Payile tamamlar; Akbank HMAC imzalı sonuçla 3D_PAY modelini kullanır. Eksik bir sonuç kodu artık başarı sayılmıyor. - HTTP handler: varsayılan olarak güvenli. Varsayılan olarak yalnızca callback'leri ve kart sorgularını açar. İade, iptal, ödeme sorgusu ve abonelik yönetimi bir
authorizehook'u gerektirir. - Yeniden denemeler yalnızca idempotent istekleri tekrar gönderir; böylece bir zaman aşımı artık çift çekime ya da çift iadeye yol açamaz.
- İmzalar sabit sürede karşılaştırılır.
Sağlayıcı düzeltmeleri
- PayTR: istekler
merchant_keyile, imzalanan veriyemerchant_salteklenerek imzalanır.user_basket, TL fiyatlı base64 JSON'dur.merchant_oidalfanümerik olmalıdır.test_modesandbox moduna göre ayarlanır. İade tutarları TL cinsindendir. Durum sorguları/odeme/durum-sorgukullanır. Bildirimler düzOKile yanıtlanır. Gizli anahtarlar artık istek gövdelerinde gönderilmiyor. - Parampos:
TP_WMD_UCD/TP_WMD_Pay, virgüllü ondalık tutarlar ve dokümante edilen hash kullanılır. İade ve iptallerTP_Islem_Iptal_Iade_Kismi2, durum sorgularıTP_Islem_Sorgulama4, BIN sorgularıBIN_SanalPoskullanır. Uydurma taksit oranları kaldırıldı. - Akbank: Akbank Sanal POS JSON API'sine göre yeniden yazıldı.
- iyzico: Checkout Form ve PWI sonuçları ödemenin kendi durumunu (
paymentStatus) bildirir. 3DS tamamlamamdStatus=1şartı arar.retrieveSubscriptionGET kullanır.
Geriye uyumsuz değişiklikler (3.x'e göre)
| Alan | Önce | Şimdi |
|---|---|---|
| PayTR config | apiKey, secretKey, merchantId, merchantSalt | merchantId, merchantKey, merchantSalt, testMode? |
| Akbank config | merchantId, terminalId, storeKey, … | merchantSafeId, terminalSafeId, secretKey |
| Parampos config | ayrıca apiKey/secretKey isteniyordu | clientCode, clientUsername, clientPassword, guid |
paymentId (PayTR/Akbank/Parampos) | sağlayıcı token'ı / işlem GUID'i | sizin sipariş numaranız |
| Zaman aşımları | failure | pending + errorCode: 'NETWORK_ERROR' |
| Handler | tüm route'lar herkese açık, her zaman HTTP 200 | açıkça etkinleştirilen route'lar, authorize, başarısızlıkta 422 |
| Desteklenmeyen para birimi | sessizce TRY | hata |