Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Online-Banking selber programmieren (https://www.delphipraxis.net/182201-online-banking-selber-programmieren.html)

Tazidus 8. Okt 2014 22:43

Online-Banking selber programmieren
 
Hallo,

ich beschäftige mich zurzeit mit dem Thema Online-Banking zu Studienzwecken.

Ich finde zwar jeder Menge Infos zu Sepa / FinTS / HBCI u.a. aber nicht das was ich suche.

Ich würde gerne wissen, wie man die Verbindung zu einem Bankserver herstellt, Befehle übermittelt und Meldungen empfängt.

Mich interessiert in erster Linie die programmtechnische Umsetzung in Delphi/C++ und ich will keine API verwenden.

Außerdem interessiert mich noch die Flickergrafik, die für das ChipTAN/SmartTAN Verfahren benötigt wird.
Wie wird diese erstellt? Gibt es hierfür irgendwelche Infos? oder ggf. eine API?

Ich habe mir auch schon DDBAC uund FinTS-API angesehen. Ich habe aber hier einige Bedenken, weil
a) ich nicht weiß, wie ich diese Komponenten einbinden soll und
b) eigentlich auch die Kommunikation mit dem Server selber machen

Außerdem müsste ich noch Informationen finden, wie man eine SEPA-XML-Datei an die Bank online übertragen kann ohne sich einer Banking-Software oder einer Banking-Homepage zu bedienen.

Wer kann mit helfen oder sachdienliche Infos geben?

Vielen Dank
Gruß
Daniel

himitsu 8. Okt 2014 23:19

AW: Online-Banking selber programmieren
 
Zitat:

und ich will keine API verwenden
Egal wie, das mußt du dennoch.

Erstmal die API (also die Schnittstelle) für das SEPA, also der Aufbau der XML. Dann die API für das Übertragungsmedium, wie z.B. HTTP und TCP-IP, um es zur Bank zu schicken, eventuell auch die APIs für da DateiSystem (MSDN-Library durchsuchenCreateFile) und dann viele APIs um irgendwelche Funktionen im Delphi und Computer zu benutzten. usw.

Ob APIs nochmal in anderen Komponenten (z.B. Indy und TFileStream) versteckt sind, ist egal, denn auch diese Komponenten besitzen wieder ihre API, über welche du sie ansprechen kannst.


Beispiel:
  • Man kann eine SEPA-Komponente benutzen,
  • man implementiert das SEPA-Protokoll selber und nimmt via TIdHTTP mit einem WebServer Kontakt auf,
  • man implementiert das SEPA-Protokoll und das HTTP (Hypertext Transfer Protocol) selber und nimmt via TIdTCP mit dem WebServer Kontakt auf,
  • man implementiert das SEPA-Protokoll, HTTP und das TCP (Transmission Control Protocol) selber und nimmt via Socket-Komponente mit dem WebServer Kontakt auf,
  • man implementiert das SEPA-Protokoll, HTTP, TCP und auch das Socket-Zeugs selber,
  • oder man bastelt das SEPA-Protokoll und sogar die XML manuell als String zusammen und implementiert das HTTP, das TCP und auch noch das Socket-Zeubs selber.
  • Man kann auch noch auf die Speicherverwaltung verzichten und bastelt dann sogar die Strings selber (GetMem) und die extrem Harten verzichten sogar auf dem Delphi-Speicher-Manager und wenden sich direkt an Windows (MSDN-Library durchsuchenVirtualAlloc) und die nutzen Assembler (maschinennahe Programmiersprache) oder gleich mit'm Hexeditor geschriebenen Maschinencode, eigene Treiber und wenden sich direkt an die RAM-Riegel
    und am Ende bauen sie sich natürlich auch noch den Computer selber, nachdem sie die Rohstoffe selbst von Hand geschürft und im Keller zu Mikrochips verarbeitet haben.

Tipp: Es gibt hier bereits ein paar Themen zum Thema SEPA und da würde ich anfangen mit Suchen.

