Closed blacktoby closed 5 years ago
Dein Fehler ist vermutlich, dass du als TAN-Verfahren in "NEED_PT_SECMECH" pauschal "902" zurücklieferst, du also davon ausgehst, dass dieses TAN-Verfahren bei der Bank existiert.
Das ist falsch. Stelle sicher, dass du den Callback HBCICallback.NEED_PT_SECMECH mit einem TAN-Verfahren beantwortest, welches auch in de uebergebenen Liste enthalten ist. Du musst schon auch die Werte pruefen, die in dem Callback zur Auswahl angeboten werden und nicht pauschal ein gespeichertes verwenden.
Identisch zu Issue #27
Danke für die schnelle Antwort. Ich habe natürlich die übergebene Liste gesehen und die Werte geprüft!! Das war die Antwort:
901:mobileTAN-Verfahren|902:photoTAN-Verfahren
Daher ist die Antwort die ich zurück gebe richtig.
Dann weiss ich es leider auch nicht. Deinem Log kann man die Ursache nicht entnehmen, da du die Logausgaben von HBCI4Java selbst scheinbar nicht loggst. Versuche den Account zum Vergleich mal in Hibiscus anzulegen. Im Forum unter https://homebanking-hilfe.de/forum/index.php?f=33 findest du sicher auch passende Threads zur Comdirect.
Ich logge HBCI4Java schon, durch den log - Callback des HBCICallback. Alle Ausgaben mit dem Pfad "de.bankdataimport.HBCICallback" können auch aus dem HBCI Kernel kommen. Gibt es noch einen anderen Weg auf dem die Library loggt?
HBCI4Java loggt nur ueber den Callback. In deinen Logs habe ich diese Ausgaben aber nicht gesehen. Wie dem auch sei. Teste mal Hibiscus. Dort kannst du ja verifizieren, ob HBCI4Java grundsaetzlich funktioniert. Hibiscus verwendet das ja intern ebenfalls.
Hallo @blacktoby,
ich weiß nicht, ob das Problem bei dir noch aktuell ist, aber da ich auch gerade an diesem Punkt war, hier schnell meine Lösung: Die in deinem Error-Log enthaltene Message "message has no signature" bzw. "Nachricht ist nicht verschlüsselt" zeigt an, dass die TAN fehlt.
Das Problem liegt in den Zeilen:
case NEED_PT_PHOTOTAN:
log.debug("NEED_PT_PHOTOTAN");
matrixCode = MatrixCode.tryParse(retData.toString());
try {
log.debug("photo type: {}", matrixCode.getMimetype());
FileUtils.writeByteArrayToFile(new File("phototan.jpg"), matrixCode.getImage());
} catch (IOException e) {
log.debug("Error writing phototan: {}", e.getMessage());
}
retData.replace(0,retData.length(),"");
break;
Du lieferst in der letzten Zeile vor dem break
in retData
einen leeren String zurück.Stattdessen solltest du das in phototan.jpg
gespeicherte Bild anzeigen, und den User die zugehörige TAN (als String) eingeben lassen. Diese gehört dann in retData
.
@fmux Das war nicht das Problem. Ich habe falsche Daten an die Bank übergeben, also ein einfacher ''Leichtsinnsfehler''. Zwar stimmt was du schreibst, doch war ich noch dabei das Bild überhaupt zu empfangen.
Na dann schön, dass es doch noch geklappt hat :)
Es zeigt allerdings, dass die Fehlermeldung mit der fehlenden Signatur bzw. Verschlüsselung noch etwas nichtssagender ist als gedacht...
Liebe Entwickler, ich habe meinen Bankimport nach der PSD2 Änderung auf PhotoTan umgestellt. Leider funktioniert das erzeugen, des HBCIHandler Objektes nicht mehr.
Der komplette Log: error.log
Meine Callback-Klasse:
Funktionen zum Bauen des Handlers:
Die Frage ist: Was mache ich falsch? Ich bin bei der comdirect und habe dort schon über Probleme gelesen und daher auf Version 3.1.13 des hbci4j-core geupdated.
Ich liefere gerne noch mehr Informationen!
Grüße