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_accounts → PspHmacClient.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 не создаёт и не провизионирует кошельки — только читает существующие.