Und bevor du gleich alles selber machen willst, fang erstmal ganz unten an, implementier dir z.B. das SEPA, verwende dafür bereits vorhandene Komponenten/Funktionen
und wenn das dann geht, kannst du immernoch eine Zwischenschicht nach der Anderen entfernen, bis am Ende (in paar Jahrzehnten) alle selbstgemacht ist.
Ansonsten solltest du natürlich am anderen Ende anfangen, weil du sonst jahrelang nichts testen kannst, und findest erstmal raus, wie man Kontakt zu "irgendeinem" Webserver aufnehmen kann. (Request hinschicken und den Response empfangen <- bei HTTP das POST/GET hin und eine Antwort ala Text/XML/HTML/sonstwas zurück)

sh17 9. Okt 2014 08:51

AW: Online-Banking selber programmieren
 
Sorry, aber willst Du nur lernen oder das irgendwann mal produktiv einsetzen? Welche Bank lässt Dich denn bitte an deren Servern testen?

Hier mein Vorschlag:

https://subsembly.com/de/hbci-fints-api.html

OrNEC 9. Okt 2014 09:50

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von sh17 (Beitrag 1275351)
Sorry, aber willst Du nur lernen oder das irgendwann mal produktiv einsetzen? Welche Bank lässt Dich denn bitte an deren Servern testen?

Das habe ich auch gedacht. Nicht mal nen Drucker kannst Du einfach so in ein Bankennetz schalten. Wenn es geht, suche Dir ein einfacheres Projekt.

Captnemo 9. Okt 2014 09:59

AW: Online-Banking selber programmieren
 
Schau mal hier: DDBAC.

Muß zwar mit weitergegen werden, und auch auf dem jeweiligen Client installiert werden. Dafür ist das wunderbar von Delphi nutzbar. Gibt auch Beispiele für Delphi und eine gute Dokumentation.

Ich habe selbst schon in ein Programm integriert, und es funktioniert super. Bisher ohne auch nur einmal zu mucken. Und wenn man das erst mal verinnerlicht hat, ist es auch einfach.

Der Preis ist allerdings Hammer.

[Edit] Grad gesehen, dass du das schon kennst.

Zitat:

Zitat von Tazidus (Beitrag 1275325)
Ich habe mir auch schon DDBAC uund FinTS-API angesehen. Ich habe aber hier einige Bedenken, weil
a) ich nicht weiß, wie ich diese Komponenten einbinden soll und
b) eigentlich auch die Kommunikation mit dem Server selber machen

Aber so schwer ist das nun nicht. Wenn du das nicht verstehst, wird das mit dem direkten Datenaustausch, den du vorhast auch nix.
Ich weiß ja nicht wie das bei deiner Bank ist, aber wenn bei meiner in der Anmeldung oder dem Datenaustausch zu viele Fehler auftreten, wird mein Onlineaccount erst mal zur Sicherheit gesperrt.[/Edit]

vagtler 9. Okt 2014 10:26

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von Captnemo (Beitrag 1275361)
[...] Ich weiß ja nicht wie das bei deiner Bank ist, aber wenn bei meiner in der Anmeldung oder dem Datenaustausch zu viele Fehler auftreten, wird mein Onlineaccount erst mal zur Sicherheit gesperrt.[/Edit]

Dafür bieten die Banken und Sparkassen ja auch Testzugänge. Dass die selten kostenfrei sind, steht auf einem anderen Blatt... ;)

Sir Rufo 9. Okt 2014 10:32

AW: Online-Banking selber programmieren
 
@Captnemo

DDBAC ist dem TE bekannt (s. erster Beitrag)

Captnemo 9. Okt 2014 10:38

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von Sir Rufo (Beitrag 1275373)
@Captnemo

DDBAC ist dem TE bekannt (s. erster Beitrag)

Hatte ich ja dann auch gesehen, deswegen mein "Edit"

Valle 9. Okt 2014 13:15

