SDK
Web
Genel Bakış

Web SDK — Genel Bakış

Lunixi tarayıcı tarafında sekiz ayrı SDK yayınlar. Hepsi aynı çekirdeği paylaşır; farkları ne yaptıkları ve nasıl kimlik doğruladıklarıdır.

SDKNe yaparSayfası
checkoutÖdeme formuCheckout Form
fieldBarındırılan kart alanı (PCI kapsamını daraltır)Kart Alanı
identityCihaz ve davranış telemetrisiIdentity Web SDK
kycRehberli kimlik doğrulama akışıKYC SDK
portalMüşteri portalı — plan, abonelik, kartPortal SDK
marketplaceAlt bayi başvuru ve yönetim akışıMarketplace SDK
paymentLinkLinkle ödeme ekranı — pay.lunixi.com üzerinde Lunixi tarafından çalıştırılır, sizin kurmanız gerekmez; sitenize gömme çok yakındaÖdeme Sayfası
loaderDiğerlerini tembel yükleyen giriş noktasıAşağıda

Loader — tek script, hepsi

Her SDK'yı ayrı <script> ile yüklemek zorunda değilsiniz. Loader'ı koyarsınız, çağırdığınız modül ilk kullanımda indirilir.

<script src="https://cdn.lunixi.com/lunixi-loader.min.js"></script>
// lunixi-kyc.min.js bu satırda indirilir, öncesinde değil
await Lunixi.kyc.mount('#kyc', { … });

Loader bir vekil (proxy) kurar: Lunixi.<modül>.<metot>(...) çağrısı modülü indirir, sonra çağrıyı iletir. Aynı modül ikinci kez çağrılırsa tekrar indirilmez.

CDN adresini değiştirmeniz gerekirse yükleme öncesi window.Lunixi = { config: { cdnBaseUrl: '…' } } tanımlarsınız; loader onu kullanır. Tanımlamazsanız kendi <script src> adresinden türetir.

Dört entegrasyon modu

SDK'lar tek bir kullanım biçimi dayatmaz. Ne kadar kontrol istediğinize göre seçersiniz:

ModNe verirÇağrı
Mode 0 — KatalogPublishable key ile salt-okunur veri; oturum yok, anonim ziyaretçiLunixi.portal.catalog({...})
Mode 1 — Hazır UITam ekranı biz çizeriz, siz bir DOM hedefi verirsiniz.mount(target, {...}) · .form({...})
Mode 2 — HeadlessUI'ı siz yazarsınız, SDK yalnız veri katmanı.create({...})
Mode 3 — HibritEkranın parçalarını tek tek monte edersinizLunixi.portal.plans.mount(...)

Mode 1 ile Mode 2 arasında geçiş yapabilirsiniz. Hızlı başlamak için hazır UI ile çıkar, marka ihtiyacınız büyüyünce aynı SDK'nın headless istemcisine geçersiniz — uçlar ve oturum modeli değişmez.

.mount() ile .form() farkı: mount doğrudan monte eder, form bir tutamaç döndürür (sonradan unmount edebilmeniz için).

Kimlik doğrulama — SDK'ya göre değişir

Bu sayfanın en önemli tablosu budur. Tarayıcıda secret key hiçbir zaman bulunmaz; her SDK'nın kendi güvenli yolu vardır.

SDKTarayıcıda taşınanNasıl doğrulanır
portal katalog (Mode 0)Bearer mk_live_pk_…Publishable key + Origin eşleşmesi
kycPublishable key → imzalı oturumPOST /api/v1/kyc/sdk/init
identitySizin sunucunuzdan basılan oturum token'ısessionBootstrapUrl (sizin ucunuz)
portal (Mode 2)X-Portal-Session (JWT)Portal oturumu
marketplaceX-Marketplace-Token (mp_…)Bearer değil — portal-token deseni
checkoutCheckout token + session-proof çereziÖdeme oturumu
paymentLinkAnahtar yok — linkin kısa kodu; ödeme başlatırken bot kontrolü (Turnstile) ve kısa ömürlü ödeme oturumu çerezi, ödeme adımında checkout tokenLinkle ödeme oturumu (/api/public/v1/pay/*)

Publishable key nasıl korunur

Publishable key gizli değildir — sayfa kaynağında görünür. Koruma anahtarın kendisinde değil, nereden kullanıldığındadır:

  1. Anahtar mk_{ortam}_pk_… biçimindedir; sunucu öneki kontrol eder.
  2. İstek Origin başlığı taşımak zorundadır — bunu tarayıcı koyar, sayfadaki JavaScript sahteleyemez.
  3. Origin, o anahtar için kayıtlı izinli origin listesinde tam eşleşmelidir.
  4. Eşleşmezse 401.
⚠️

Yani anahtarınız çalınsa bile sizin domain'inizin dışından kullanılamaz. Ama izinli origin listesini geniş tutarsanız (* benzeri kalıplar, test domain'lerini canlıda bırakmak) bu korumayı kendiniz zayıflatırsınız.

Barındırılan kart alanı (field)

Kart numarasının sayfanıza hiç girmemesi gereken durumlar için ayrı bir SDK vardır: alan bir iframe olarak fields.lunixi.com üzerinden gömülür. Kart verisi sizin DOM'unuza hiç değmez, dolayısıyla PCI kapsamınız daralır.

Checkout SDK'sından Lunixi.checkout.createCardField(...) ile de erişilir.

Ortak davranış

  • Tembel yükleme — ağır UI (React + akış ekranları) yalnız Mode 1'de ve ilk mountta indirilir. Headless kullanırsanız bundle'ınıza girmez.
  • Fail-open değil — SDK çağrıları hata durumunda sessizce "geçti" dönmez, hata fırlatır. Yedek davranışı siz kurgularsınız.
  • Ortam ayrımı — anahtarınız hangi ortamda üretildiyse SDK o ortama konuşur.
🚫

Secret key'i asla tarayıcıya koymayın. Sayfada bulunabilecek tek anahtar publishable key'dir. Bir SDK sizden secret key istiyorsa yanlış modu kullanıyorsunuzdur.

Nereden başlamalı