nemiah / phpFinTS

PHP library to communicate with FinTS/HBCI servers
MIT License
131 stars 40 forks source link

Rückmeldung, ob meine XML-Daten korrekt sind #278

Closed 2nd-Moon closed 2 months ago

2nd-Moon commented 4 years ago

Hi, die Übermittlung von Lastschriften funktioniert schon ganz gut.

Wenn ich eine XML-Datei für DirectDebit übermittel, bekomme ich ein "Nachricht wurde übermittelt" oder sowas in der Art. Wie komme ich jetzt an eine Fehlermeldung der Bank ran? Also z.B. IBAN ist inkorrekt oder Datum der Lastschrift ist zu kurzfristig. Hat hier jemand einen Tipp?

ampaze commented 4 years ago

Die Bank wird nicht mit Nachricht wurde übermittelt antworten wenn es einen Fehler gab.

Wenn es einen Fehler gibt, solltest du eine entsprechende ServerException bekommen. Probier es am besten mal aus.


Edit: Ob du eine direkte Fehlermeldung bekommst hängt ggf. von der Menge der Lastschriften ab. Bei der GLS ist es so, dass bis zu 500 Lastschriften synchron abgearbeitet werden, d.h. der gesamte Auftrag / Sammler wird abgelehnt wenn eine Lastschrift fehlerhaft ist. Alles darüber wird erstmal angenommen und man muss selber nachfragen ob es geklappt hat.

Die konkrete Anzahl lässt sich je nach Bank hier auslesen: https://github.com/nemiah/phpFinTS/blob/13f4c5f5e85af9fcb30ec52bcc85069edae98936/lib/Fhp/Segment/DME/ParameterTerminierteSEPASammellastschriftEinreichenV2.php#L8

2nd-Moon commented 4 years ago

Hi, ich habe mal absichtlich die IBAN eine Stelle zu kurz übermittelt. Es wird trotzdem "Nachricht entgegengenommen.Auftrag ausgeführt." gemeldet. Ich habe nur eine einzige Lastschrift übermittelt. Das ist die Postbank. Es muss also noch eine andere Möglichkeit über die Schnittstelle geben, Fehler und den Status Verarbeitung abzurufen. Nur wie?

ampaze commented 4 years ago

Dann prüft die Postbank deinen Auftrag wohl nicht direkt beim Einreichen.

Evtl. ist C.10.4.3 SEPA-Statusreport was du suchst.

Der Kunde ruft zu einer Auftragsidentifikation oder einem Zeitraum SEPAStatusreports ab.

Details dazu hier

https://www.hbci-zka.de/dokumente/spezifikation_deutsch/fintsv3/FinTS_3.0_Messages_Geschaeftsvorfaelle_2015-08-07_final_version.pdf

Diesen Geschäftsvorfall musst du dann selbst implementieren.

2nd-Moon commented 4 years ago

In dem PDF habe ich auch schon gesucht. Aber super, das ich genau der Vorgang den ich brauche. Muss ich dann mal schauen. danke.

2nd-Moon commented 4 years ago

Mich wundert, dass das andere User gar nicht brauchen. Manche Banken lehnen den gesamten Auftrag wohl schon gleich ab.

ampaze commented 4 years ago

Mich wundert, dass das andere User gar nicht brauchen. Manche Banken lehnen den gesamten Auftrag wohl schon gleich ab.

Ja, der Großteil der Banken würde ich mal vermuten/hoffen.


Vlt wird auch unterschieden zwischen Einzellastschrift und Sammellastschrift.

Du könntest mal in SendSEPADirectDebit.php

// If the PAIN message contains a control sum, we should use it, if the bank also supports it
if ($useSingleDirectDebit && !is_null($this->ctrlSum) && !is_null($bpd->getLatestSupportedParameters('HIDMES'))) {
    $useSingleDirectDebit = false;
}

auskommentieren und es nochmal mit einer syntaktisch falschen IBAN probieren.

2nd-Moon commented 4 years ago

Danke für den Tipp. Soweit bin ich in dem Code nicht Zuhause, dass ich dort in der Schnittstelle Änderungen machen kann. Es gab aber leider keine Veränderung der Rückmeldung. Er sagt immer noch "Auftrag ausgeführt."