Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Probleme mit Terminüberweisungen #445

Open
seem2810 opened this issue Jul 15, 2024 · 15 comments
Open

Probleme mit Terminüberweisungen #445

seem2810 opened this issue Jul 15, 2024 · 15 comments

Comments

@seem2810
Copy link
Contributor

seem2810 commented Jul 15, 2024

Hallo zusammen,

ich habe leider ein Problem, wenn ich mehrere Überweisungen terminiert schicken möchte.
Bei mehreren Überweisungen meckert er, dass er den PARSER nicht verarbeiten kann.
Bei einer einzelnen darf das Ausführungsdatum nicht belegt sein.

Hat hier jemand Erfahrung damit, mehrere Überweisungen terminiert an die Bank (ohne EBICS) zu senden?

Mein Code:

 $transfer = new SEPATransfer([
            'paymentInitiation' => 'pain.001.001.03',
            'messageID' => 'dce-' . $directCreditExport->id,
            'paymentID' => 'dce-' . $directCreditExport->id,
        ]);

        $transfer->setDebitor(new SEPADebitor([
            'name' => config('setting.site.company'),
            'iban' => $this->bank->getIBAN(),
            'bic' => $this->bank->bic,
        ]));

        foreach ($directCreditExport->direct_credits()->get() as $directCredit) {
            if (!$directCredit->due_date) $directCredit->due_date = new \DateTime();

            if (!$directCredit->bank_partner) continue;
            $name = $directCredit->bank_partner->name;
            if (empty($name) && $directCredit->incoming && $directCredit->incoming->supplier) $name = $directCredit->incoming->supplier->getName();
            if (empty($name)) $name = 'Zahlungsempf.';

            $transfer->addCreditor(new SEPACreditor([
                'info' => substr($directCredit->subject, 0, 140),
                'name' => $name,
                'iban' => $directCredit->bank_partner->getIBAN(),
                'bic' => $directCredit->bank_partner->bic,
                'amount' => $directCredit->amount,
                'currency' => 'EUR',
                'reqestedExecutionDate' => $directCredit->due_date,
            ]));
            $directCredit->save();
        }

        $sendSEPATransfer = \Fhp\Action\SendSEPATransfer::create($this->account, $transfer->toXML());

        if ($sendSEPATransfer->needsTan()) {
            return $this->handleStrongAuthentication($sendSEPATransfer);
        }

        $this->fints->execute($sendSEPATransfer);
        try {
        } catch (\Throwable $exception) {
            return $this->handleException($exception->getMessage());
        }

        if ($sendSEPATransfer->needsTan()) {
            return $this->handleStrongAuthentication($sendSEPATransfer);
        }
@ampaze
Copy link
Contributor

ampaze commented Jul 16, 2024

Soweit ich weiß sind das alles verschiedene Geschäftsvorfälle

  • SEPA-Sammelüberweisungen (Segment HKCCM)
  • Terminierte SEPA-Überweisung (Segment HKCSE)
  • Terminierte SEPA-Sammelüberweisung (Segment HKCME)

phpFinTs unterstützt bislang lediglich SEPA Einzelüberweisung (Segment HKCCS).

@seem2810
Copy link
Contributor Author

Danke!
Das würde natürlich einiges erklären.

Also muss ich irgendwie HKCME implementieren?
Da versuche ich mich mal dran sonst.

@ampaze
Copy link
Contributor

ampaze commented Jul 16, 2024

Also muss ich irgendwie HKCME implementieren?

Ja. Das sollte hauptsächlich aus Copy & Paste bestehen. DEVELOPER-GUIDE.md ist eine gute erste Lektüre dafür.

SEPATransfer könnte/sollte auch je nach XML-Inhalt das jeweils richtige Segment auswählen.

@seem2810
Copy link
Contributor Author

SEPATransfer könnte/sollte auch je nach XML-Inhalt das jeweils richtige Segment auswählen.

Muss ich ggf. nur in meiner XML-Generierung oben etwas ändern?
Ich nutze ja pain.001.001.03

Mein Request, versucht mit 001.001.03 sowie 001.001.09

