mBank API dla eksportowania transakcji i dokonywania płatności - skrypt PHP

mBank logo

Poprzez PHP skrypt można wykonać następujące czynności:

  • Zalogować się w Polskim mBank

  • Pokazać konta (osobiste i firmowe) i salda

  • Pokazać transakcje na rachunku w formie przeformatowanej

  • Exportować CSV / ABO / PDF

  • Pokazać listę ulubionych odbiorców w książce kontaktowej

  • Dokonać zapłaty z własnym opisem / VS / SS / KS na konto klienta, które jest zidentyfikowane jako "godne zaufania" w książce kontaktowej (nie wymaga potwierdzenia SMS)

Działa w PL, SK i CZ mBank.

PHP 5.3+, PHP 7

class_mbank.php
Zamówienie

Faktura i skrypt są wysyłane od razu.
Dziękuję, jestem pewien, że będziesz zadowolony :)

Przykład zastosowania

<?php
/**
* Skrypt dla mBank API
*/
include 'class_mbank.php';

$mb = new mBank("twoj_login_ID", "haslo", "PL");
// $mb = new mBank("twoj_login_ID", "haslo", "SK"); // SK mBank
// $mb = new mBank("twoj_login_ID", "haslo", "CZ"); // CZ mBank

$mb->setProfile(1); // ustaw profil firmowy (niezbędne, jeśli masz konto osobiste i biznesowe)

$accounts = $mb->getAccounts(); // lista kont i ich sald
print_r($accounts);

$account = '1234567890'// numer rachunku

$transactions = $mb->getTransactions($account, -14); // wykaz transakcji w ciągu 14 dni

$transactions = $mb->getTransactions($account, '2017-01-01', '2017-12-31'); // wykaz transakcji 2017

/*
$transactions wygląda
[1] => Array
(
   [date] => 2017-08-02 // data realizacji
   [date_accounting] => 2017-08-02 // data księgowania
   [payer_receiver] => Jan Nowak
   [payer_receiver_account] => 000000-1109080801/4000
   [description] => Płatnośc przychodząca
   [message] => 
   [ks] => 
   [vs] => 2111498
   [ss] => 
   [amount] => 3500
   [balance] => 2190751,32
)
*/

// CSV eksport w ciagu 31 dni
$csv_content = $mb->getTransactionsCSV($account, -31);

// PDF eksport od początku roku
$content = $mb->getTransactionsPDF($account, '2017-01-01');
file_put_contents('export.pdf', $content);


//---------- DOKONYWANIE PŁATNOŚCI
$contacts = $mb->getFavoriteContacts(); // lista ulubionych kontaktów i kont
$contacts[0]->amount(100.5)->pay(); // wyśle 100,50  PLN na pierwszy kontakt

// Opcja alternatywna:
$contact = $mb->findContact("Jan Nowak"); // znajdzie kontakt o tym imieniu
print_r($contact);

// wyśle 50 PLN dla "Jan Nowak" z opisem transakcji i VS
$contact->vs("012016")->title("my automated payment")->amount(50)->from("22010303")->pay();

// wyśle 120 PLN dla "Jan Nowak" z opisem transakcji i VS
$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

History Log

06.02.2019 - All good, it's working
05.02.2018 - Fix UTF-8 encoding
14.08.2017 - Payment process updated
26.06.2017 - Slight changes in name functions, all is working
15.02.2017 - Little fix if switching too much between personal/business account
16.03.2016 - You can now send payments to favorite accounts that are marked as "Trusted" in your addressbook (don't require SMS verification) ... not tested for PL and SK yet, but should work
30.11.2015 - mBank PL login page has been changed - fixed
21.10.2015 - CSV format of PL mBank updated
19.12.2014 - Added PL and tested for poland mBank
18.11.2014 - Added SK and tested for slovak mBank
27.10.2014 - New API available for fee
12.02.2014 - mBank has new internet banking
30.07.2013 - Changed CSV format
10.09.2012 - Fixed if date was bigger then today, mBank returned error
17.01.2012 - Fixed long variable symbols + added PDF export
08.12.2011 - Few fixes in transaction mesasage
25.07.2011 - CSV format changed
24.03.2011 - Fixed CSV parser
03.01.2011 - getTransactions() allows listing from several account numbers at once
02.01.2011 - Accounting date in timestamp format
12.12.2010 - Little bugs
10.12.2010 - Works in SAFE_MODE
09.12.2010 - Added to download for free

Backlinks