Kontomierz.pl – Dodawanie wydatku przez telefon komórkowy

Jakiś czas temu zastanawiałem się nad napisaniem aplikacji, która pomoże mi ogarnąć domowy budżet. Ze względu na notoryczny brak czasu na programowanie, pomysł odsuwał się z każdym dniem. Dzisiaj w nocy (5:30) obudziłem się i nie mogłem ponownie zasnąć. Zacząłem więc szukać aplikacji webowej, która od Nowego Roku miałaby mi pomóc. Mój pomysł na tego typu aplikację narodził się już dawno temu, więc nie wątpiłem, że już ktoś taki system napisał.

Wymagania, które stawiałem przed aplikacją pomagającą w zarządzaniu budżetem domowym:

  • pełna funkcjonalność dostępna on-line przez WWW,
  • bezpłatna,
  • dobrze napisana, dobrze wyglądająca z niezłą użytecznością i czytelnością,
  • możliwość dodawania wydatków przez WWW w moim telefonie komórkowym (od razu w sklepie, a nie po 5 godzinach w domu, gdy nie pamiętam już co, gdzie i za ile kupiłem).


Przejrzałem masę aplikacji, ale już po 15 minutach miałem na liście tylko 3, które nie zniechęciły mnie na pierwszy lub drugi rzut oka. Z tych 3, które pozostały, oczywiście żadna nie umożliwiała dodawania wydatków poprzez mój telefon komórkowy. Była już dostępna aplikacja na iPhone’a i Androida, ale to mnie nie interesowało – lubię mój telefon i nie chcę go zmieniać. Okazało się, że jedna z tych aplikacji – Kontomierz.pl – udostępnia API, dzięki któremu mogę sobie dopisać wymaganą przeze mnie funkcjonalność.

Jupi!!! I tak ok. 6:30 zabrałem się za pisanie małego skrypciku… który będzie działał (i da się to sensownie obsługiwać) w mojej komórce jak każda inna mała strona WWW. Dostosowałem go tak, żeby nie wpisywać za każdym razem mojego loginu i hasła… 🙂

Poświęciłem trochę czasu, żeby inni też mogli korzystać z mojego skryptu. Niestety muszą oni podać login i hasło, ale wiele telefonów pozwala zapisać te dane, żeby nie trzeba było ich wpisywać gdy dodawany jest każdy wydatek.

Dostęp do skryptu: http://zarzadzanie-projektami-it.pl/kontomierz/ lub krócej (przydatne przy wpisywaniu na komórce) http://bepm.pl/kontomierz/.

Mam nadzieję, że komuś przyda się ten drobny skrypt. Liczę również na uwagi i propozycje rozbudowy. Dzisiaj nie miałem za dużo czasu… ale, jeżeli zbierze się kilka osób, którym przyda się nowy dodatek… 😉

Poniżej kilka kawałków kodu, które mogą przydać się innym – próbującym napisać własną aplikację łączącą się z Kontomierz.pl z poziomu PHP.

Dodawanie wydatku przez API (z użyciem PHP i curl)


$login = str_replace('@','%40', $_POST['login']);
$pass = $_POST['pass'];


$command = 'money_transactions/create_in_wallet'; // dodanie transakcji (POST)


$url = "https://{$login}:{$pass}@kontomierz.pl/{$command}.json"; // odbierz jako JSON


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // pomiń weryfikację SSL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // zwróć jako string

// buduj POST'a... opis pól na stronie API Kontomierz.pl
$data = 'money_transaction[category_id]='.strval($_POST['category_id']);
$data .= '&money_transaction[currency_amount]='.strval($_POST['currency_amount']);
$data .= '&money_transaction[currency_id]=1';
$data .= '&money_transaction[direction]=withdrawal';
$data .= '&money_transaction[title]='.strval($_POST['title']);
$data .= '&money_transaction[tag_string]='.strval($_POST['tag_string']);
$data .= '&money_transaction[transaction_on]='.strval($_POST['transaction_on']);
$data .= '&money_transaction[client_assigned_id]='.strval(mktime());


curl_setopt($ch, CURLOPT_POST, 1); // wysyłaj jako POST
curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // przekaż argumenty


$response = curl_exec($ch);
curl_close($ch);


$response = json_decode($response,true); // wcześniej zadeklarowane, że chcemy .json,

// to teraz trzeba to odkodować

// "true", żeby zwracał array, a nie obiekty

if (intval($response['money_transaction']['id'])>0)
{
// transakcja zakończona powodzeniem - wydatek dodany - nadane id
}

Pobieranie kategorii przez API (z użyciem PHP i curl)

(opisy ograniczyłem dla przejrzystości – wszystko wyjaśnione w przykładzie powyżej)

$login = 'demo%40kontomierz.pl';
$pass = 'demo123';


$command = 'category_groups'; // pobranie listy kategorii (GET)


$url = "https://{$login}:{$pass}@kontomierz.pl/{$command}.json";


$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
curl_close($ch);


$groups = json_decode($response,true);

Kontomierz.pl – Dodawanie wydatku przez telefon komórkowy
Tagged on: