Bug #56
geschlossenUnescaped "&" in Accountinhaber-Namen führt zu invalidem SEPA-XML und Abbruch von sepatransfers
Beschreibung
Der Befehl aqbanking-cli sepatransfers --infile=...csv
scheitert bei mir in der aktuellen Version 5.99.30 mit folgenden Meldungen (Sparkasse Bochum, 43050001):
9010 XML-EXCEPTION 9010 Systemfehler,der Auftrag konnte nicht ausgeführt werden
Die Ursache dafür scheinen "&"-Zeichen im Namen des Account-Inhabers (z.B. "FOO & BAR") zu sein, der in den SEPA-XML Feldern InitgPty/Nm
und Dbtr/Nm
"unescaped" übergeben wird (siehe [1]).
Die beiden Felder werden in sepa.c:327
bzw. sepa_pain_001.c:102
gesetzt:
https://github.com/aqbanking/aqbanking/blob/995b2d7e47272fbbb1eea2f6f908a0fab62efb17/src/libs/plugins/imexporters/sepa/sepa.c#L327
https://github.com/aqbanking/aqbanking/blob/995b2d7e47272fbbb1eea2f6f908a0fab62efb17/src/libs/plugins/imexporters/sepa/sepa_pain_001.c#L102
Zu Testzwecken habe ich mit meinen eher rudimentären C-Kenntnissen an o.g. Stellen das "&
" durch "&
" ersetzen lassen.
Damit kompiliert ließ sich aqbanking-cli sepatransfers
dann erfolgreich ausführen.
Evtl. können aber auch weitere Felder wie Cdtr/Nm
(remoteName
), RmtInf/Ustrd
(purpose
) betroffen sein?
[1] An die Bank übermitteltes XML (Auszug aus config/backends/aqhbci/data/banks/de/43050001/logs/
)
<?xml version="1.0" encoding="UTF-8"?> <Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.003.03"> <CstmrCdtTrfInitn> <GrpHdr> <InitgPty> <Nm>FOO & BAR</Nm> </InitgPty> <!-- ... --> </GrpHdr> <PmtInf> <Dbtr> <Nm>FOO & BAR</Nm> </Dbtr> <!-- ... --> </PmtInf> </CstmrCdtTrfInitn> </Document>
Von martin vor fast 6 Jahren aktualisiert
- Zugewiesen an wurde auf martin gesetzt
- Priorität wurde von Normal zu High geändert
Von martin vor fast 6 Jahren aktualisiert
- Status wurde von New zu Resolved geändert
Sollte im GIT behoben sein.
Kannst Du das mal testen?
Von cmenke vor fast 6 Jahren aktualisiert
Vielen Dank für das schnelle Update und sorry für die späte Rückmeldung – hatte erst jetzt Gelegenheit (und neue Überweisungen) zum Neu-Kompilieren und Testen.
Der XML Pfad CstmrCdtTrfInitn/PmtInf/Dbtr/Nm
wird in der neuen Version richtig escaped und schaut jetzt gut aus.
Lediglich in CstmrCdtTrfInitn/GrpHdr/InitgPty/Nm
wird "&" noch unescaped ausgegeben.
Ich glaube dafür ist diese Stelle in sepa.c:327
verantwortlich, die im aktuellen master-branch noch GWEN_XMLNode_SetCharValue
nutzt: https://github.com/aqbanking/aqbanking/blob/12efe1ea3f6056fc6109a82ce529fea86f8aaab2/src/libs/plugins/imexporters/sepa/sepa.c#L327
Von martin vor fast 6 Jahren aktualisiert
- Status wurde von Resolved zu Closed geändert
Danke, ist jetzt behoben.