Skip to main content

Tarayıcı Desteği

SDK’nın sorunsuz çalışması için aşağıdaki minimum tarayıcı versiyonları gereklidir:
TarayıcıMinimum VersiyonYayın Yılı
Chrome60+2017
Firefox55+2017
Safari11+2017
Edge79+2020
iOS Safari11+2017
Android Chrome60+2017
Opera47+2017
Samsung Internet7.2+2017
Internet Explorer hiçbir versiyonunda desteklenmemektedir. IE kullanan müşterileriniz için alternatif ödeme yöntemleri sunmanızı öneririz.

JavaScript Özellikleri

SDK aşağıdaki modern JavaScript özelliklerini kullanır:
  • ECMAScript 2017 (ES8) ve üzeri
  • async/await desteği
  • Promise API
  • fetch API
  • Object.entries(), Object.assign()
  • Arrow functions
  • Template literals
  • Destructuring
  • Spread operator (...)
  • Map ve WeakSet yapıları

Ağ Gereksinimleri

  • HTTPS Zorunluluğu: Production ortamında (pk_live_ anahtarları ile) HTTPS bağlantısı zorunludur
  • WebSocket: Gerçek zamanlı iletişim için WebSocket desteği (opsiyonel)
  • CORS: Cross-Origin Resource Sharing desteği

Uyumluluk Kontrolleri

Tarayıcı Desteği Kontrolü

Kullanıcının tarayıcısının SDK’yı destekleyip desteklemediğini kontrol etmek için:
function checkBrowserCompatibility() {
    // Modern JavaScript özellikleri kontrolü
    const checks = {
        promise: typeof Promise !== 'undefined',
        fetch: typeof fetch !== 'undefined',
        async: (function() {
            try {
                new Function('async () => {}')();
                return true;
            } catch (e) {
                return false;
            }
        })(),
        objectEntries: typeof Object.entries === 'function',
        arrow: (function() {
            try {
                eval('() => {}');
                return true;
            } catch(e) {
                return false;
            }
        })(),
        spread: (function() {
            try {
                eval('let a = {...{}}');
                return true;
            } catch(e) {
                return false;
            }
        })()
    };

    // Tüm kontrolleri geç
    const isCompatible = Object.values(checks).every(check => check === true);

    if (!isCompatible) {
        console.error('Tarayıcı uyumluluk kontrolleri:', checks);
    }

    return isCompatible;
}

// Kullanım
if (!checkBrowserCompatibility()) {
    // Uyumluluk uyarısı göster
    document.getElementById('payment-container').innerHTML = `
        <div class="alert alert-warning">
            <h3>Tarayıcınız Desteklenmiyor</h3>
            <p>Güvenli ödeme yapabilmek için lütfen tarayıcınızı güncelleyin.</p>
            <p>Önerilen tarayıcılar: Chrome, Firefox, Safari, Edge</p>
        </div>
    `;
} else {
    // SDK'yı yükle
    const script = document.createElement('script');
    script.src = 'https://js.tahsilat.com/v1/tahsilat.js';
    document.head.appendChild(script);
}

Bilinen Uyumluluk Sorunları

1. Eski Tarayıcılar

Aşağıdaki tarayıcılar/versiyonlar desteklenmemektedir:
  • Internet Explorer (tüm versiyonlar)
  • Chrome 59 ve öncesi
  • Firefox 54 ve öncesi
  • Safari 10 ve öncesi
  • Eski Android Browser (Android 4.4 ve öncesi)

Polyfill Çözümleri

Eski tarayıcıları desteklemek için polyfill kullanabilirsiniz:

Otomatik Polyfill (Önerilen)

<!-- Polyfill.io otomatik olarak eksik özellikleri algılar ve yükler -->
<script src="https://polyfill.io/v3/polyfill.min.js?features=Promise,fetch,Object.entries,Object.assign,Array.from,Symbol,Map,WeakSet"></script>

<!-- Async/await için regenerator runtime -->
<script src="https://cdn.jsdelivr.net/npm/[email protected]/runtime.min.js"></script>

<!-- SDK -->
<script src="https://js.tahsilat.com/v1/tahsilat.js"></script>

Manuel Polyfill

// Promise polyfill
if (!window.Promise) {
    document.write('<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"><\/script>');
}

// Fetch polyfill
if (!window.fetch) {
    document.write('<script src="https://unpkg.com/[email protected]/dist/fetch.umd.js"><\/script>');
}

// Object.entries polyfill
if (!Object.entries) {
    Object.entries = function(obj) {
        var ownProps = Object.keys(obj),
            i = ownProps.length,
            resArray = new Array(i);
        while (i--)
            resArray[i] = [ownProps[i], obj[ownProps[i]]];
        return resArray;
    };
}

Graceful Degradation Stratejisi

SDK yüklenemediğinde alternatif çözüm sunun:
class TahsilatFallback {
    constructor() {
        this.checkInterval = setInterval(() => {
            this.checkSDK();
        }, 1000);

        // 10 saniye sonra timeout
        setTimeout(() => {
            if (!window.TahsilatSDK) {
                this.showFallback();
                clearInterval(this.checkInterval);
            }
        }, 10000);
    }

    checkSDK() {
        if (window.TahsilatSDK) {
            clearInterval(this.checkInterval);
            this.initializeSDK();
        }
    }

    initializeSDK() {
        const tahsilat = new TahsilatSDK('pk_test_xxx');
        // Normal SDK kullanımı
    }

    showFallback() {
        document.getElementById('payment-container').innerHTML = `
            <div class="fallback-payment">
                <h3>Alternatif Ödeme Yöntemi</h3>
                <p>Otomatik ödeme sistemi yüklenemedi.</p>
                <a href="/manual-payment" class="btn btn-primary">
                    Manuel Ödeme Sayfasına Git
                </a>
            </div>
        `;
    }
}

// Başlat
new TahsilatFallback();

Sorun Giderme

SDK Yüklenmeme Sorunları

// Detaylı hata yakalama
window.addEventListener('error', function(e) {
    if (e.filename && e.filename.includes('tahsilat.js')) {
        console.error('Tahsilat SDK Hatası:', {
            message: e.message,
            filename: e.filename,
            lineno: e.lineno,
            colno: e.colno
        });

        // Kullanıcıya bilgi ver
        alert('Ödeme sistemi yüklenirken bir hata oluştu. Lütfen sayfayı yenileyin.');
    }
});
Herhangi bir uyumluluk sorunu yaşarsanız, lütfen tarayıcı ve versiyon bilgilerinizle birlikte destek ekibimize başvurun.