Cüzdan
Portal
Genel Bakış

Portal — Genel Bakış

Bu uçları kim çağırır?Portal / SDK
Taban yol
/api/portal/v1/wallet
Kimlik
Publishable key (pk_live_…) → OTP → müşteri oturumu. Oturum son kullanıcıya aittir, merchant'a değil; yalnız o kullanıcının kendi verisine erişir.
Yetki
Oturumun kendisi yetkidir; kullanıcı yalnız kendi kaydına erişir.Step-up: para çıkaran işlemlerde oturum tek başına yetmez; OTP kodu ya da güvenilir aksiyon token'ı istenir.
Çapraz yüzey
Bu yüzey son kullanıcı içindir; merchant sunucunuz bu uçları çağırmaz. Sunucu tarafı için s2s API'ye bakın.

Portal, son kullanıcının cüzdanıyla etkileşime girdiği yüzeydir: mobil uygulamanız, web uygulamanız ya da gömülü cüzdan ekranınız. Kendi markanız altında çalışır; kullanıcı bir Lunixi arayüzü görmez.

Portal ve sunucu-sunucu yüzeyleriMimari: son kullanıcının cihazı yayınlanabilir anahtar ve kendi oturumuyla portal ucuna, sizin sunucunuz ise imzalı isteklerle sunucu-sunucu ucuna bağlanır. İkisi de aynı cüzdan altyapısına iner ama yetki genişlikleri farklıdır.Kullanıcının cihazıpublishable key + oturumSizin backend’inizEd25519 imzalı istek/api/portal/v1/wallet/*yalnız KENDİ verisi/api/v1/wallet/*tenant geneliCüzdan altyapısıAÇIKLAMASON KULLANICIAPI YÜZEYİORTAK ÇEKİRDEK
İki yüzey birbirinin yerine geçmez. Portal ucu oturum sahibinin kendi verisiyle sınırlıdır; imza anahtarı ise tenant geneline erişir — bu yüzden imza anahtarı son kullanıcının cihazına konmaz.
⚠️

Son kullanıcının cihazı asla imza anahtarı taşımaz. Taşısaydı, uygulamayı kuran herkes tenant'ınızın tüm cüzdanlarına erişebilirdi. Portal yüzeyi tam olarak bunu engellemek için ayrı bir kimlik modeliyle çalışır.

Yetki genişliği

Aynı iş yeteneği s2s ve portal yüzeyinde farklı kapsamla açılır:

Yeteneks2s (/api/v1/wallet/*)Portal (/api/portal/v1/wallet/*)
İşlem listesiTenant'ın tüm işlemleriYalnız oturum sahibinin işlemleri
BakiyeHerhangi bir kullanıcınınYalnız kendi bakiyesi
TransferHerhangi bir hesaptanYalnız kendi hesabından
Kullanıcı oluşturmaVarYok (kayıt akışı ayrıdır)

Bunlar ayrı controller'lardır — tek bir uç üç farklı kimlikle paylaşılmaz. Bu, yanlış bir kapsam kontrolünün tüm yüzeyi açmasını engelleyen yapısal bir tercihtir.

Publishable key

Uygulamanız kendini bir publishable key (pk_live_…) ile tanıtır. Bu anahtar uygulamaya gömülebilir; tek başına hiçbir veriye erişmez, yalnız "hangi tenant ve hangi program" sorusunu cevaplar.

⚠️

Publishable key oluştururken izin verilen origin'leri (allowedOrigins) tanımlamak zorunludur ve joker (*) kabul edilmez. Anahtar yalnız listelediğiniz origin'lerden çalışır — sızsa bile başka bir sitede kullanılamaz.

Oturum modeli

publishable key → kayıt/giriş → OTP doğrulama → müşteri oturumu (access + refresh)
                                                        │
                                          hassas işlemde → step-up (OTP / trusted token)
  • Access token kısa ömürlüdür; her /me/* çağrısında taşınır.
  • Refresh token oturumu uzatır.
  • Step-up, para çıkaran işlemlerde ek doğrulamadır — oturum tek başına yetmez.

Ayrıntı: Portal — Kimlik & Oturum.

Cihaz farkındalığı

Kayıt, giriş ve OTP doğrulama isteklerinde bir cihaz tanımı taşıyabilirsiniz (parmak izi, platform, kurulum kimliği, cihaz adı). Bu, kullanıcının "hangi cihazlarım bağlı" ekranını ve şüpheli cihaz tespitini besler.

Kullanıcıya cihaz listesini ve oturumu sonlandırma imkânını verin. Cüzdan uygulamalarında "telefonumu kaybettim" senaryosunun tek çözümü budur.

Ne yapabilirsiniz

AlanUçlar
Kimlikkayıt, giriş, OTP, oturum, cihaz, şifre
Hesapbakiye, cüzdan/hesap açma, limit, KYC seviyesi
Parayükleme, transfer, çekim, QR ödeme, fatura
Sadakatcashback, puan, seviye, rozet
Yardımcıkişi rehberi, ücret quote, yetkilendirme (mandate)

Mimari öneriler

  1. Oturumu cihazda güvenli saklayın. Access/refresh token'ları güvenli depoda tutun; log'a yazmayın.
  2. Step-up'ı ürün akışına gömün. OTP ekranını her para çıkışında hazır tutun; sonradan eklemek akışı bozar.
  3. Kilitli yetenekleri gösterin. KYC seviyesi yetmeyen işlemleri gizlemeyin, şartıyla birlikte kilitli gösterin.
  4. Ücreti canlı gösterin. Tutar yazıldıkça quote çağırıp toplamı gösterin.
  5. Belirsiz durumları doğru anlatın. HELD ve AWAITING_RECON "başarısız" değildir.