Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Access own bank account via self-written application

I have used MS Money for several years now and due to my "coding interest" it would be great to know where to start learning the basics for programming such an application. Better to say: Its not about how to design and write an application, its about the "bank details". (Just displaying the amount of a certain bank account for the beginning would be a pleasant aim for me.).

I would like to do it in C++ or Java, since I'm used to these languages.

Will it be "too big" for a hobby project? I do not know much about all the security issues, the bank server interfaces/technique, etc.

At the first place after a "no" I need a reliable source for learning.

like image 678
InsertNickHere Avatar asked Jun 28 '10 20:06

InsertNickHere


4 Answers

Most of the apps I've worked with read in a file exported from the bank's website, which is relatively straight forward.

If that's the road you're looking to go down you'll need to write code to:

  • Login to the bank's website to download the file via HTTPS
  • Either get specs for the file format or reverse engineer it
  • Apply whatever business rules you choose to the resulting data
like image 75
Angelo Genovese Avatar answered Nov 07 '22 05:11

Angelo Genovese


The first thing to remember when trying to programmatically interact with a banking website without express written permission from the bank will MOST LIKELY be a violation of the website use agreement, and may land you in more trouble than it's worth.

Second, you DON'T want to start 'learning' programming by trying to tackle something that massive and sensitive. Not that there is anything wrong with the eventual goal, but that's a journey of a thousand leagues and you need to take your first step.

I would say start with a simple programming environment, like python, or perl. Reason, you don't have to worry about linking, libraries, code generation etc. Get used to the basics of what you want to achieve functionally, them reimplementing that in C++ or Java would be the next step.

To begin with focus on learning client-server programming.

Write a client, write a server, learn all about sockets, learn all about TCP programming,

then learning about secure socket layers (SSL) and transport layer security (TLS).

Once you've done this, try switching to C++ or Java and see if you can repeat the effect.

There are TONS of tutorials on these topics.

Once you have become used to that, learn what tools and libraries are already available to do most common things. For example libcurl is great for creating common internet application protocol clients (HTTP, HTTPS, FTP and the like).

See if you can create an interactive program that you can "log in to" using your web browser which outputs stuff in XML and formats it using cascading style sheets.

This should lead you into javascript world, where there are powerful tools such as jquery. If you mix and match these correctly, you will find that development can be a LOT of fun and quite rapid.

:-)

Happy journeying.

like image 41
Elf King Avatar answered Nov 07 '22 03:11

Elf King


I think its quite a reasonable hobby project; start with a simple ledger and then you can add features.

A few things I would do to begin such a project:

  • Decide on an initial feature set. A good start might be just one of the ledgers/accounts - basically balancing a checkbook. Make this general enough that you can have several.
  • Design a data model. What fields will your ledger have? What restrictions on the values of each?
  • Choose technologies. What language do you want to program in? How will you persist the data? What GUI do you want - a fat client like MS money or a web app?

From there, write up some design notes if warranted and start coding!

like image 25
G__ Avatar answered Nov 07 '22 03:11

G__


You might look into OFX4J, an implementation of the Open Financial Exchange specification, mentioned here and in a comment by @nicerobot.

like image 25
trashgod Avatar answered Nov 07 '22 04:11

trashgod