AqBanking

Aus OrgaMon Wiki
Zur Navigation springen Zur Suche springen

Ziel

Linux-basierter REST-Server-Dienst. Wrapper für grundlegende "AqBanking Rev. 3.x" Funktionen.

  1. Umsätze abrufen (./UMSATZ)
  2. Sammel-Lastschriften durchführen (./LASTSCHRIFT)
  3. OPTIONAL: (Termin-)Überweisungen durchführen (./UEBERWEISUNG)

Die Buchführung des OrgaMon kann "externe" Konten via Webserices (vorzugsweise REST) integrieren. Dadurch werden Giro-Konto-Buchungen direkt im OrgaMon sichtbar. Systematischer Aufbau des Server-Dienstes.

Datei:Aqbanking.png

notwendige Implementierungen

  • aqbd - der aqbanking dämon. Muss notwendigerweise als Dämon programmiert werden da z.B. das Mehrstufige TAN Verfahren mehrere REST-Zyklen benötigt und die Verbindung zur bank dazwischen nicht unterbrochen werden darf, insbesondere beim iTAN Verfahren.
  • aqbc - das aqbanking command line interface. Kommuniziert mit aqbd via DBUS. aqbc reicht nur Anfragen zu neuen oder laufenden Jobs an den dämon weiter.
  • ./aqbanking/ - der RESTful webservice. wird in PHP programmiert und ruf im Wesentlichen das Programm aqbc.

DBUS

D-Bus bereitstellen

D-Bus rufen

#include <stdio.h>
#include <stdlib.h>
#include <dbus/dbus.h>
int main(int argc, char **argv)
{
DBusConnection *conn;
DBusMessage *msg, *reply;
const char *name;
conn = dbus_bus_get(DBUS_BUS_SYSTEM, NULL);
msg = dbus_message_new_method_call("org.bluez", "/org/bluez/hci0",
"org.bluez.Adapter", "GetName");
reply = dbus_connection_send_with_reply_and_block(conn, msg, -1, NULL);
dbus_message_get_args(reply, NULL, DBUS_TYPE_STRING, &name, DBUS_TYPE_INVALID);
printf("%s\n", name);
dbus_message_unref(msg);
dbus_message_unref(reply);
dbus_connection_close(conn);
return 0;
}

Meilensteine

  1. Linux-Anwendungsebene: QBankingManager installieren (Erfolg: 21.02.2008)
    1. ein Giro-Konto abfragen um zu sehen, ob das Teil funktioniert (Erfolg: 21.02.2008)
    2. Transaktion "Konto-Umsatz-Abfrage" ausprobieren! (Erfolg: 21.02.2008)
    3. Transaktion "Sammel-Lastschrift" (DTA) ausprobieren! (Geht nicht! Nur Einzeln)
  2. Linux-Programmierebene: "aqbanking 3" versuchen zu compilieren (Erfolg: 19.02.2008)
  3. Mini-Programm Konsolen-Programm erstellen das z.B. die Kontenliste auf den Schirm bringt (Erfolg: 22.02.2008)
  4. AH_Job_GetBalance ("~kto~.~blz~") : double (aufgegeben, wir können das ergebnis nicht parsen)
  5. AH_Job_GetTransactions ("~kto~.~blz~","20.02.2008") : (Erfolg: 28.02.2008)
  6. AH_Job_MultiDebitNode_new (Achtung schwierig: "Multi-Job" + "TAN" notwendig + DTAUS Importer verwenden!)
    pefersingletransfer 0x00000001 : Einzelüberwisung, bevorzugt, für uns unwichtig
    prefersingledebitnote 0x00000002 : Ist default, wird einfach aus der settings.conf entfernt, SingleDebinote gibt es nicht bei VoBa!
  7. Erfolgreiche auftragsübertragungbis zur TAN-Abfrage über den Passwort-Callback!!(05.03.2008)
  8. Re-Enginierung der techniken zu 2+3 anhand der Quelltexte "QBankingManager" oder altes "aqbanking-tool"
  9. REST-Server in PHP verwirklichen, ruft das neue cmd-tool
  10. REST - Mappings definieren auf ein nun fertiges "aqbc"-Programm das in C programmiert ist.
  11. Integration in den OrgaMon
  12. Grosse Kick-Off-Party für DDBAC

Verwendung von DDBAC, DataDesign

funktioniert seit 2002, wird aber wegen der Lizenzbestimmungen von DataDesign nur in der Entwicklerversion als Machbarkeitsdemonstration verwendet.

Verwendung von Aqbanking 3

bisherige Implementierungen

leider basiert die Implementierung auf "aqbanking 2" das nicht weiterentwickelt wird. In "aqbanking 3" das wir verwenden wollen ist das Kommandozeilen-Tool "aqbanking-tool" nicht mehr vorhanden.

aktuelle Implementierung

  • aqbanking.3.2.1
  • gwen.3.1.1

WARNING: pre pre Alpha (Hardcoded PIN for ex.)

http://orgamon.org/abtest.c.txt

REST-Implementierung

Umsatz

Anfrage:

./UMSATZ/~BLZ~/~KONTO#~/2008-02-28?f=text

Antwort:


  • Mapping csv<->Aqbanking
       // Zuordnungen, die in kommender aqbanking-Version beinhaltet sind
       ?? -> date (BuchungsDatum )
       ?? -> transactionType (Beispiel: "NSTO","NMSC","NCHK")
                   NSTO Überweisung
                   NMSC Einzug
                   NCHK Scheck
       ?? -> valutaDateRaw (Beispiel: 200208, also 20.02.2008)

       // Zuordnungen gefunden
       remoteBankCode
       remoteAccountNumber
       remoteName
       valutaDate.date
       value.value
       value.currency
       textKey
       transactionText
       primanota
       purpose

Sammellastschrift

Anfrage:

POST ./LASTSCHRIFT/~BLZ~/~Konto~

mit einem http-Upload der DTA-Datei!

Antwort:

  • die Antwort ist aus Ablaufgründen ein html-Formular:
Nun bitte die 34. TAN   [______]
(Ausführen)
  • iTAN: Ist das iTAN Verfahren gewählt, so muss vom Server vor Anzeige der Antwort zunächst die Index-Nummer der iTAN abgefragt werden
  • DTA: Dem Dienst muss die Sammel-Lastschrift Datei übertragen werden. Dabei wird auf das bewährte DTA-Format gesetzt
  • "POST" (=Button "Ausführen") schickt die Daten nun zum Server, dann erst erfolgt die eigentliche Arbeit

Termin-Überweisung

-- noch kein Bedarf --

Nebenprojekt von Andreas

Versuch mit aqbanking 2.3

http://ftp.gwdg.de/pub/linux/packman/suse/10.3/i586/

Anleitung zum Nachvollziehen des Projektes

aqbanking compilieren

  1. gwen dingens ...
  2. aqbanking dingens ...

./configure --disable-chipcard-client --with-frontends=""

Vermischtes

Kleine Anleitung für entwickler entdeckt, leider offensichtlich nicht ganz aktuell

http://www.aquamaniac.de/apidoc/aqbanking/G_APP_INTRO.html

Sieht fast so aus, ls sei die Funktion AB_Banking_EnqueueJob() in der neuen Version nichtmehr vorhanden!! Anscheinen wurde sie von der JobList2 Verdrängt (??) http://www.aquamaniac.de/apidoc/aqbanking/listdoc_8h.html#afb08a006da8e45b8aaec3d1b8379ca9