mBank HTTP API parser pro výpis transakcí – PHP skript

PHP knihovna umí následující:

  • Přihlásit do mBank (mPeníze)
  • Vypsat všechny účty a jejich zůstatky
  • Vypsat transakce na účtě v CSV formátu
  • Vypsat transakce na účtě ve zformátovaném tvaru
  • PDF export

mbank_api.php  (staženo 285x UIP)

Ukázka použití

<?php
include 'mbank_api.php';

$mb = new mBank("vase_prihlasovaci_cislo""vase_heslo");

$ucty $mb->ucty(); // vrátí seznam účtů

$ucet '670100-2203246384';
$ucet_mtransfer '670100-2203246399';

// zůstatek na zadaném účtu
echo 'Zůstatek: '.$ucty[$ucet]['zustatek'];

// seznam transakcí za posledních 31 dní
$data $mb->transakce($ucet);

// seznam transakcí za posledních 10 dní
$data $mb->transakce($ucet, -10);

// seznam transakcí od 20.10.2010
$data $mb->transakce($ucet'2010-10-20');

// seznam transakcí od 20.10. do 1.11.
$data $mb->transakce($ucet'2010-10-20''2010-11-01');

// seznam transakcí z obou účtů seřazený podle data zaúčtování
$data $mb->transakce(
array(
$ucet$ucet_mtransfer), nullnull'zauctovani');

Upozornění

Některým lidem tento skript nefunguje - zahlásí, že máte chybné přihlašovací údaje.

Je to z důvodu, že funkce "strpos", pravděpodobně kvůli nastavení PHP / Apache, nenajde ve výstupu z mBank hledané řetězce mající diakritická znaménka.

Chybu se mi nepodařilo reprodukovat.

Edit: Dostal jsem email s řešením problému

Cena

Za trochu lásky šel bych světa kraj...

~ Jaroslav Vrchlický

Poslední zpětné linky

Changelog

17. 01. 2012 - Oprava chyby: kazilo dlouhé variabilní symboly!! + přidány PDF transakce
08. 12. 2011 - Drobné úpravy v popisu transakce
25. 07. 2011 - Změnil se tvar exportního CSV
24. 03. 2011 - Oprava v CSV parseru (někdy neukazovalo poslední transakci)
03. 01. 2011 - Funkce transakce() nyní umožňuje výpis z více účtů zároveň
02. 01. 2011 - Datum zaúčtování v timestamp formátu
12. 12. 2010 - Drobné chyby
10. 12. 2010 - Nyní funguje i při SAFE_MODE
09. 12. 2010 - Přidáno ke stažení

Komentáře

*
*
Text mezi * bude tučně.
Tom před 2 měsíci napsal:

Ahoj,

skirpt je super a funguje skvele. Dekuji!!! treba ho nekdy vyuziju ;)

Honza Čejka před 5 měsíci napsal:

Ahoj,

používám tvoje mbank api.php a moc mi pomohlo, ale nevyhovovalo mi úplně, proto jsem si ho trošku doplnil. Doplněné posílám zpátky, protože to může být pro někoho použitelné.

Ve stručnosti v čem jsou změny:

1) Potřeboval jsem výpisy v ABO formátu - už jsem na ABO formát měl předtím udělaný importní proces na serveru do mysql databáze - doplnil jsem možnost stažení ABO. To si vyžádalo funkci abo_transakce. Funkce ukládá soubor pod původním názvem (zasílaným v hlavičce) do adresáře definovaném v parametru $cesta. Pro získání a uložení původního jména je doplněn proměnná do hlavičky třídy ($response_meta_info) a dále pomocné funkce readHeader, extractCustomHeader a getHeaders

2) Doplnil jsem parametr $cookiefile na který se pak odkazuju. Tím, že provozuju php na routeru, kde je samotný script v paměti flash, tak se mi nehodilo, aby byl cookiefile ukládaný (a přepisovaný) v paměti flash. Místo toho jsem si ho pomocí proměnné nasměroval do /tmp adresáře, který je na ramdisku (čili přepisy nevadí).

Pro doplnění pár dalších poznámek k tomu, jak to mám celé nastavené:

- Script se spouští v pravidelných intervalech přes cron, pokaždé stahuje posledních 14 dní

- Stažený soubor ve formátu ABO se přes scp pomocí přihlášení přes certifikát nakopíruje na server do definovaného adresáře

- Pokud přenos souboru neproběhne, nevadí, proběhne snad příště ;-) - soubory se nemažou a skript se snaží příště poslat všechny neodeslané soubory

- Po úspěšném přenosu na server se soubor smaže a zavolá se na serveru definované php, které z "přenosového" adresáře naimportuje do db všechny platby a zpracuje je.

A proč ABO formát? Mají ho na webu dobře zdokumentovaný, je to víc "enterprise", takže doufám, že se nebudou tak moc vrtat ve formátu souboru. ;-) A je pravda, že od doby co jsem rozchodil import ABO (tak duben 2010), tak se formát souboru nezměnil. :-)

www.teplaky.net/mbank_tmp/mbank_api_abo.txt - celý skript umožňující výpisy v ABO formátu