AW: Online-Banking selber programmieren
 
Wenn ich eine für TE sicherlich auch nicht uninteressante Frage hinzufügen dürfte:

Angenommen man hat die Schnittstelle mit der Bank bereits (oder arbeitet meinetwegen noch daran). Wie testet man sowas? Insbesondere dann, wenn man automatische Überweisungen implementieren wollte? Ich kann ja nicht ständig Cent-Beträge überweisen. Chef würde sich freuen. :stupid:

Bietet jede Bank so einen Testzugang oder wie läuft das?

Lemmy 9. Okt 2014 13:44

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von Valle (Beitrag 1275406)
Bietet jede Bank so einen Testzugang oder wie läuft das?

zumindest die Banken, die Interesse daran haben, dass es Software fürs Onlinebanking gibt.

Ich habe bei einem Hersteller etwas in die Karten schauen dürfen. Wenn Du einen entsprechenden Zugang erhälst, dann ist da auch ein Konto dabei mit dem Du dann das gesamte Spektrum testen kannst. Welche Kosten da auflaufen weiß ich aber nicht.
Und du musst das gegen so viele Banken testen wie es geht, weil leider jeder meint, die definierte Schnittstelle individualisieren zu müssen. Von Fehlern bei der Umsetzung der Schnittstelle ganz abgesehen.

Grüße

Codehunter 9. Okt 2014 13:54

AW: Online-Banking selber programmieren
 
Ich möchte mal ganz allgemein in den Raum werfen, dass die Standardisierung von Onlinebanking-Schnittstellen doch ziemlich bescheiden ist. HBCI ist da der kleinste gemeinsame Nenner und seit der SEPA-Umstellung gibt es Probleme an allen Ecken und Enden. Denn Tatsache ist, die Banken selbst haben intern immernoch größte Schwierigkeiten mit SEPA. Wenn ich da nur an SEPA-Sammellastschriften denke, au weia. SEPA + HBCI = buggy

sh17 9. Okt 2014 15:35

AW: Online-Banking selber programmieren
 
Alles auf PayPal und Co umstellen. :duck:

vagtler 9. Okt 2014 16:57

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von Lemmy (Beitrag 1275410)
[...] Welche Kosten da auflaufen weiß ich aber nicht. [...]

Das kommt ganz drauf an. Von kostenfrei bis zu einem vierstelligen Betrag ist da alles drin.

himitsu 9. Okt 2014 19:45

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von Valle (Beitrag 1275406)
Bietet jede Bank so einen Testzugang oder wie läuft das?

Entweder sie bieten eine alternative Test-URL an, oder was häufiger vorkommt, sie definiert Test-Daten, welche man bei der normalen Adresse verwenden kann.
z.B. ein Test-Konto, welches intern keine realen Transaktionen auslöst.


Bezahlen per PayPal ist nett, aber empfangen kann teuer werden.
Und dann brauchen die für Transaktionen oftmals ganz schön lange. (ich überweise Geld auf mein Konto und erst ein/zwei Wochen später ist es da)
Oder es werden Transaktionen ohne Begründung einfach gesperrt/abgewiesen, bis hin zur Sperrung ganzer Konten.

generic 10. Okt 2014 08:47

AW: Online-Banking selber programmieren
 
Hier ist das mal in Access umgesetzt worden:
http://www.heise.de/ct/ftp/00/17/192/

Codehunter 10. Okt 2014 09:24

AW: Online-Banking selber programmieren
 
Der große Unterschied zwischen "normalen" Banken und Paypal ist: Bei Banken zahlt bei Überweisungen der Absender die Gebühren, bei Paypal der Empfänger.

Bin nicht ganz sicher aber ich glaube Paypal verbietet sogar per AGB, die Transaktionsgebühren per Vorauskalkulation auf den Absender umzulegen. (Zumindest nicht offen ausgewiesen ;) )

Jedenfalls kann man mit HBCI-fähigen Programmen richtig gut Geld verdienen, aber auch richtig bös auf die Nase fallen.

