Software archive

eBank

Pavel Bartoš

Bankovní přehled pro eLoader: účty, zůstatky a pohyby. Fio, RB Premium API a experimentální Oberbank XS2A. Pouze čtení, superadmin.

Documentation and check-in manual

Releases

Older versions (1)

README

# eBank 0.1.0 První vývojová verze bankovní aplikace pro eLoader. Rozhraní přebírá obsahové uspořádání internetového bankovnictví: seznam účtů vlevo, souhrn zůstatků, pohyby, detail účtu a správu připojení. Nepoužívá logo Fio ani skutečné údaje ze zaslaného obrázku. **Tato verze pouze čte. Neodesílá platby. Přístup má pouze superadmin eLoaderu.** Konektory nejsou označené jako ověřené, dokud neproběhne úspěšná synchronizace. Bez přístupů nemůže balíček sám připojit vaše banky. ## Instalace přes eUpdate 1. Nejprve zálohujte eLoader i přidělenou databázi a použijte testovací instanci. 2. V eUpdate založte projekt se `software_id = ebank`. Nahrajte **ebank-0.1.0.zip** jako verzi **0.1.0**, typ **release**, cíl **eloader_app**, platforma **source**. Identita projektu musí souhlasit s `install.json`. Do eUpdate nepatří ZIP označený `komplet`. 3. V eLoaderu otevřete instalaci aplikací z eUpdate. Použijte instalační odkaz, který eUpdate vytvoří pro eBank; u neveřejného projektu doplňte jeho SecretID. Skutečný odkaz závisí na vašem projektu, není v balíčku vymyšlený. 4. V centrálním nastavení databází eLoaderu přidělte aplikaci eBank MySQL/MariaDB spojení. Jméno databáze, uživatel a heslo se nastavují tam, nikoli do zdrojových souborů eBank. Pro databázi na stejném serveru použijte vaše funkční spojení `localhost`. 5. Přihlaste se jako superadmin a otevřete eBank. Potvrďte vytvoření tabulek. Vzniknou jen tabulky `ebank_*`; tabulky isEDU se neupravují. Migrace se neprovádí na obyčejné zobrazení stránky. 6. V **Bankovní připojení / Přidat banku** vyplňte přístupy a spusťte aktualizaci. Tajemství zadávejte pouze do zabezpečené instalace, nikoli do chatu nebo e-mailu. Alternativně stejný instalační ZIP nahrajte přes ruční instalaci aplikace v eLoaderu. Balíček má `install.json` v kořeni. Není to aktualizace samotného eLoaderu a nesmí se tak instalovat. ## Požadavky - eLoader API 1, deklarované rozmezí `>=1.16.0 <2.0.0`. Novější společné menu a stylesheet API se použijí, jsou-li dostupné; jinak aplikace vykreslí vlastní navigaci. - PHP 8.2–8.x, `pdo_mysql`, `curl`, `sodium`, `openssl`. cURL musí podporovat `CURLOPT_SSLCERT_BLOB` i `CURLOPT_SSLKEY_BLOB` (libcurl 7.71+). Potřebný je funkční systémový seznam důvěryhodných CA. - Doporučený cíl: MySQL 8 / MariaDB 10.6 nebo novější, InnoDB, utf8mb4. Inicializační účet musí mít oprávnění vytvořit tabulky a indexy. Potom stačí běžná datová oprávnění. - HTTPS. PHP musí dostávat správný parametr `HTTPS=on` nebo port 443. Aplikace slepě nedůvěřuje hlavičce X-Forwarded-Proto od klienta. - Jeden aktivní synchronizační uzel / jeden zapisovací databázový server. Zámek MySQL GET_LOCK není distribuovaný napříč nezávislými master-master servery. Tato verze neřeší aktivní synchronizaci na více zapisovacích uzlech. ## Jednotlivé banky ### Fio Implementován klient dokumentovaného rozhraní `fioapi.fio.cz/v1/rest/periods`. Token se vytváří v internetovém bankovnictví pro jednotlivý účet; zvolte právo **Sledování účtu**. Po autorizaci počkejte přibližně 5 minut. Pro další účet vytvořte další token a připojení. Import používá výslovná období, nikoli vzdálený posuvný kurzor `last`. Mezi voláními téhož tokenu ukládá prodlevu nejméně 30 sekund. Token nesdílejte s dalším současně běžícím importem mimo eBank. `closingBalance` znamená konečný účetní zůstatek zadaného období. Neznamená disponibilní zůstatek. Blokace ani disponibilní zůstatek se nevymýšlejí a zobrazují se pomlčkou. ID pohybu pochází z `column22`, ne z ID platebního pokynu. ### Raiffeisenbank CZ Implementován klient **RB Premium API** pro seznam účtů, měnové složky, zůstatky a stránkované pohyby. Vyžaduje **ClientID** z developerského portálu, soubor **.p12/.pfx** a jeho heslo. Klientský certifikát a jeho oprávnění nastavte v bankovnictví pro příslušné účty. Používejte jen oprávnění pro čtení. Na přehledu se disponibilní zůstatek mapuje na CLAV (včetně úvěrového limitu). V detailu je samostatně CLAB bez limitu. CLBD je účetní stav, BLCK blokace. Roční blokaci a konečnou platnost certifikátu řeší klient v RB; aplikace je sama neobnovuje. ### Oberbank **Experimentální read-only adaptér, nikoli hotové samoobslužné připojení.** Veřejně dokumentované rozhraní Oberbank je PSD2/XS2A podle Berlin Group, provozované s finAPI. Implementace počítá s již zajištěným oprávněním TPP/AIS, QWAC s příslušnou rolí a platným souhlasem klienta (`Consent-ID`). QWAC a soukromý klíč se v této verzi vkládají jako PKCS#12. Volání jsou připravena pro `/v1/accounts`, `/v1/accounts/{id}/balances` a `/v2/accounts/{id}/transactions`. Adaptér nevytváří ani neautorizuje souhlas, neprovádí SCA a neobsahuje konektor do placeného agregátoru. Nemáte-li tyto přístupy, musí se nejprve s bankou nebo licencovaným poskytovatelem vyřešit vhodný způsob napojení; pokrytí konkrétních českých účtů poskytovatelem je třeba potvrdit. Zaškrtnutí potvrzení v eBank žádné oprávnění nevytvoří. ## Synchronizace a omezení Přehled čte uloženou databázi a nečeká na bankovní servery. Tlačítka **Aktualizovat vše** a **Aktualizovat připojení** vytvářejí uložené úlohy. Prohlížeč je provádí po krocích, jeden API požadavek na krok. Zastavení nebo zavření stránky přeruší další kroky; aktuální požadavek může ještě doběhnout. Obnovte úlohu v sekci Synchronizace. Bez JavaScriptu tlačítko provede vždy jen jeden krok. První import v eBank zahrnuje posledních 90 kalendářních dnů včetně dneška; další importy mají překryv 7 dnů. Ručně lze zadat kratší období. Uložené starší pohyby zůstávají. První Fio import je rozdělen do tří 30denních požadavků, a proto musí respektovat jejich prodlevy. Historický import mimo toto rozmezí, cron/daemon a automatické pravidelné aktualizace nejsou v 0.1.0 implementovány. Záznamy se sjednocují podle účtu a ID pohybu banky. Při chybě se neposune kurzor neuloženého kroku. Úspěšné dřívější kroky zůstanou; celá nedokončená úloha se ale neoznačí za úspěšnou. Součty jsou po měnách, bez kurzového přepočtu a včetně viditelných starších údajů. Stav nepřístupnosti se nesmí zaměnit za nulový zůstatek. CSV export zahrnuje pouze právě zobrazenou stránku (100 záznamů), nikoli celou historii. Při importu CSV do Excelu zvolte UTF-8 a u identifikátorů/VS textový typ, aby Excel neodstranil vedoucí nuly. Pole nebezpečná jako vzorce se neutralizují apostrofem. ## Ukládání, zálohy a aktualizace Bankovní účty, pohyby, stav připojení a úlohy jsou v `ebank_*` tabulkách centrální MySQL/MariaDB. API tokeny, klientské klíče a souhlasy jsou šifrovány libsodium a svázány s ID připojení. Finanční transakce samotné nejsou v databázi dodatečně šifrované aplikací: zabezpečte také databázi, server a zálohy. Klíč `master.key` je v privátním adresáři `Context::dataPath()` (obvykle `app-data/ebank`) mimo měněné soubory balíčku a mimo webroot, oprávnění 0600. Alternativou je proměnná serveru `EBANK_MASTER_KEY` obsahující 64 hexadecimálních znaků. Tu nastavte před inicializací a následně ji neměňte bez řízené migrace. Změna nebo ztráta klíče bez původní hodnoty znemožní dešifrování přístupů. Klíč chraňte odděleně od databázové zálohy. Odstranění uložených přístupů v eBank nezruší token/certifikát/souhlas v bance a nesmaže dosavadní historii. Revokaci proveďte v bance. Před změnou přístupů ukončete rozpracovanou úlohu. Tentýž bankovní účet nelze započítat přes dvě různá připojení; měňte existující připojení, nezakládejte duplicitní. Aktualizace distribuuje eUpdate a instaluje eLoader. eBank nevytváří druhý aktualizační mechanismus. V balíčku nejsou žádná skutečná přístupová data. ## Stav ověření Viz `docs/TESTING.md`. Prošly PHP syntaktické kontroly, kontrolní skript eLoaderu 1.16.0 a 98 kontrol nad syntetickými odpověďmi bank / testovacím úložištěm. Náhled byl vykreslen a zkontrolován v Chromium na desktopu i mobilní šířce. **Nebyla provedena ostrá komunikace s bankami, plná instalace do vašeho eLoaderu 1.23.0 ani běh SQL na skutečném MySQL/MariaDB serveru.** Přístupy nebyly k dispozici a testovací PHP nemá pdo_mysql ani curl. V balíčku je samostatný opt-in integrační test pro prázdnou testovací MySQL databázi. Do produkce nasazujte až po ověření instalace a odsouhlasení načtených údajů s bankou. U Oberbank je nutné dořešit i přístupovou cestu a bankovně specifické chování. Náhled HTML je oddělený od aplikace, obsahuje jen smyšlená data a nikdy nevolá banky. Proklik sekcí/detailů slouží k posouzení rozhraní; formuláře v náhledu data neukládají.

Articles, citations and 9 most viewed · PIVO