Bug #320
offenAqbanking VOP mit hbci/chipkarte/secoder: 9010:Erneute Auftragseinreichung für VOP-Bestätigung notwendig.
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