Demo Ekranları
Aşağıdaki ekranlar abonelik yüzeyinin çalışan hâlidir: ekran görüntüsü ya da taklit değil, gerçek API'ye giden canlı entegrasyonlar. Her ekranın en üstünde bir bağlantı kutusu vardır; anahtarınızı oraya girersiniz, kaynak kodda anahtar tutulmaz.
Demo ekranları test ortamı içindir. Kart adımı 1,00 TRY doğrulama provizyonu + 3DS açar — merchant'a TestBank acquirer bağlıyken çalıştırın. Ekranlar noindex'tir ve panelde izinli origin listesine bu alan adı eklenmeden API çağrıları reddedilir.
Ekranlar
Her biri bu dokümantasyonun içinde, kendi sayfasında gömülü çalışır — soldaki menüden de ulaşabilirsiniz.
| Ekran | Mod | Ne gösterir | Gereken anahtar |
|---|---|---|---|
| Fiyatlandırma sayfası | Mod 0 — Katalog | Anonim ziyaretçiye plan + marka verisi | Publishable key |
| Komple portal akışı | Mod 1 — Hazır UI | Tek mount() ile OTP → plan → kart → abonelik → dashboard | Merchant Bearer token |
| Kendi arayüzünüz | Mod 2 — Headless | Her ekran sizin, API bizim | Merchant Bearer token |
| Parçalı gömme | Mod 3 — Hibrit | Sizin plan listeniz + Lunixi kart bileşeni | Merchant Bearer token |
| Müşteri portalı linki | Barındırılan | Kod yazmadan, cp_ linkiyle | Portal token |
Ekranlar tek başına da açılabilir; her demo sayfasının sağ üstündeki “Yeni sekmede aç” bağlantısı tam ekran sürümüne götürür.
Çalıştırmadan önce
SDK embed'i açın
Panel → Abonelik → Portal Ayarları → SDK Embed Güvenliği altında SDK Embed açık olmalı. Kapalıyken yalnız barındırılan portal çalışır.
Origin'i izinli listeye ekleyin
Aynı ekrandaki izinli origin listesine demoyu açacağınız adresi ekleyin. Eşleşme tamtır — joker karakter yoktur, https:// şeması ve port dâhil birebir yazılmalıdır. Listede olmayan bir origin'den gelen çağrı reddedilir.
İzinli modları işaretleyin
İzinli SDK Modları'nda kullanacağınız modları seçin. Liste boş bırakılırsa hepsi serbesttir; FULL kapalıyken Mod 1, HEADLESS kapalıyken Mod 2, HYBRID kapalıyken Mod 3 demosu bootstrap aşamasında düşer.
Anahtarınızı alın
Katalog demosu için panelden bir publishable key; diğer üç mod için panel oturumunun Bearer token'ı. Barındırılan portal demosu ikisini de istemez — yalnız Portal Linkleri ekranından ürettiğiniz cp_ token'ını.
En az bir aktif plan yayınlayın
Panel → Abonelik → Planlar. Yayınlanmış aktif plan yoksa listeler boş döner ve akış plan seçiminde durur.
Anahtarlar nerede tutuluyor
Demo ekranları hiçbir anahtarı kaynak kodda taşımaz ve hiçbirini sunucuya göndermez:
- Merchant Bearer token ve portal token →
sessionStorage. Sekmeyi kapattığınızda silinir. - API/CDN adresleri ve publishable key →
localStorage. İkisi de zaten public değerlerdir.
Demo ekranları sdk-session çağrısını tarayıcıdan yapar ki entegrasyon akışı canlı izlenebilsin. Üretimde bu desen kullanılmaz: POST /api/v1/subscriptions/portal/sdk-session ucu BearerAuthGuard ile korunur ve merchant'ın kendi sunucusundan çağrılmalıdır. Tarayıcıya inen tek şey dönen portalToken + sessionProof olmalıdır.
Akış özeti
Dört modun tamamı aynı omurgayı paylaşır; fark, hangi parçayı kimin çizdiğidir.
portalToken gizli anahtarla üretilir ve tarayıcıya yalnız o token iner. Doğrulama bitmeden hiçbir müşteri verisi okunamaz.| Adımı kim çizer | Mod 0 | Mod 1 | Mod 2 | Mod 3 |
|---|---|---|---|---|
| Plan listesi | siz | Lunixi | siz | siz |
| OTP ekranı | — | Lunixi | siz | siz |
| Kart formu | — | Lunixi | Lunixi (iframe) | Lunixi |
| Dashboard | — | Lunixi | siz | siz |
Endpoint sözleşmeleri ve kod örnekleri için Pricing & Portal SDK, portal oturum modeli için Müşteri Portalı sayfalarına bakın.
Sık karşılaşılan hatalar
| Günlükte gördüğünüz | Sebebi | Çözüm |
|---|---|---|
sdk-session başarısız (HTTP 401) | Bearer token süresi dolmuş veya yanlış | Panelden yeni token alın |
sdk-session başarısız (HTTP 403) | Origin izinli listede değil ya da SDK embed kapalı | Portal Ayarları'ndan origin ekleyin / embed'i açın |
PORTAL_SESSION_REQUIRED | Kart bileşeni doğrulanmış oturum ister | Önce OTP adımını tamamlayın |
| Plan listesi boş | Aktif plan yok veya portal linki plan kısıtı taşıyor | Plan yayınlayın / linkin izinli plan listesini genişletin |
Kart alanı yüklenemedi | Checkout bundle'ı CDN'den inemedi | CDN adresini ve ağ/CSP kısıtlarını kontrol edin |