finipay 0.1.1
finipay: ^0.1.1 copied to clipboard
SDK кошелька Finipay для Flutter: переводы, вывод и пополнение через MBank и MegaPay, оплата по QR, баланс и история.
Изменения #
0.1.1 — 04.10.2026 #
Новое #
- iOS: подключение через Swift Package Manager; CocoaPods работает как раньше.
0.1.0 — 03.10.2026 #
Ломающий выпуск: деньги — только через finipay.payments.
Ломающее #
| Было | Стало |
|---|---|
transfers.checkRecipient → begin → createTransfer |
payments.prepareTransfer → confirm() → settle() |
withdrawals.check → begin → withdraw |
payments.prepareWithdrawal → confirm() → settle() |
оплата чужого QR через transfers |
payments.prepareQr → confirm() → settle() |
pendingOperations(), completeOperation() |
payments.unfinished() и settle() |
transfers.isEncryptionConfigured |
payments.isEncryptionConfigured |
transfers.incomeAndExpense() |
history.incomeAndExpense() |
Убраны TransfersRepository, WithdrawalsRepository, TransferPayRequest,
TransferRecipient, TransferOrder, Withdrawal, OperationIntent.
Незакрытые операции 0.0.1 после обновления не видны — выясните их исход до
обновления.
Новое #
finipay.payments: перевод, вывод и оплата QR —prepare*→confirm()→settle(); ключи, повторы и закрытие ведёт SDK.HostedPageScreen.open(…, closeWhen:)— страница оплаты одним вызовом.- QR: код из ссылки (
payload,linkHost), ЭлКыргызQR (isElqr, сумма в тыйынах),recipient— всегда996…,isWalletPayable. - Ключи словаря
error.invalidPhone,error.noWallet,qr.paymentComment.
Безопасность #
- Канал статусов — личная очередь
/user/queue/status; финальный статус подтверждает опрос. - Пиннинг сверяется до отправки запроса; с пинами канал статусов не поднимается.
- Страница оплаты не уходит с разрешённых хостов и с https.
- Строже разбор QR;
FinipayEnvironment.customв релизе — только https.
Проверьте у себя: оплата чужого QR — только с именем от сервера
(payment.recipientName); пины на боевом контуре пока не задавайте.
Исправлено #
- Отказ сервера на денежном вызове закрывает платёж; незнакомый ответ —
PaymentIndeterminate, а не исключение. qr.watchнаходит код за первой страницей истории.- Android: пакет объявляет
INTERNETсам. QrFormatException.message— текст словаря, причина — вdetails;QrScanGateсообщает о чужой строке один раз.
Совместимость #
- Минимум — Flutter 3.27 (Dart 3.6); без
package_info_plus.
0.0.1 — 2026-09-27 #
Первый выпуск на pub.dev.
- Одна точка входа
Finipay.init; модулиusers,history,transfers,withdrawals,topUps,qr. - Вход без экранов: одноразовый код от бэкенда партнёра через
partnerCode, сброс сессии при смене пользователя черезpartnerUser, обновление токена по401с ротацией. - Денежные вызовы возвращают исход значением
PaymentOutcomeи никогда не повторяются сами; намерения с ключом идемпотентности,pendingOperations()иcompleteOperation()после перезапуска. - Переводы внутри Finipay, вывод в MBank и MegaPay, пополнение из MBank и MegaPay.
- QR: постоянный код, код на сумму, страница оплаты,
EmvQr.parseиQrScanGateдля чужих кодов. - Понятные тексты для пользователя из словаря SDK, ответ сервера — в
serverMessage; свои тексты —messagesвinit. Moneyна целых минорных единицах.createTestFinipayдля тестов приложения (finipay_testing.dart),DevOtpClientдля стенда (finipay_dev.dart).