Frage bei der Gelegenheit: Bei SEPA funktionieren ja die alten Prüfsummenberechnungen von BLZ und KtoNr nicht mehr. In wiefern stellen da die Ziffern 3 und 4 der IBAN einen adequaten Ersatz dar?

sh17 10. Okt 2014 09:28

AW: Online-Banking selber programmieren
 
[OT]

Zitat:

Zitat von Codehunter (Beitrag 1275519)
Bei Banken zahlt bei Überweisungen der Absender die Gebühren, bei Paypal der Empfänger.

Geldtransfer in Euro ist gebührenfrei
https://www.paypal.com/de/webapps/mpp/paypal-fees

[/OT]

Bernhard Geyer 10. Okt 2014 09:29

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von Codehunter (Beitrag 1275519)
Frage bei der Gelegenheit: Bei SEPA funktionieren ja die alten Prüfsummenberechnungen von BLZ und KtoNr nicht mehr. In wiefern stellen da die Ziffern 3 und 4 der IBAN einen adequaten Ersatz dar?

http://de.wikipedia.org/wiki/IBAN#Va...Pr.C3.BCfsumme

PC-John 10. Okt 2014 09:57

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von Tazidus (Beitrag 1275325)
Hallo,
ich beschäftige mich zurzeit mit dem Thema Online-Banking zu Studienzwecken.
Ich finde zwar jeder Menge Infos zu Sepa / FinTS / HBCI u.a. aber nicht das was ich suche.
Ich würde gerne wissen, wie man die Verbindung zu einem Bankserver herstellt, Befehle übermittelt und Meldungen empfängt.
Mich interessiert in erster Linie die programmtechnische Umsetzung in Delphi/C++ und ich will keine API verwenden.
Außerdem interessiert mich noch die Flickergrafik, die für das ChipTAN/SmartTAN Verfahren benötigt wird.
Wie wird diese erstellt? Gibt es hierfür irgendwelche Infos? oder ggf. eine API?

Zu "Studienzwecken"? Wieso denn genau bei dieser Anwendung?

Ich war drei Jahre als PC-Techniker bei einer Grossbank, genau in jener Abteilung, welche das Online-Banking entwickelte und laufend pflegte.
Ein paar tiefere Einblicke konnte ich schon gewinnen, und die laufende Entwicklung auch verfolgen bei den internen Tests, wo (natürlich) auch unsere interne Abteilung mit eingebunden wurde.

Die entsprechenden Sicherheits-Vorkehrungen aber wurden von einem ganz kleinen Team entwickelt, welches sogar den PC-Support und den täglichen Backup in einer voll geschlossenen Umgebung machen konnte/musste.

Das heisst für mich also, dass man nur mit grösseren Schwierigkeiten an diese Details kommt, wenn überhaupt.
Währenddem zu den Anfangszeiten des Internet-Banking die Applikation noch auf dem lokalen PC lief, monatliche Updates waren die Regel, wurde schon bald aber alles in den Browser ausgelagert, damit konnte auf die regelmässigen Updates verzichtet werden, und die Funktionen konnten besser geschützt werden gegen aussen.

PC-John

Codehunter 10. Okt 2014 11:16

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von PC-John (Beitrag 1275524)
wurde schon bald aber alles in den Browser ausgelagert

Was aber nur in den einfachen Fällen ein Ersatz ist. Jede Firma mit häufigen Kontenbewegungen (z.B. Onlinehändler) werden "Browserbanking" verfluchen. Die meisten haben ja nicht mal Listenexporte. Services wie Sammellastschriften lassen sich bis heute meist nur mit den proprietären HBCI-Programmen der jeweiligen Bank realisieren. Da geht weder mit dem Browser noch mit Standard-HBCI etwas.

Tazidus 12. Okt 2014 18:58

AW: Online-Banking selber programmieren
 
Hallo,

