nemiah / phpFinTS

PHP library to communicate with FinTS/HBCI servers
MIT License
130 stars 42 forks source link

Apobank new banksystem, GetStatement not working #283

Closed Chiller999 closed 4 years ago

Chiller999 commented 4 years ago

Hey! It would be perfect to support the Apobank users with the new bank system. There were many news about this and now the changes are public:

https://homebanking-hilfe.de/forum/topic.php?p=155674#real155674

What are the steps to update phpFinTS? Thanks!

ampaze commented 4 years ago

From your link it seems, that Apobank is not following the FinTs spec, ("vermurksten HBCI-Schnittstelle").

So what exactly is not working?

Chiller999 commented 4 years ago

@ampaze Thanks for your reply!

I was trying to "getSEPAAccounts" and getting the following error messages:

HKSPA (SEPA accounts) initialize [HIRMG] 9050: Die Nachricht enthält Fehler. [HIRMS] 9370: Anzahl Signaturen für diesen Auftrag unzureichend laut UPD oder BPD. Request Failed: Anzahl Signaturen für diesen Auftrag unzureichend laut UPD oder BPD. (9370); Die Nachricht enthält Fehler. (9050) Request Failed: Anzahl Signaturen für diesen Auftrag unzureichend laut UPD oder BPD. (9370); Die Nachricht enthält Fehler. (9050)

Philipp91 commented 4 years ago

Diese Fehler kommen von der alten Implementierung. Bitte versuche es mit der neuen (die man daran erkennt, dass man ein FinTsOptions-Objekt an den FinTs-Konstruktor übergeben muss). Am besten einfach mit dem Code von master hier probieren.

Chiller999 commented 4 years ago

@Philipp91 Danke dir! Werde die neue Version demnächst einspielen und mich dann nochmal melden.

Chiller999 commented 4 years ago

Jetzt bekomme ich abgehackte Umsätze per MT940. Auch in den Logdateien erkennt man, dass nur Teile übertragen werden. Korrekt würde wohl CAMT funktionieren. So habe ich es jedenfalls gerade mit anderer Bankingsoftware erfolgreich getestet.

Wie kann man dies beeinflussen? D.h. ob MT940 oder CAMT verwendet wird? Danke!

ampaze commented 4 years ago

Den Abruf per CAMT hab ich GetStatementOfAccountXML genannt.

D.h. new GetStatementOfAccountXML statt new GetStatementOfAccount.

Chiller999 commented 4 years ago

@ampaze Danke für die hilfreiche Antwort. Nun habe ich in der Logdatei schonmal die XML Datei! Aber diese beispielhaften Code-Teile lassen sich dann nicht mehr verwenden, oder?

$getStatement = \Fhp\Action\GetStatementOfAccountXML::create($account, $from, $to); $fints->execute($getStatement); $soa = $getStatement->getStatement(); foreach ($soa->getStatements() as $statement) { ... } $transaction->getBookingText();

Sprich wie kann ich dann direkt auf den XML-Inhalt zugreifen und gibt es dafür eine Klasse zum Parsen?

ampaze commented 4 years ago

Ja der Beispielcode ist nur für MT490.

Du brauchst GetStatementOfAccountXML::getBookedXML. Einen CAMT Parser gibt z.Z. hier nicht, ich parse es selbst, aber es gibt evtl. was brauchbares in den untiefen von Github ;)

Chiller999 commented 4 years ago

Danke. Dann werde ich die relevanten Daten selbst auslesen. Scheint dann doch gut zu funktionieren mit den Buchungen!