hp\Protocol\ServerException {#3848 ▼ // packages/ds.bank/src/Connectors/HBCI.php:600
  #message: """
    FinTS errors:

    9050 (global): Die Nachricht enthält Fehler.

    9010 (wrt seg 3): Fehler beim Aufruf Parser.

    FinTS warnings:

    3905 (global): Es wurde keine Challenge erzeugt.

    Request segments:

    
HKCCS:3:1+DE43403510600074856311:WELADED1STF:74856311::280:40351060+urn?:iso?:std?:iso?:20022?:tech?:xsd?:pain.001.001.09+@2927@<?xml version="1.0" encoding="UT
 ▶

    
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022
 ▶

      <CstmrCdtTrfInitn>

        <GrpHdr>

          <MsgId>dce-2</MsgId>

          <CreDtTm>2024-07-16T17:20:10Z</CreDtTm>

          <NbOfTxs>2</NbOfTxs>

          <CtrlSum>6.00</CtrlSum>

          <InitgPty>

            <Nm>test GmbH - Testinstanz</Nm>

          </InitgPty>

        </GrpHdr>

        <PmtInf>

          <PmtInfId>dce-2-3</PmtInfId>

          <PmtMtd>TRF</PmtMtd>

          <NbOfTxs>1</NbOfTxs>

          <CtrlSum>5.00</CtrlSum>

          <PmtTpInf>

            <SvcLvl>

              <Cd>SEPA</Cd>

            </SvcLvl>

          </PmtTpInf>

          <ReqdExctnDt>2024-07-17</ReqdExctnDt>

          <Dbtr>

            <Nm>test GmbH - Testinstanz</Nm>

          </Dbtr>

          <DbtrAcct>

            <Id>

              <IBAN>XXXX</IBAN>

            </Id>

            <Ccy>EUR</Ccy>

          </DbtrAcct>

          <DbtrAgt>

            <FinInstnId>

              <BIC>XXXX</BIC>

            </FinInstnId>

          </DbtrAgt>

          <ChrgBr>SLEV</ChrgBr>

          <CdtTrfTxInf>

            <PmtId>

              <EndToEndId>dce-2-30</EndToEndId>

            </PmtId>

            <Amt>

              <InstdAmt Ccy="EUR">5.00</InstdAmt>

            </Amt>

            <CdtrAgt>

              <FinInstnId>

                <BIC>XXXX</BIC>

              </FinInstnId>

            </CdtrAgt>

            <Cdtr>

              <Nm>XXX XXXXX</Nm>

            </Cdtr>

            <CdtrAcct>

              <Id>

                <IBAN>XXX</IBAN>

              </Id>

            </CdtrAcct>

            <RmtInf>

              <Ustrd>Test per KSK</Ustrd>

            </RmtInf>

          </CdtTrfTxInf>

        </PmtInf>

        <PmtInf>

          <PmtInfId>dce-2-5</PmtInfId>

          <PmtMtd>TRF</PmtMtd>

          <NbOfTxs>1</NbOfTxs>

          <CtrlSum>1.00</CtrlSum>

          <PmtTpInf>

            <SvcLvl>

              <Cd>SEPA</Cd>

            </SvcLvl>

          </PmtTpInf>

          <ReqdExctnDt>2024-07-15</ReqdExctnDt>

          <Dbtr>

            <Nm>test GmbH - Testinstanz</Nm>

          </Dbtr>

          <DbtrAcct>

            <Id>

              <IBAN>XXX</IBAN>

            </Id>

            <Ccy>EUR</Ccy>

          </DbtrAcct>

          <DbtrAgt>

            <FinInstnId>

              <BIC>XXX</BIC>

            </FinInstnId>

          </DbtrAgt>

          <ChrgBr>SLEV</ChrgBr>

          <CdtTrfTxInf>

            <PmtId>

              <EndToEndId>dce-2-50</EndToEndId>

            </PmtId>

            <Amt>

              <InstdAmt Ccy="EUR">1.00</InstdAmt>

            </Amt>

            <CdtrAgt>

              <FinInstnId>

                <BIC>XXX</BIC>

              </FinInstnId>

            </CdtrAgt>

            <Cdtr>

              <Nm>XXX XXX</Nm>

            </Cdtr>

            <CdtrAcct>

              <Id>

                <IBAN>XXX</IBAN>

              </Id>

            </CdtrAcct>

            <RmtInf>

              <Ustrd>Test 2 KSK</Ustrd>

            </RmtInf>

          </CdtTrfTxInf>

        </PmtInf>

      </CstmrCdtTrfInitn>

    </Document>

    '
    """
  #code: 0
  #file: "vendor
/nemiah/php-fints/
lib/Fhp/Protocol/ServerException.php"
  #line: 170
  -errors: array:2 [▶]
  -warnings: array:1 [▶]
  -requestSegments: array:1 [▶]
  -request: 

@ampaze
Copy link
Contributor

ampaze commented Jul 16, 2024

Muss ich ggf. nur in meiner XML-Generierung oben etwas ändern?

Nein, das XML ist ja nur der Payload für einen bestimmten Geschäftsvorfall. Aber man kann in das XML gucken ob ein Termin angegeben ist oder mehrere Überweisungen enthalten sind. Abhängig davon würde dann der richtige Geschäftsvorfall an die Bank geschickt. Alternativ bräuchte man ja sonst für jeden Geschäftsvorfall eine eigene SendSEPATransfer-Action.

@seem2810
Copy link
Contributor Author

Ok, so ganz habe ich es noch nicht verstanden und es funktioniert noch nicht...
Da muss ich noch mal viel testen.

@seem2810
Copy link
Contributor Author

Habe das ganze mal gepusht.
Bin weiter vorgedrungen :-)
#447

Nun jemand eine Idee?

    FinTS errors:

    9050 (global): Die Nachricht enthält Fehler.

    9110 (wrt seg 3): Ungültige Auftragsnachricht: Unbekannter Aufbau. (wrt DE 3,2)

    9160 (wrt seg 3): Pflichtfeld nicht gefunden (wrt DE 3,2)

    9010 (wrt seg 4): Segment wegen anderer Fehler wirkungslos

    Request segments:

    
HKCME:3:1+DE43403510600074856311:WELADED1STF:74856311::280:40351060+urn?:iso?:std?:iso?:20022?:tech?:xsd?:pain.001.001.09+@2927@<?xml version="1.0" encoding="UT
 ▶

    
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:iso:std:iso:20022
 

@ampaze
Copy link
Contributor

ampaze commented Jul 19, 2024

Habe im Pull Request geantwortet.

@seem2810 seem2810 closed this as completed Aug 7, 2024
@seem2810 seem2810 reopened this Aug 7, 2024
@seem2810
Copy link
Contributor Author

seem2810 commented Aug 7, 2024

Ok, ich muss es doch wieder öffnen...
Bei der Bank kommt die Anfrage zwar richtig an, doch erhalte ich nach Freigabe:

9050 (global): Die Nachricht enthält Fehler.
9010 (wrt seg 3): Der Auftrag wurde nicht ausgeführt.
9010 (wrt seg 3): Systemfehler - bitte wenden Sie sich an Ihren Kundenberater. (MDC17700200002)
Request segments:
HKTAN:3:7+S++++6153-08-07-19.12.56.700284+N'
HKTAN:3:7+S++++6153-08-07-19.12.56.700284+N' at bank/src/Connectors/HBCI.php:315)

Update:
nemiah/phpSepaXml#6 (comment)
Durch die Änderung (Rückwerts) wird das Payment Date nicht gesetzt und er springt, statt in Termin. Sammepl in Sammel.
Und hier war mir ein Fehler beim Segment aufgefallen:
Statt "HICCMS" stand dort "HICSES"

Fix hier: #450

Dennoch erhalte ich den gleichen Fehler.

@ampaze
Copy link
Contributor

ampaze commented Aug 12, 2024

Was sagt denn der Kundenberater? Ohne konkrete Fehlermeldung schwierig was zu sagen. Systemfehler klingt ja nach Fehler bei der Bank und nicht beim Client.

@seem2810
Copy link
Contributor Author

Was sagt denn der Kundenberater? Ohne konkrete Fehlermeldung schwierig was zu sagen. Systemfehler klingt ja nach Fehler bei der Bank und nicht beim Client.

Manchmal sieht man den Baum vor lauter Bäumen nicht...
Abgelehnt, da 2 x die gleiche Überweisung in der Datei..

Dennoch gehen die Terminüberweisungen (noch) nicht, da die XML nicht geht: nemiah/phpSepaXml#6 (comment)

@seem2810
Copy link
Contributor Author

Ok, ich sehe wieder mal das Problem nicht..

9210 (wrt seg 3): Summe der Beträge der Einzelzahlung und Kontrollsumme stimmen nicht überein. [694.73]

Ich dachte erst, dass es daran liegt, dass ich das $summenfeld nicht gesetzt habe. Aber damit geht es auch nicht...
https://github.com/seem2810/phpFinTS/blob/master/lib/Fhp/Action/SendSEPATransfer.php#L67

Jemand noch eine Idee?

@seem2810 seem2810 reopened this Aug 22, 2024
@ampaze
Copy link
Contributor

ampaze commented Aug 23, 2024

Würde auch denken, dass es am $summenfeld liegt. Kann mir an der Stelle auch Rundungsfehler vorstellen. Die Summe sollte doch eigentlich via $xmlAsObject->CstmrCdtTrfInitn->GrpHdr->CtrlSum schon vorhanden sein.

@seem2810
Copy link
Contributor Author

seem2810 commented Aug 26, 2024

Würde auch denken, dass es am $summenfeld liegt. Kann mir an der Stelle auch Rundungsfehler vorstellen. Die Summe sollte doch eigentlich via $xmlAsObject->CstmrCdtTrfInitn->GrpHdr->CtrlSum schon vorhanden sein.

Das hatte ich auch schon ausprobiert. Ohne Erfolg...

Edit: Rundungsfehler habe ich auch schon ausschließen können

@seem2810
Copy link
Contributor Author

seem2810 commented Sep 2, 2024

Niemand eine Idee?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants