Projekt

Allgemein

Profil

Aktionen

Bug #320

offen

Aqbanking VOP mit hbci/chipkarte/secoder: 9010:Erneute Auftragseinreichung für VOP-Bestätigung notwendig.

Von ErwinRieger vor etwa 13 Stunden hinzugefügt. Vor etwa 6 Stunden aktualisiert.

Status:
Feedback
Priorität:
Normal
Kategorie:
AqBanking
Beginn:
16.10.2025
Abgabedatum:
Betriebssystem:
Linux
AqBanking-Version:
Git 132660f088b5aaeaf9154103ed02e71ebdc0b353 vom 16.10.25
Anwendung:
aqbanking-cli
Version der Anwendung:
AqBanking-CLI: 6.7.1 Gwenhywfar : 5.13.0.0 AqBanking : 6.6.4.0

Beschreibung

Hallo, ich versuche gerade eine sepa-einzelüberweisung bei der Volksbank Allgau-Oberschwaben (VBAO) zu
machen. Zugriff mit VOP über HBCI/Chipkarte/Secoder.

Nachdem der VOP-abgleich durchgeführt wurde, bekomme ich die folgende fehlermeldung und die transaktion wird abgebrochen:

HBCI: 9010:Erneute Auftragseinreichung für VOP-Bestätigung notwendig.

Dabei ist es egal, ob ein MATCH oder ein CLOSE-MATCH vorliegt.

Logdateien:
a_log_2.txt: Versuch mit ganzem empfängernamen, MATCH
a_log_4.txt: Versuch mit kurzem empfängernamen, CLOSE_MATCH

Laut FinTS_3.0_Messages_Geschaeftsvorfaelle_VOP_1.01_2025_06_27_FV.pdf, muss in diesem fall wohl der
auftrag erneut eingereicht werden. Siehe kapitel "E.8.2 VOP mit Kryptographie und ggf. Secoder", dort steht:

...werden HKVPA und der Zahlungsauftrag und die (Secoder-)Signatur immer zusammen eingereicht. Der HKVPA gilt
hier als die Bestätigung, dass der Auftrag ausgeführt werden soll.

Als workaround habe ich folgende änderung in cbox_vophbci.c eingebaut:

diff --git a/src/libs/plugins/backends/aqhbci/applayer/cbox_vophbci.c b/src/libs/plugins/backends/aqhbci/applayer/cbox_vophbci.c
index 05b4a69d..5d8d4f88 100644
--- a/src/libs/plugins/backends/aqhbci/applayer/cbox_vophbci.c
+++ b/src/libs/plugins/backends/aqhbci/applayer/cbox_vophbci.c
@@ -313,8 +313,14 @@ AH_JOBQUEUE *_createQueueForStage2(AB_USER *user, AH_JOB *vppJob, AH_JOB *vpaJob
     }
   }

-  if (vppJob && workJob) {
-    if (!AH_Job_HasResultWithCode(vppJob, 25) && !!AH_Job_HasResultWithCode(vppJob, 20)) {
+  if (vppJob && workJob && (AH_Job_HasResultWithCode(vppJob, 20) || AH_Job_HasResultWithCode(vppJob, 3090))) {
+
+    int resend = !AH_Job_HasResultWithCode(vppJob, 25);
+    if (!resend && getenv("AQ_VOP_FORCE"))
+      DBG_ERROR(AQHBCI_LOGDOMAIN, "_createQueueForStage2: force-hack active!!!");
+      resend = 1;
+
+    if (resend) {
       /* result "MATCH" not found, need to add workJob again */
       AH_Job_Attach(workJob);
       rv=AH_JobQueue_AddJob(jobQueue, workJob);

Nun kann ich das erneute versenden des auftrages mit hilfe der umgebungsvariable AQ_VOP_FORCE erzwingen.

Logdateien:
a_log_5.txt: Versuch mit ganzem empfängernamen, MATCH (bricht später ab wegen bug-xxx-kommtnoch)
a_log_6.txt: Versuch mit kurzem empfängernamen, CLOSE_MATCH (läuft durch, überweisung erfolgreich)


Dateien

a_log_2.txt (30,8 KB) a_log_2.txt Versuch mit ganzem empfängernamen, MATCH ErwinRieger, 16.10.2025 15:58
a_log_4.txt (32,8 KB) a_log_4.txt Versuch mit kurzem empfängernamen, CLOSE_MATCH ErwinRieger, 16.10.2025 15:59
FinTS_3.0_Messages_Geschaeftsvorfaelle_VOP_1.01_2025_06_27_FV.pdf (930 KB) FinTS_3.0_Messages_Geschaeftsvorfaelle_VOP_1.01_2025_06_27_FV.pdf ErwinRieger, 16.10.2025 16:19
a_log_5.txt (33,8 KB) a_log_5.txt Erneutes senden, versuch mit ganzem empfängernamen, MATCH, sepa-transaktion NOTOK ErwinRieger, 16.10.2025 16:29
a_log_6.txt (35,7 KB) a_log_6.txt Erneutes senden, versuch mit kurzem empfängernamen, CLOSE_MATCH, sepa-transaktion OK ErwinRieger, 16.10.2025 16:31
Aktionen #1

Von ErwinRieger vor etwa 13 Stunden aktualisiert

bug-xxx-kommtnoch = Bug #321

Aktionen #2

Von martin vor etwa 6 Stunden aktualisiert

Moin,

die Specs habe ich natuerlich, aber danke ;-)

+  if (vppJob && workJob && (AH_Job_HasResultWithCode(vppJob, 20) || AH_Job_HasResultWithCode(vppJob, 3090))) {
+
+    int resend = !AH_Job_HasResultWithCode(vppJob, 25);
+    if (!resend && getenv("AQ_VOP_FORCE"))
+      DBG_ERROR(AQHBCI_LOGDOMAIN, "_createQueueForStage2: force-hack active!!!");
+      resend = 1;
+
+    if (resend) {
       /* result "MATCH" not found, need to add workJob again */
       AH_Job_Attach(workJob);
       rv=AH_JobQueue_AddJob(jobQueue, workJob);

Was mir hier auffaellt: Da Du keine geschweifte Klammer gesetzt hast, wird

resend = 1;

immer ausgefuehrt.

Das Ergebnis ist aber trotzdem korrekt, sollte aber einfacher zu erreichen sein: In E.8.2 steht ja, dass immer auch der workJob in die Queue gestellt werden muss, also habe ich das mal so eingebaut. Geht das mit der aktuellen GIT Version bei Dir auch?

Gruss
Martin

Aktionen #3

Von martin vor etwa 6 Stunden aktualisiert

  • Status wurde von New zu Feedback geändert
Aktionen

Auch abrufbar als: Atom PDF