Hi,
mir ist gerade aufgefallen, dass wir bei all der Programmierung der
neuen SEPA-Geschaeftsvorfaelle in HBCI4Java eine Sache vergessen haben.
Naemlich das Eintragen der Challenge-Daten fuer das chipTAN-Verfahren
gemaess der HHD 1.4 Spezifikation.
Konkret ist das die Datei src/challengedata.xml
Ich hab das fuer die SEPA-Lastschriften mal nachgetragen:
https://github.com/willuhn/hbci4java/commit/609cd0e4a8f3bfd595fd78142d5a87b1a6140784
Hier die beiden relevanten Spezifikationen dazu:
http://www.hbci-zka.de/dokumente/spezifikation_deutsch/Belegungsrichtlinien_TANve1.4.1_final_version_vom_2013-10-04.pdf
http://www.hbci-zka.de/dokumente/spezifikation_deutsch/Belegungsrichtlinien%20TANve1.4%20-%20GV-VK-Mapping-Tabellen%202013-07-18%20final%20version.pdf
Wenn man das chipTAN-Verfahren verwenden will (bei smsTAN gilt das
nicht), muss fuer jeden TAN-pflichtigen Geschaeftsvorfall hinterlegt
sein, aus welchen Einzelwerten aus dem Auftrag und basierend auf welcher
Visualisierungsklasse das Challenge gebildet werden soll. Diese
Informationen werden dann zur Visualisierung auf dem Display des
TAN-Generators verwendet.
Die ganze Sache ist ziemlich schwer verstaendlich. Schaut euch einfach
mal die 3 neuen Klassen fuer die SEPA-Lastschriften an, die ich mit o.g.
Commit eingefuegt habe. Nach diesem Schema muesste das auch noch fuer
die anderen neuen SEPA-Geschaeftsvorfaelle nachgetragen werden, die
TAN-pflichtig sind (Dauerauftragsabruf also z.Bsp. nicht).
In Schritt 1 muss man in "Belegungsrichtlinien TANve1.4 -
GV-VK-Mapping-Tabellen 2010-10-27 final version.pdf" ermitteln, welche
Visualisierungsklasse "VK" fuer den gewuenschten Geschaeftsvorfall
verwendet wird. Anschliessend schaut man in
"Belegungsrichtlinien_TANve1.4.1_final_version_vom_2013-10-04.pdf" nach,
wie diese Visualisierungsklasse aufgebaut ist. Bei den
SEPA-Lastschriften ist das die VK 29.
Das muesste noch eingebaut werden fuer:
- GVDauerSEPADel
- GVDauerSEPAEdit
- GVDauerSEPANew
- GVTermUebSEPA
Insbesondere die Dauerauftraege sind da alles andere als einfach, weil
dort die Parameter teilweise nicht generell Pflicht ("M") bzw. optional
("O") sind sondern conditional ("C"). Das heisst, ob sie gesetzt werden
muessen oder nicht, haengt vom Vorhandensein anderer Parameter ab.
Also, falls jemand Lust hat, sich mit dieser harten Nuss zu
beschaeftigen, nur zu ;)
Gruss
Olaf