Cüzdan
Portal
Hesap & İşlemler

Portal — Hesap & İşlemler

Bu uçları kim çağırır?Portal / SDK
Taban yol
/api/portal/v1/wallet/me
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.

Bu uçlar /api/portal/v1/wallet/me/* altındadır ve yalnızca oturum sahibinin kendi verisine erişir. Kullanıcı kimliği istekte taşınmaz — oturumdan çözülür.

⚠️

İstek gövdesine endUserId benzeri bir alan koymayı beklemeyin. Portal uçları hedef kullanıcıyı oturumdan alır; bu, bir kullanıcının başkasının cüzdanını hedefleyebilmesini yapısal olarak imkânsız kılar.

Hesap ve bakiye

GET  /me                          # profil
GET  /me/balances                 # tüm hesapların bakiyesi
GET  /me/wallets                  # cüzdanlar
POST /me/wallets/{id}/accounts    # yeni para birimi hesabı  { currency }
GET  /me/limits                   # limit durumu (operationType, currency ile filtre)
GET  /me/kyc-level                # seviye ve açık yetenekler

Bakiye yükleme

POST /me/topups/card              # { creditWalletAccountId, amount, currency, returnUrl?, saved…Token? }
GET  /me/topups/{id}
GET  /me/deposit-instructions
POST /me/deposit-instructions     # { walletAccountId, currency? }

Kart yüklemesi hosted form ya da 3D Secure yönlendirmesi döner; ayrıntı Bakiye Yükleme.

Yakında — havale/EFT yatırma talimatları

deposit-instructions uçları bir banka entegrasyonu gerektirir. Entegrasyon bağlı değilken talimat üretilemez. Durum: Yol Haritası.

Transfer

POST /me/transfers/w2w/quote
POST /me/transfers/w2w
POST /me/transfers/w2w/{id}/complete

Aynı üç adımlı desen IBAN transferi için de geçerlidir (/me/transfers/w2iban/*) — bkz. Transfer.

Para çekme

POST /me/withdrawals/bank/quote
POST /me/withdrawals/bank
POST /me/withdrawals/bank/{id}/complete
GET  /me/withdrawals/{id}
Yakında — banka çekimi

Banka entegrasyonu gerektirir. Durum: Yol Haritası.

Ödeme

POST /me/payment-code             # kasada gösterilecek tek kullanımlık kod üret
DELETE /me/payment-code           # kodu iptal et
POST /me/payments/{requestId}/approve
GET  /me/payments/{id}

QR

POST   /me/qr                     # tahsilat kodu üret
GET    /me/qr                     # kodlarım
GET    /me/qr/{id}
GET    /me/qr/{id}/image
DELETE /me/qr/{id}                # iptal
POST   /me/qr/parse               # okunan kodu çözümle
POST   /me/qr/pay                 # QR ile öde
POST   /me/qr/pay/{qrId}/complete

Kişi rehberi

GET    /me/contacts
POST   /me/contacts               # { alias, contactPhone? | contactWalletNo? }
PUT    /me/contacts/{id}
DELETE /me/contacts/{id}
POST   /contacts/phonebook-check  # { phone? | walletNo? }

phonebook-check, kullanıcının rehberindeki kişilerden hangilerinin cüzdanı olduğunu göstermek içindir.

⚠️

Rehber eşleştirmesini kullanıcının açık onayıyla yapın ve tüm rehberi toplu göndermeyin. Okuma yanıtlarında telefon numaraları maskeli döner.

Yetkilendirme (mandate)

Bir işletmenin kullanıcı adına düzenli tahsilat yapabilmesi için kullanıcı yetki verir:

GET    /me/authorizations/consent-text     # gösterilecek onay metni
GET    /me/authorizations                  # verilen yetkiler
POST   /me/authorizations                  # { businessEndUserId? | businessWalletNo?, channel?, otpDestination, locale? }
POST   /me/authorizations/{id}/confirm     # { otpCode }
DELETE /me/authorizations/{id}             # yetkiyi geri al

consent-text ucunu mutlaka kullanın — kullanıcıya gösterdiğiniz onay metni, yetkinin kapsamıyla birebir aynı olmalıdır. Kendi yazdığınız bir metin, kapsam değiştiğinde sessizce yanlış hâle gelir.

Kullanıcıya verdiği yetkileri listeleyip tek dokunuşla geri alma imkânı sunun.

Sadakat

GET  /me/cashback
GET  /me/cashback/eligible
GET  /me/loyalty/balance
GET  /me/loyalty/history
POST /me/loyalty/redeem           # { loyaltyProgramId, walletAccountId, points, idempotencyKey }
GET  /me/tier
GET  /me/badges

Ayrıntı: Sadakat & Cashback.

Fatura ve fatura ödeme

GET  /me/invoices
GET  /me/invoices/{id}
POST /me/invoices/{id}/pay
POST /me/bills/inquire            # { billerCode, subscriberNo }
POST /me/bills/pay
GET  /me/bills
Yakında

Fatura ve fatura ödeme akışları sırasıyla yayın ve fatura kurumu entegrasyonu beklemektedir. Durum: Yol Haritası.

İşlemler ve dekont

GET /me/operations                # cursor sayfalama, status/walletAccountId filtresi
GET /me/operations/{id}
GET /me/operations/{id}/receipt
GET /me/operations/export

Ücret sorgulama

POST /me/fees/quote               # { operationType, currency, amount }

Tutar yazıldıkça çağırıp kullanıcıya toplam tutarı gösterin.

Yaygın hatalar

DurumSebepÇözüm
Başka kullanıcının verisi gelmiyorBeklenen davranışPortal yalnız kendi verisini döner; tenant geneli için s2s kullanın
Para işlemi reddediliyorStep-up eksikotpCode / trustedActionToken gönderin
Yetki metni ile kapsam uyuşmuyorKendi metniniz kullanılmışconsent-text ucunu kullanın
Bazı uçlar hiç çalışmıyorO yeteneğin entegrasyonu bağlı değilYol Haritası