Nachtrag.
Sorry, ich hatte mich etwas unklar ausgedrückt.
Natürlich verwende ich diverse API's.
Was ich meinte, war der Verzicht auf API's, die die Arbeit machen, die ich mir zu Studienzwecken ansehen sollte, also die Kommunikation mit dem Bank-Server.

Es geht um die Client-Server-Kommunikation.

Und als ich das Thema gehört habe, viel mir spontan Homebanking ein.

Mittlerweile habe ich erkannt, dass dies doch ein großes Problem ist. Zum einen gibt es nicht genug Infos zu diesem Thema. Und die die Infos haben, geben diese nicht bekannt oder wollen Geld.

Aber wenn ich daran denke, dass es für das Verfahren ChipTAN/SmartTAN auch noch die Flicker-Grafik programmieren müsste, bräuchte ich eine API.

Nun weiter.
Wenn ich also nicht auf die BANKING-API verzichten will, und benutze entweder die DDBAC oder die FinTS-API.

persönlich würde ich die FinTS nehmen, wo hingegen die DDBAC eher professioneller ist, wenn man bedenkt, dass selbst Lexware dieses Produkt einsetzt.

Nun egal, welche ich nehme (FinTS oder DDBAC): Wie binde ich diese in mein Programm ein und gestalte die Kommunikation.

Praktisches Beispiel:
Ich habe eine Sammellastschrift in XML erstellt (zu dem Aufbau XML gibt es zum glück Infos)
Nun will ich diese an den Bankserver übergeben.

Programmtechnische Umsetzung also für:

- klick auf einen Button startet den Vorgang
- XML-Datei wird an die API übergeben
- API nimmt jetzt Kontakt zum Server auf (Kontodaten vorher im Programm hinterlegt)
- Flicker-Grafik wird erzeugt
- TAN-Eingabe
- übermittlung der XML-Datei
- Rückmeldung von der Bank auserten.

Bitte helfen. Und nicht Sprüche wie "nimm doch Paypal". Das bringt mich nicht weiter und mein Prof. akzeptiert diese Antwort mit sicherheit auch nicht.

Konkrete Frage also an die Macher von FinTS:

- wie in Delphi einbinden
und
- wie kommunizieren?

Vielen Dank
4

Bernhard Geyer 12. Okt 2014 19:10

AW: Online-Banking selber programmieren
 
Zitat:

Zitat von PC-John (Beitrag 1275524)
Währenddem zu den Anfangszeiten des Internet-Banking die Applikation noch auf dem lokalen PC lief, monatliche Updates waren die Regel, wurde schon bald aber alles in den Browser ausgelagert, damit konnte auf die regelmässigen Updates verzichtet werden, und die Funktionen konnten besser geschützt werden gegen aussen.

Sorry, aber das ist naiv. Eine Browser-Lösung ist mitnichten sicherer als eine native Anwendung für Windows/MacOS. Es ist sogar so das es eigentlich viel einfacher ist hier die Schwächen der Implementierung zu suchen und Angriffe zu entwickeln. Die Debuggen-Möglichkeiten eines Modernen Browsers sind hier viel besser als wenn man auf Assembler-Ebene mit entsprechenden Debuggern gegen eine Win32-Exe arbeiten muss.
Eine gute Sicherheitslösung sollte es egal sein ob es über Browser ober native Apps läuft. Die API die bereit gestellt wird muss sicher sein und keine Buffer-Overflows oder ähnliches beinhalten.

Sir Rufo 12. Okt 2014 19:17

AW: Online-Banking selber programmieren
 
Auch wenn es dich verwundern wird, aber DDBAC kapselt die Banking-API und stellt dir wiederum ein API (eben auf DDBAC) zur Verfügung. Der Hersteller hat diese API dokumentiert und stellt auch Beispiele für die Integration in Delphi zur Verfügung.

Hast du dir die Beispiele schon angeschaut?

Wenn nein, warum nicht?
Wenn ja, wo klemmt es?


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz