Перейти к содержанию

02 wallet

WalletEndpoint — список кошельков и баланс.

Тонкая обёртка над read-only view public.v_user_tb_accounts и HMAC-прокси баланса из PM. Провизионирование кошельков живёт в WalletCreationService, не здесь.

Методы

Метод Источник данных Возвращает Формат суммы
getWallets() public.v_user_tb_accounts (прямой SELECT, сортировка по currency) List<WalletDto> — поля: currency, tbAccountId, ippsWalletId
getBalance(currency) v_user_tb_accountsPspHmacClient.getBalance(tbAccountId) BalanceDto сатанги (целое число)

Детали

getWallets — возвращает все строки пользователя из v_user_tb_accounts, по одной на валюту. ippsWalletId может быть null до окончания IPPS-провизионирования.

getBalance — сначала читает tbAccountId из v_user_tb_accounts (lookup по userId + currency.toUpperCase()), затем запрашивает реальный баланс из TigerBeetle через PM HMAC-прокси. Если строки нет — бросает PaymentException(NOT_FOUND).

Аутентификация

Оба метода используют _requireUserId() — та же логика что в PaymentEndpoint: UUID из сессии → users.authUserId → числовой id. Анонимная сессия → PaymentException(UNAUTHENTICATED).

Важно

  • Баланс всегда в сатангах (1 THB = 100 сатангов).
  • currency нормализуется к upper-case ('thb''THB').
  • Этот endpoint не создаёт и не провизионирует кошельки — только читает существующие.