mBank API pro výpis transakcí a provádění plateb - PHP skript

mBank logo

Knihovna je funkční i po posledním update z cca 7.2.2019

PHP knihovna umí následující:

  • Přihlásit do mBank

  • Vypsat účty (osobní i firemní) a jejich zůstatky

  • Vypsat transakce na účtě ve zformátovaném tvaru

  • Originál export transakcí CSV / ABO / PDF

  • Vypsat seznam oblíbených příjemců v adresáři

  • Provést platbu s vlastní částkou/popisem/VS/SS/KS na oblíbený účet příjemce označeného v adresáři jako "Důvěryhodný" (nevyžaduje potvrzení SMS)

Skript simuluje klasický přístup k mBank přes web, nikoliv mobilní bankovnictví, které neumožňuje exporty a dle mých zkušeností bývá nedostupné.

Funguje pro českou, slovenskou a polskou mBank.

PHP 5.3+, PHP 7

class_mbank.php
Objednávka
(pro vlastní použití; zákaz dále šířit nebo prodávat; aktualizace dle dohody)

Fakturu zasílám obratem a skript po uhrazení, GDPR a obchodní podmínky zde.

Děkuji za podporu a jistě budete spokojeni.

Bezpečný nákup

Recenze je možno psát na firmy.cz a v případě dotazů mě kontaktujte.

Příklad použití

<?php
/**
* Ukázkový skript pro mBank API
*/
include 'class_mbank.php';

$mb = new mBank("vase_prihlasovaci_cislo", "vase_heslo");
// $mb = new mBank("vase_prihlasovaci_cislo", "vase_heslo", "SK"); // pokud jde o slovenskou mBank
// $mb = new mBank("vase_prihlasovaci_cislo", "vase_heslo", "PL"); // pokud jde o polskou mBank

$mb->setEncoding('UTF-8'); // nebo CP1250

$mb->setProfile(1); // nastaví firemní profil (nutné jen pokud máte osobní a firemní účet)

$ucty = $mb->getAccounts(); // seznam účtů a jejich zůstatky
print_r($ucty);

$ucet = '1234567890'// číslo účtu bez předčíslí

$transakce = $mb->getTransactions($ucet, -14); // seznam transakcí za posledních 14 dní

$transakce = $mb->getTransactions($ucet, '2017-01-01', '2017-12-31'); // seznam transakcí za rok

/*
$transakce vypada nějak takto:
[1] => Array
(
   [datum] => 2017-08-02 // datum uskutečnění
   [zauctovani] => 2017-08-02 // datum zaúčtování
   [platce_prijemce] => JAN NOVÁK
   [platce_prijemce_ucet] => 000000-1109080801/4000
   [popis] => PŘÍCHOZÍ PLATBA Z JINÉ BANKY
   [zprava] => 
   [ks] => 
   [vs] => 2111498
   [ss] => 
   [castka] => 3500
   [zustatek] => 2190751,32
)
*/

// originál CSV export za posledních 31 dní
$csv_obsah = $mb->getTransactionsCSV($ucet, -31);

// příklad PDF exportu od začátku roku
$obsah = $mb->getTransactionsPDF($ucet, '2017-01-01');
file_put_contents('export.pdf', $obsah);


//---------- PROVEDENÍ PLATBY
$contacts = $mb->getFavoriteContacts(); // seznam oblíbených kontaktů a účtů
$contacts[0]->amount(100.5)->pay(); // pošle 100,50 CZK na první kontakt

// NEBO takto:
$contact = $mb->findContact("Jan Novák"); // najde kontakt s tímto jménem
print_r($contact);

// pošle 50 Kč na "Jan Novák" s popisem transakce a VS, z účtu 22010303/6210
$contact->vs("012016")->title("my automated payment")->amount(50)->from("22010303")->pay();

// pošle 120 Kč na "Jan Novák" s popisem transakce a VS, z výchozího účtu
$contact->vs("022016")->title("my automated payment 2")->amount(120)->pay();


/**
* FUNCTION LIST SUMMARY
*/
void $mb->setEncoding( string $encoding ) // default is UTF-8, can be CP1250 etc.
bool $mb->setProfile( int $profile_id ) // sets personal or company profile
array $mb->getAccounts() // list of account numbers and totals
array $mb->getTransactions( string $account_number, int $x_days_ago ) // gets all the transactions
array $mb->getTransactions( string $account_number, string $date_from )
array
$mb->getTransactions( string $account_number, string $date_from, string $date_to )
string $mb->getTransactionsCSV( ... ) // same parameters as transactions() - returns CSV text
string $mb->getTransactionsPDF( ... ) // same parameters as transactions() - returns PDF file
string $mb->getTransactionsABO( ... ) // same parameters as transactions() - returns ABO file
array $mb->getFavoriteContacts() // returns favorite contacts

// Finds favorite contact (if that contact name has more bank accounts also input $bankAccountName)
object $contact = $mb->findContact( string $contactName, string $bankAccountName = null)
$contact->from( string $account_number) // sets payer account (not needed, first available will be used)
$contact->ss( string $specific_symbol ) // sets specific symbol
$contact->vs( string $variable_symbol ) // sets variable symbol
$contact->ks( string $constant_symbol ) // sets constant symbol
$contact->title( string $payment_description ) // sets payment text
$contact->amount( float $amount) // sets payment amount
$contact->pay() // executes the payment

Bezpečnost

Bezpečnost je zajištěna tím, že většinu operací v bance je nutno autorizovat přes SMS.
Samozřejmě ten, kdo má přístup ke skriptu, bude mít přístup také k heslu a tedy k bankovnictví.

Historie změn

06.02.2019 - Vše funkční
05.02.2018 - Úprava UTF-8 kódování
14.08.2017 - Změna při provádění platby
26.06.2017 - Drobné změny v názvu funkcí, jinak vše funguje
15.02.2017 - Drobný fix při častém přepínání profilu z firemního na osobní
07.05.2016 - API pro EquaBank
16.03.2016 - Možnost provádění plateb na oblíbené kontakty
30.11.2015 - mBank PL login page has been changed - fixed
21.10.2015 - CSV format of PL mBank updated
20.06.2015 - Drobná oprava u SK mBank
19.12.2014 - Přidán argument PL a otestováno pro polskou mBank
18.11.2014 - Přidán argument SK a otestováno pro slovenskou mBank
27.10.2014 - K dispozici nové API za poplatek
12.02.2014 - mBank přechází na nové rozhraní... staré prý bude do dubna...
30.07.2013 - Změna CSV formátu
10.09.2012 - Oprava: pokud datum $do byl větší než dnes, pak mBank vracela chybu
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í zdarma

Poslední zpětné linky