Hallo,
ich möchte mit HBCI4JAVA eine SEPA SammelLastschrift erzeugen und zur Bank schicken.
Die SammelLastschrift wurde im letzten Jahr erstmalig erzeugt und vor einem halben Jahr wiederholt ausgeführt, beide via JVerein & Hibiscus.
Da JVerein nicht mehr ausreicht, möchte ich nun eine eigene Software zum Einsatz bringen und das Thema Beitragseinzug dabei via HBCI4JAVA implementieren. Ich habe daher sowas hier gemacht (SammelLastschrift ist dabei mein eigenes Bean mit allen notwendigen Daten und ggf. HBCI4JAVA Datentypen wie z.B. 'Konto'))
HBCIJob job = hbcihandler.newJob("MultiLastSEPA");
job.setParam("src", sammelLastschrift.getEmpfaengerKonto());
job.setParam("usage",sammelLastschrift.getVerwendungszweck());
job.setParam("targetdate", sammelLastschrift.getAusfuehrungsDatum());
job.setParam("creditorid", sammelLastschrift.getGlaeubigerId());
job.setParam("sequencetype", sammelLastschrift.getSeuqnceType());
int i = 0;
for (BeitragseinzugEntry entry: sammelLastschrift.getQuellKonten()) {
job.setParam("dst.bic", i, entry.getBic());
job.setParam("dst.iban", i, entry.getIban());
job.setParam("dst.name", i, entry.getKontoinhaber());
job.setParam("btg", i,new Value(String.valueOf(entry.getAmount()),"EUR"));
job.setParam("mandateid", i, entry.getMandatId());
job.setParam("manddateofsig", i, entry.getDateOfMandatSignature());
i++;
}
Ich hoffe erstmal, das ist soweit richtig.
Generiert wird dann vom SEPAGenerator flg. pain xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.003.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.003.02 pain.008.003.02.xsd">
<CstmrDrctDbtInitn>
<GrpHdr>
<MsgId>2015-08-27T11:04:27:0213</MsgId>
<CreDtTm>2015-08-27T11:04:27</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>0.01</CtrlSum>
<InitgPty>
<Nm>XXXXXXXXXXXXXX</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>2015-08-27T11:04:27:0213</PmtInfId>
<PmtMtd>DD</PmtMtd>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>0.01</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
<LclInstrm>
<Cd>CORE</Cd>
</LclInstrm>
<SeqTp>RCUR</SeqTp>
</PmtTpInf>
<ReqdColltnDt>2015-09-03</ReqdColltnDt>
<Cdtr>
<Nm>XXXXXXXXXXXXXX</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>XXXXXXXXXXXXXXXXXXXXXX</IBAN>
</Id>
</CdtrAcct>
<CdtrAgt>
<FinInstnId>
<BIC>GENODEF1RIE</BIC>
</FinInstnId>
</CdtrAgt>
<ChrgBr>SLEV</ChrgBr>
<DrctDbtTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<InstdAmt Ccy="EUR">0.01</InstdAmt>
<DrctDbtTx>
<MndtRltdInf>
<MndtId>XXXX</MndtId>
<DtOfSgntr>2011-06-29</DtOfSgntr>
<AmdmntInd>false</AmdmntInd>
</MndtRltdInf>
<CdtrSchmeId>
<Id>
<PrvtId>
<Othr>
<SchmeNm>
<Prtry>SEPA</Prtry>
</SchmeNm>
</Othr>
</PrvtId>
</Id>
</CdtrSchmeId>
</DrctDbtTx>
<DbtrAgt>
<FinInstnId>
<BIC>GENODEF1EIL</BIC>
</FinInstnId>
</DbtrAgt>
<Dbtr>
<Nm>XXXXXXXXXXXX</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>XXXXXXXXXXXXXXXXXXXXXX</IBAN>
</Id>
</DbtrAcct>
</DrctDbtTxInf>
</PmtInf>
</CstmrDrctDbtInitn>
</Document>
Von der Bank kommt aber immer folgender Fehler:
Dialog for '407720183':
DIALOG-INITIALISIERUNG:
3060:Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
3920:Zugelassene TAN-Verfahren für den Benutzer p:962 p:972 (4: DialogInit.ProcPrep)
0901:*PIN gültig. (4: DialogInit.ProcPrep)
0020:*Dialoginitialisierung erfolgreich (4: DialogInit.ProcPrep)
DIALOG-NACHRICHT #1:
9050:Die Nachricht enthält Fehler.
9010:Das gesendete SEPA-Dokument ist nicht valide. (4: CustomMsg.GV_2.TAN2Step5)
DIALOG-NACHRICHT #2:
9050:Die Nachricht enthält Fehler.
9110:Ungültige Auftragsnachricht: Unbekannter Aufbau. (2:6: CustomMsg.SigHead.role=1)
DIALOG-ENDE:
0010:Nachricht entgegengenommen.
0100:Dialog beendet.
Ich hoffe, die Mandat-IDs habe ich richtig angegeben, da ich hier im Forum gelesen habe, dass 'Ungültige Auftragsnachricht: Unbekannter Aufbau' mgl. darauf hindeutet. Was könnte ich sonst noch ändern, um die SEPA Sammellastschrift erfolgreich ausführen zu lassen, bin über jeden Hinweis dankbar.
Vielen Dank im Voraus
Gruß:Dominik
ich möchte mit HBCI4JAVA eine SEPA SammelLastschrift erzeugen und zur Bank schicken.
Die SammelLastschrift wurde im letzten Jahr erstmalig erzeugt und vor einem halben Jahr wiederholt ausgeführt, beide via JVerein & Hibiscus.
Da JVerein nicht mehr ausreicht, möchte ich nun eine eigene Software zum Einsatz bringen und das Thema Beitragseinzug dabei via HBCI4JAVA implementieren. Ich habe daher sowas hier gemacht (SammelLastschrift ist dabei mein eigenes Bean mit allen notwendigen Daten und ggf. HBCI4JAVA Datentypen wie z.B. 'Konto'))
Code
HBCIJob job = hbcihandler.newJob("MultiLastSEPA");
job.setParam("src", sammelLastschrift.getEmpfaengerKonto());
job.setParam("usage",sammelLastschrift.getVerwendungszweck());
job.setParam("targetdate", sammelLastschrift.getAusfuehrungsDatum());
job.setParam("creditorid", sammelLastschrift.getGlaeubigerId());
job.setParam("sequencetype", sammelLastschrift.getSeuqnceType());
int i = 0;
for (BeitragseinzugEntry entry: sammelLastschrift.getQuellKonten()) {
job.setParam("dst.bic", i, entry.getBic());
job.setParam("dst.iban", i, entry.getIban());
job.setParam("dst.name", i, entry.getKontoinhaber());
job.setParam("btg", i,new Value(String.valueOf(entry.getAmount()),"EUR"));
job.setParam("mandateid", i, entry.getMandatId());
job.setParam("manddateofsig", i, entry.getDateOfMandatSignature());
i++;
}
Ich hoffe erstmal, das ist soweit richtig.
Generiert wird dann vom SEPAGenerator flg. pain xml:
Code
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.008.003.02" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:iso:std:iso:20022:tech:xsd:pain.008.003.02 pain.008.003.02.xsd">
<CstmrDrctDbtInitn>
<GrpHdr>
<MsgId>2015-08-27T11:04:27:0213</MsgId>
<CreDtTm>2015-08-27T11:04:27</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>0.01</CtrlSum>
<InitgPty>
<Nm>XXXXXXXXXXXXXX</Nm>
</InitgPty>
</GrpHdr>
<PmtInf>
<PmtInfId>2015-08-27T11:04:27:0213</PmtInfId>
<PmtMtd>DD</PmtMtd>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>0.01</CtrlSum>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd>
</SvcLvl>
<LclInstrm>
<Cd>CORE</Cd>
</LclInstrm>
<SeqTp>RCUR</SeqTp>
</PmtTpInf>
<ReqdColltnDt>2015-09-03</ReqdColltnDt>
<Cdtr>
<Nm>XXXXXXXXXXXXXX</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<IBAN>XXXXXXXXXXXXXXXXXXXXXX</IBAN>
</Id>
</CdtrAcct>
<CdtrAgt>
<FinInstnId>
<BIC>GENODEF1RIE</BIC>
</FinInstnId>
</CdtrAgt>
<ChrgBr>SLEV</ChrgBr>
<DrctDbtTxInf>
<PmtId>
<EndToEndId>NOTPROVIDED</EndToEndId>
</PmtId>
<InstdAmt Ccy="EUR">0.01</InstdAmt>
<DrctDbtTx>
<MndtRltdInf>
<MndtId>XXXX</MndtId>
<DtOfSgntr>2011-06-29</DtOfSgntr>
<AmdmntInd>false</AmdmntInd>
</MndtRltdInf>
<CdtrSchmeId>
<Id>
<PrvtId>
<Othr>
<SchmeNm>
<Prtry>SEPA</Prtry>
</SchmeNm>
</Othr>
</PrvtId>
</Id>
</CdtrSchmeId>
</DrctDbtTx>
<DbtrAgt>
<FinInstnId>
<BIC>GENODEF1EIL</BIC>
</FinInstnId>
</DbtrAgt>
<Dbtr>
<Nm>XXXXXXXXXXXX</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<IBAN>XXXXXXXXXXXXXXXXXXXXXX</IBAN>
</Id>
</DbtrAcct>
</DrctDbtTxInf>
</PmtInf>
</CstmrDrctDbtInitn>
</Document>
Von der Bank kommt aber immer folgender Fehler:
Dialog for '407720183':
DIALOG-INITIALISIERUNG:
3060:Bitte beachten Sie die enthaltenen Warnungen/Hinweise.
3920:Zugelassene TAN-Verfahren für den Benutzer p:962 p:972 (4: DialogInit.ProcPrep)
0901:*PIN gültig. (4: DialogInit.ProcPrep)
0020:*Dialoginitialisierung erfolgreich (4: DialogInit.ProcPrep)
DIALOG-NACHRICHT #1:
9050:Die Nachricht enthält Fehler.
9010:Das gesendete SEPA-Dokument ist nicht valide. (4: CustomMsg.GV_2.TAN2Step5)
DIALOG-NACHRICHT #2:
9050:Die Nachricht enthält Fehler.
9110:Ungültige Auftragsnachricht: Unbekannter Aufbau. (2:6: CustomMsg.SigHead.role=1)
DIALOG-ENDE:
0010:Nachricht entgegengenommen.
0100:Dialog beendet.
Ich hoffe, die Mandat-IDs habe ich richtig angegeben, da ich hier im Forum gelesen habe, dass 'Ungültige Auftragsnachricht: Unbekannter Aufbau' mgl. darauf hindeutet. Was könnte ich sonst noch ändern, um die SEPA Sammellastschrift erfolgreich ausführen zu lassen, bin über jeden Hinweis dankbar.
Vielen Dank im Voraus
Gruß:Dominik