Kart Elementleri, kendi tasarladığınız ödeme formuna güvenli bir kart girişi alanı yerleştirmenizi sağlar. Hassas kart bilgileri Tahsilat’ın PCI-DSS uyumlu iframe’i içinde kalır, hiçbir zaman sizin sunucularınızdan geçmez.
Kart Elementleri ile ödeme formunun tamamını siz tasarlarsınız. Tahsilat.com sadece kart numarası, son kullanma tarihi ve CVV alanlarını güvenli bir iframe olarak sağlar. Taksit, bin sorgulama gibi işlemleri sizin yerinize otomatik yapar.
Kart elementi, güvenli kart bilgisi toplama alanını sayfanıza yerleştirir. Temel kullanımda sadece tutar ve para birimi yeterlidir. Taksit, stil, placeholder gibi ek özellikler için aşağıdaki bölümlere bakınız.
const tahsilat = new TahsilatSDK('pk_test_wsg...');const elements = tahsilat.elements();const cardElement = elements.create('card', { amount: 10000, currency: 'TRY'}).on('ready', () => { console.log('Kart formu hazır');}).on('change', (state) => { document.getElementById('pay-btn').disabled = !state.complete;}).mount('#card-element');
amount kuruş cinsindendir. 100,00 TL için 10000 olarak girilmelidir. currency belirtilmezse varsayılan TRY kullanılır.
Ödeme isteği oluşturulurken customer_id gönderilmemesi durumunda her ödeme için müşteri bilgileri tekrar alınır ve yeni bir müşteri oluşturulur. Bu durumda müşteri takibi ve raporlama süreci zorlaşabilir.Üye işyeri arayüzünden ya da Müşteriler sayfasından api aracılığı ile müşteri oluşturarak customer_id parametresini kullanabilirsiniz.
document.getElementById('pay-btn').addEventListener('click', async () => { const btn = document.getElementById('pay-btn'); btn.disabled = true; try { const result = await cardElement.confirmPayment({ cardholder_name: 'Ahmet Yılmaz', customer_email: '[email protected]', customer_phone: '5551234567', customer_phone_code: '+90', customer_country: 'TR' // ISO 3166-1 alpha-2 kabul edilir. }); console.log('Ödeme işlemi başarılı sonucu kontrol ediniz:', result); } catch (err) { console.error('Hata:', err); btn.disabled = false; }});
Mevcut bir müşteriyi customer_id ile ilişkilendirdiğinizde müşteri bilgileri zorunlu değildir. Müşteri, public key ile oluşturulamaz; sadece secret key ile oluşturulabilir ve JS SDK bunu desteklemez. Bunun için Müşteriler sayfasını kontrol ediniz.
Önceden oluşturulmuş ürün ID’lerini kullanarak ödeme başlatabilirsiniz. Ürün, public key ile oluşturulamaz; sadece secret key ile oluşturulabilir ve JS SDK bunu desteklemez. Bunun için Ürünler sayfasını kontrol ediniz.
Mevcut bir müşteriyi ödeme ile ilişkilendirmek için customer_id parametresini kullanabilirsiniz. Bu durumda ödeme esnasında müşteri bilgileri tekrardan alınmaz:Müşteri oluşturmak için Müşteriler sayfasını ziyaret edebilirsiniz.
Tahsilat.js SDK, ödeme işlemlerinin sonuçlarını event listener’lar aracılığıyla yakalamanızı sağlar. Bu sayede ödeme başarılı, başarısız veya iptal edildiğinde kullanıcıya bilgi verebilir ve gerekli aksiyonları alabilirsiniz.
Eğer ödemeyi pre_auth: true ile başlattıysanız, sonuç aldığınızda is_pre_auth değerini kontrol edin. true dönmesi durumunda ödeme başarılıdır ancak tutar karttan çekilmemiş, yalnızca bloke edilmiştir. Bloke edilen tutarı çekmek için ayrıca ön provizyonu kapatma işlemi yapmanız gerekmektedir.
const tahsilat = new TahsilatSDK('pk_test_wsg...');// Başarılı ödemetahsilat.on('paymentSuccess', function(data) { console.log('Ödeme başarılı:', data); // Örnek: Teşekkür sayfasına yönlendir});// Başarısız ödemetahsilat.on('paymentError', function(data) { console.log('Ödeme hatası:', data); // Örnek: Kullanıcıya hata mesajı göster});// İptal edilen ödemetahsilat.on('paymentCancelled', function(data) { console.log('Ödeme iptal edildi:', data); // Örnek: Sepet sayfasına yönlendir});
Kullanıcı kart numarasının ilk 6-8 hanesini girdiğinde SDK otomatik olarak BIN sorgulaması yapar ve taksit seçeneklerini döner. Bu seçenekleri kendi UI’ınızda göstermeniz gerekir.
Taksit seçeneklerindeki installment değeri şifrelenmiş bir değerdir. Bu değeri olduğu gibi installment_count parametresine geçmelisiniz. Düz sayı (1, 2, 3…) göndermeyiniz.
Ödeme tutarı ile ürünlerin toplam tutarı eşleşmelidir. Aksi takdirde ödeme reddedilir.
Ödeme sonuçlarını almak için confirmPayment promise sonucunu dinleyebilir veya backend tarafında webhook entegrasyonu yapabilirsiniz. Webhook en güvenilir yöntemdir.